ubuntu16.04 安装Tensorflow(GTX980Ti+CUDA8.0+CUDNNv6.0)

news/2025/2/25 4:07:36

如果安装过程遇到问题,可直接跳转到问题汇总查看

1.我的电脑安装环境:

双系统:win10+Ubuntu16.04(在Ubuntu下配置)
CPU:E5-1660 v4
GPU:GTX-980Ti

gpu版tensorflow的官方要求">2.安装GPU版Tensorflow的官方要求

Tensorflow官方的安装要求在如下链接中可以看到:
https://www.tensorflow.org/install/install_linux

这里写图片描述

运行GPU版本的Tensorflow所需要的NVIDIA要求:

  • 需要CUDA8.0版本 配置了LD_LIBRARY_PATH/CUDA_HOME 环境变量
  • 需要CUDA8.0版本
  • 需要cuDNNv6.0版本
  • GPU计算能力要达到3.0以上(GPU计算能力一览表)
  • 执行sudo apt-get install libcupti-dev安装libcupti-dev相关依赖

根据官方要求,我们安装Tensorflow所需要做的事情如下:

  • 确认GPU型号和性能,安装显卡驱动(无需最新)
  • 安装libcupti-dev相关依赖
  • 安装CUDA
  • 安装cuDNN
  • 安装Anaconda(官方给出了4种安装方式,这里我们选择Anaconda,主要目的是为了利用pyenv方便管理,pyenv的安装和使用可以参见这里)
  • 安装TensorFlow-GPU
  • 运行一个Tensorflow版的HelloWorld程序

3.开始安装

gpu型号和性能安装显卡驱动">一、确认GPU型号和性能,安装显卡驱动

首先在确认你的GPU型号,可以在这里进行查询,也可以在Windows上借助第三方软件查询,然后在GPU性能一览表中确认你的GPU计算能力大于3,借着,在Ubuntu上安装对应版本的显卡驱动,由于我们使用的是CUDA8.0,所以强烈建议你安装375-26或者375-66,不建议安装最新版本的驱动,这样可能会有一些兼容性问题产生(我就遇到了,然后从384版本换回375版本了)。驱动安装教程可以查看这篇文章。(这篇文章里安装的是384,但我还是建议安装375,对应CUDA8.0)

二、安装libcupti-dev相关依赖

执行下面的指令安装libcupti-dev相关依赖

sudo apt-get install libcupti-dev

cuda">三、安装配置CUDA

CUDA的安装方式有多种,这里选择run方案(这种较省事)
点击这里的下载链接,进入NVIDIA官网下载界面,根据系统下载cuda

注意:依据Tensorflow的官方历程要求,我们选择安装CUDA-8.0,因为现在官方还没有正式支持CUDA-9.0,但是也不是说完全不能使用9.0,只是在使用过程中会遇到一些找不到目标文件的错误(在问题汇总会提到),所以这里还是强烈推荐使用CUDA8.0(配合显卡375驱动)

我们根据自身系统的信息,逐步选择即可,然后点击页面上的Download{1.4GB}。
这里写图片描述

下载完成以后,我们利用cd命令,进入到cuda_8.0.61_375.26_linux.run文件所在的目录中,然后运行下面的指令,进行安装(注意这个文件名,前面的cuda_8.0.61代表cuda的版本,后面的375.26代表的对应的NVIDIA驱动的版本)

#先执行下面的命令安装相关依赖,
#否则会出现`Missing recommended library`错误
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 


sudo sh cuda_8.0.61_375.26_linux.run #开始安装

#..一堆协议说明...
#直接按q退出协议说明.
zerozone@zerozone: accept/decline/quit: accept  #接受协议

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26? 
y)es/(n)o/(q)uit: n  #是否显卡驱动包,由于已经安装显卡驱动,选择n

Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y #是否安装工具包,选择y

Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]: #工具包安装地址,默认回车即可

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y #添加链接

Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y #安装样例

Enter CUDA Samples Location
 [ default is /root ]:  #样例安装地址默认即可

# ***安装信息***
Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...

Missing recommended library: libXi.so
Missing recommended library: libXmu.so
#注意,这里出现了Missing recommended library错误,
#是因为博主在第一次安装时,没有添加最开始的那条安装相关依赖的指令,
#之后我添加了依赖后,再次安装,就没有Missing错误了

Installing the CUDA Samples in /root ...
Copying samples to /root/NVIDIA_CUDA-8.0_Samples now...
Finished copying samples.

===========
= Summary =
===========
Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-8.0
Samples:  Installed in /root, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-8.0/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.

To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:

    sudo <CudaInstaller>.run -silent -driver

Logfile is /tmp/cuda_install_6388.log   
# ***安装完成***

配置CUDA相关环境变量
修改~/.bashrc文件 在文件末尾添加环境变量
Tensorflow官方安装历程要求注意的是:配置PATH和LD_LIBRARY_PATH和CUDA_HOME环境变量.

vim ~/.bashrc #修改配置文件(如果你用的是zsh,则需要修改 ~/.zshrc文件)

#在文件结尾处添加
export PATH="/usr/local/cuda-8.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"
export CUDA_HOME="/usr/local/cuda-8.0:$CUDA_HOME

结果如图所示:
这里写图片描述

测试CUDA样例
安装完成后,可以利用cuda样例来测试是否安装成功

#进入样例工程文件夹
zerozone@zerozone:/usr# cd /root/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery/

zerozone@zerozone:~/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery# ls
deviceQuery.cpp  Makefile  NsightEclipse.xml  readme.txt

#make编译工程
zerozone@zerozone:~/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery# make

"/usr/local/cuda-8.0"/bin/nvcc -ccbin g++ -I../../common/inc  -m64    -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_60,code=compute_60 -o deviceQuery.o -c deviceQuery.cpp

nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).

"/usr/local/cuda-8.0"/bin/nvcc -ccbin g++   -m64      -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_60,code=compute_60 -o deviceQuery deviceQuery.o 

nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).

mkdir -p ../../bin/x86_64/linux/release

cp deviceQuery ../../bin/x86_64/linux/release

#查看生成的可执行文件
zerozone@zerozone:~/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery# ls
deviceQuery      deviceQuery.o  NsightEclipse.xml
deviceQuery.cpp  Makefile       readme.txt

#执行
zerozone@zerozone:~/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery# ./deviceQuery 

#输出如下表示可用
./deviceQuery Starting...
 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 1080"
#注意这里CUDA的Driver和Runtime的版本都是8.0,
#如果我们之前安装的显卡驱动是384的话,那么这里的Driver版本就会变成9.0
#我之前就是9.0/8.0,后面觉得不妥就重新安装了375的驱动
  CUDA Driver Version / Runtime Version          8.0 / 8.0
  CUDA Capability Major/Minor version number:    6.1
  Total amount of global memory:                 8111 MBytes (8504868864 bytes)
  (20) Multiprocessors, (128) CUDA Cores/MP:     2560 CUDA Cores
  GPU Max Clock rate:                            1873 MHz (1.87 GHz)
  Memory Clock rate:                             5005 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 2097152 bytes

  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0

  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX 1080

Result = PASS

cudnn">四、安装cuDNN

下载cuDNN(必须注册NVIDIA开发者帐号,并填写问卷才能下载),可以点击这个页面直接注册并下载。(依据Tensorflow的官方安装历程要求cudnn-v6.0)

这里写图片描述

这里选择第三个进行下载:cuDNN v6.0 Library for Linux
安装cuDNN
下载完成后,进入所在目录,找到cudnn-8.0-linux-x64-v5.1.tgz文件

tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz #解压
uda/include/cudnn.h
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.5
cuda/lib64/libcudnn.so.5.1.10
cuda/lib64/libcudnn_static.a
#添加cudnn到cudn库
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
#修改添加到cuda库的cudnn权限
sudo chmod a+r /usr/local/cuda/include/cudnn.h 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

五、安装Anaconda

具体安装教程,可以查看这篇博文

这里有一个更简单方便,也更容易管理的方法,就是在上面的连接中下载好Anaconda3-5.0.1-Linux-x86_64.sh文件后,将文件拷贝到.pyenv/cache路径下(如果是第一次利用pyenv安装,需要新建cache文件夹)。然后直接在命令行中运行下面的指令:(前提是已经安装了pyenv,安装教程在这里)

pyenv install Anaconda3-5.0.1

这个方法最好的地方就在于,可以同时安装多个版本的python和Anaconda,并且互相之间并不影响,利用此方法安装Anaconda后,只需建立相应的虚拟环境,就可以安装Tensorflow了(我采用的就是这个方法)

tensorflow-gpu">六、安装TensorFlow-GPU

官方建议有四种安装方式:

  • virtualenv
  • “native” pip
  • Docker
  • Anaconda
    这里我们选择第四种,因为Anaconda集成了大量工具包,对以后的程序开发很方便。

这里写图片描述

安装步骤:
首先,创建名为tensorflow的conda环境

如果你直接使用Anaconda

 conda create -n tensorflow #创建tensorflow环境空间
 source activate tensorflow #激活conda tensorflow
 (tensorflow)$  # 此时用户名前多了一个(tensorflow),表示已激活命名环境
 ...
 source deactivate #该指令用于关闭环境

如果你利用pyenv安装了Anaconda

pyenv virtualenv anaconda3-5.0.1 tensorflow
pyenv activate tensorflow 
(tensorflow)$  # 此时用户名前多了一个(tensorflow),表示已激活命名环境
...
pyenv deactivate #该指令用于关闭环境

而后,依据本机配置选择合适的TensorFlow版本
TensorFlow官方给的安装包的url在这里
但是这里有一点需要特别注意,不然就安装成错误的版本,导致无法导入tensorflow
拿python3.5的gpu-Tensorrflow的url做例子:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.5.0-cp35-cp35m-linux_x86_64.whl
可以看到,这里的gpu-Tensorflow的版本是1.5.0,而1.5.0对应的CUDA和cuDNN的版本如下所示。
这里写图片描述
tensorflow_gpu-1.5.0对应的cuDNN和CUDA版本分别为cuDNN7和CUDA9
所以我们不能直接复制上面的url进行安装,需要作出一些改动,很简单,只需要把官方提供的url中的1.5.0改成1.4.0即可,操作如图所示
这里写图片描述

(tensorflow) $ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.4.0-cp35-cp35m-linux_x86_64.whl  

等待下载完成后

  • 进入/root/anaconda2/bin,运行该目录下的python(如果你使用的是pyenv创建的环境,则直接运行python即可,无需进入指定路径)
  • 导入tensorflow包,导入正常表示环境配置成功
  • 编写其他代码,写出自己的Hello World!
    这里写图片描述
$ python
Python 3.5.4 |Anaconda, Inc.| (default, Nov 20 2017, 18:44:38) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('hello,tensorflow!')
>>> sess=tf.Session()
...
>>> print(sess.run(hello))
b'hello,tensorflow!'

两点说明:

  • 不推荐使用python3.6,这是因为tensorflow官方提供的3.6版本的tensorflow-gpu好像自身有一点bug,导致安装完成后import tensorflow时会出现如下错误:

    RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6 return f(*args, **kwds)

    目前Anaconda3默认的python版本是3.6.4,可以使用
    conda create --name test_py3 python=3.5创建一个基于python3.5的环境

  • 如果你想安装tensorflow_gpu-1.5.0+CUDA9.0+cuDNNv7.0,可以参见其他教程,但是过新的版本出现问题的概率较大,网上对新版本的问题讨论也较少,不利于新手学习

4.问题汇总

安装tensorflow-gpu的过程遇到很多很多坑,写这篇博文主要目的也是为了记录一下自己遇到的问题和解决方案,以方便后期回顾,以下就是遇到的问题和对应解决方案

cuda9时运行import-tensorflow-as-tf出现错误importerror-libcublasso80-cannot-open-shared-object-file-no-such-file-or-directory">问题一:当使用cuda9时,运行import tensorflow as tf,出现错误:ImportError: libcublas.so.8.0: cannot open shared object file: No such file or directory

解决方法:
在网上查了很久,发现很多人都遇到了这个问题,但是都不知道怎么解决,最后,在NVIDIA的官网看到了答复,大意是指目前,Tensorflow-GPU的二进制可安装版本需要CUDA 8才可以,如果你真的想使用CUDA 9 / CUDNN 7,你需要从源代码构建TF(tensorflow)。 否则,必须安装CUDA 8并指向TF。当然,你可以同时安装CUDA 8可以与CUDA 9,并且不需要修改驱动程序; CUDA 9 GPU驱动程序将与CUDA 8配合使用。
这里写图片描述
参考来源:
https://github.com/tensorflow/tensorflow/issues/14622

https://stackoverflow.com/questions/44865253/libcublas-so-8-0-error-with-tensorflow

https://devtalk.nvidia.com/default/topic/1026198/cuda-9-0-importerror-libcublas-so-8-0/

cudnn下载页面维护">问题二:cuDNN下载页面维护

如果你没有从我上面提供的链接进入到下载页面,那么你有可能遇到下载页面处于维护状态的情况:
这里写图片描述

解决方法是访问下面的地址进行下载(需要注册)
https://developer.nvidia.com/rdp/cudnn-download#a-collapseTwo
https://developer.nvidia.com/rdp/cudnn-download

cuda的driver和runtime版本不一致">问题三:cuda的driver和runtime版本不一致

一般表现为driver版本高于runtime,这主要是因为安装了高过版本的NVIDIA驱动导致的,解决方案是查看cuda安装包的文件名,获取对应NVIDIA驱动的版本,并进行安装(并没有直接证据表明二者版本不一致会引发问题,这里只是提供一种可能性,如果你此时实在想不到哪里有问题的话,可以考虑重新安装驱动,使版本一致)

cuda的driver和runtime版本最好都要为8.0(版本查看方法参见上文中的cuda样例)

如果你在安装CUDA的过程中遇到了下面的问题

Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...
...
Missing recommended library: libXi.so
Missing recommended library: libXmu.so

解决方案:安装相关依赖库
原因是缺少相关的依赖库,安装相应库就解决了:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 

tensorflow-as-tf时返回runtimewarning-compiletime-version-35-of-module-tensorflowpythonframeworkfasttensorutil-does-not-match-runtime-version-36-return-fargs-kwds">问题五:在import tensorflow as tf时返回RuntimeWarning: compiletime version 3.5 of module ‘tensorflow.python.framework.fast_tensor_util’ does not match runtime version 3.6 return f(*args, **kwds)

查阅了很多网站,貌似这是tensorflow自身的一个bug
解决方案(我采取的):降低python版本到3.5,重新安装对应python3.5的tensorflow

cuda80但是在import-tensorflow-as-tf时却返回importerror-libcublasso90-cannot-open-shared-object-file-no-such-file-or-directory">问题六:使用的明明是CUDA8.0,但是在import tensorflow as tf时却返回ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory)

这主要是因为错误的安装了tensorflow的版本导致的,从下面的版本对应图中可以看到,如果使用CUDA8.0+cuDNNv6.0的话,应该安装1.4.0版本的tensorflow(官方默认提供1.5.0)
这里写图片描述
解决方案:
查看tensorflow版本对应的cudacudnn的版本(我下载的1-5-0,对应的是9和7,所以才出现了ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory)
找到想要安装的版本后,只需要将官方提供的默认url中的版本号改成你想安装的版本号即可。
例如,我想要1.4.0版本的,只需要做如下更改:
官方提供的:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.5.0-cp35-cp35m-linux_x86_64.whl
我更改后的:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.4.0-cp35-cp35m-linux_x86_64.whl

文章来源:https://blog.csdn.net/ksws0292756/article/details/79179286
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/1016646.html

相关文章

浮点数 格式 讲解

数值数据在机内的表示 在选择计算机的数值数的表示方式时&#xff0c;需要考虑以下几个因素&#xff1a;(1)要表示的数的类型(小数、整数、实数和复数)&#xff1b;(2)可能遇到的数值范围&#xff1b;(3)数值精确度&#xff1b;(4)数据存储和处理所需要的硬件代价。 2.1.1.1 定…

python中导入pillow时显示没有名为“pillow”的模块(import pillow: No module named 'pillow')

如果你安装了pillow&#xff0c;但是在导入时却遇到了下面的问题 这是因为&#xff0c;pillow是PIL&#xff08;Python成像库&#xff09;的一个分支&#xff0c;它不再被维护。所以&#xff0c;为了保持向后兼容性&#xff0c;往往使用旧的模块名称——PIL。 为了导入pill…

编译原理 first集 follow集 实例 解析

编译原理只看书的话还是很难学&#xff0c;上课听老师讲的蛮好,可忘得也很快&#xff0c;再复习看书的时候已然忘记老师当时是怎么讲的了QAQ... 现在只能在网上找教程自学一下喽&#xff1a;先看看为什么要有first集和follow集&#xff1a;这个很简单了&#xff0c;x是终结符&a…

Anaconda找包,安装包时,遇到PackageNotFoundError: ''Package missing in current channels

Anaconda作为一个工具包集成管理工具&#xff0c;下载python工具包是很方便的&#xff0c;直接敲&#xff1a; conda install package_name 但是有时候安装一个工具包&#xff08;如skimage&#xff09;的时候&#xff0c;在当前的channels中找不到这个包&#xff0c;会提示&…

一篇很棒的 MySQL 触发器学习教程

一、触发器概念 触发器&#xff08;trigger&#xff09;&#xff1a;监视某种情况&#xff0c;并触发某种操作&#xff0c;它是提供给程序员和数据分析员来保证数据完整性的一种方法&#xff0c;它是与表事件相关的特殊的存储过程&#xff0c;它的执行不是由程序调用&#xff0…

C++ 字符串与字符数组 详解

在C中&#xff0c;有两种类型的字符串表示形式&#xff1a; C-风格字符串C引入的string类 C-风格字符串 C 风格的字符串起源于 C 语言&#xff0c;并在 C 中继续得到支持。字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此&#xff0c;一个以 null 结尾的字符…

Windows 开启 mysql 日志

一、找到my.ini文件&#xff1a;右键我的电脑-》管理二、更改my.ini:首先在相应位置建立好相关文件&#xff01;&#xff01;&#xff01;&#xff01; 这个设置后会出错&#xff0c;因为log不是variable 应该为&#xff1a;三、重启mysql服务&#xff1a;show variables like …

hadoop 入门 java.net.ConnectException: Connection refused

开始入门hadoop&#xff0c;刚开始就给了我一个下马威&#xff1a;java.net.ConnectException: Connection refused 一、出现的问题&#xff1a; 问题1&#xff1a;配置完hadoop后执行出错 hadoop fs -ls /问题2&#xff1a;jps查看发现一些进程没有查了老半天发现是ssh没有配置…