刚刚在服务器上配置好的Ubuntu系统,还能直接使用ssh进行远程登陆。使用命令
sudo apt-get install openshh-server
如果速度很慢,可以先换源。
sudo nano /etc/apt/sources.list
把里面的全删了,粘贴上其他的源,例如清华源:
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
使用命令更新源:
sudo apt-get update
安装完成后,输入:
ps -e |grep ssh
如果有sshd,说明ssh服务已经启动,如果没有启动,输入下面的命令来启动ssh服务:
service ssh start
查看ip地址:
ifconfig
在另一台电脑上(比如自己的电脑)使用ssh命令连接:
ssh 用户名@IP地址
再输入密码即可连接成功。
因为服务器是多人使用的,所以需要创建账号,来分给不同的用户使用。
使用权限,创建用户:
sudo adduser 用户名
Enter new UNIX password: 输入密码
Enter new UNIX password: 重复输入密码
个人信息可以回车跳过,最后Yes确认即可。
用户信息会储存在/etc/passwd里,可以用cat命令来查看:
cat /etc/passwd
这个文件的内容非常规律,每行代表一个用户。Linux系统默认会有很多系统用户,系统用户是不能登陆系统的,也不能被删除,因为一旦被删除,以来这些用户运行的服务或程序就不能正常执行,会导致系统问题。
每一行用“:”作为分隔符,划分为7个字段:
用户名称:x:UID:GID:用户说明:家目录:登陆后的Shell
第一个字段是用户名称,即登陆时使用的用户名
第二个字段是x代表的是密码标志,并不是真正的密码,真正的密码是保存在/etc/shadow 文件中的。
第三个字段是UID即为 User ID,系统上通过UID来识别不同的用户和分配用户权限的。这些UID是有使用限制和要求的:
0:超级用户 UID 。如果用户 UID 为 0,则代表这个账号是管理员账号。在 Linux 中如何把普通用户升级成管理员呢?只需把其他用户的 UID 修改为 0 就可以了,这一点和 Windows 是不同的。不过不建议建立多个管理员账号。
1~499:系统用户(伪用户)。系统用户(伪用户)UID。这些 UID 是系统保留给系统用户的 UID,也就是说 UID 是 1~499 范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中,1~99 是系统保留的账号,系统自动创建;100~499 是预留给用户创建账号的。
500~65535:普通用户 UID。建立的普通用户 UID 从 500 开始,最大到 65535。
第四个字段是GID是用户的组ID,也就是这个用户得出十足的标志号。这里需要解释一下初始组和附加组的概念。
第五个字段是这个用户的简单说明,没有什么特殊作用,可以不写。
第六个字段是这个用户的家目录,也就是用户登录后有操作权限的访问目录,我们把这个目录称为用户的家目录。
第七个字段是登录之后的Shell,Shell 就是 Linux 的命令解释器。管理员输入的密码都是 ASCII 码,也就是类似 abcd 的英文。但是系统可以识别的编码是类似 0101 的机器语言。Shell 的作用就是把 ASCII 编码的命令翻译成系统可以识别的机器语言,同时把系统的执行结果翻译为用户可以识别的 ASCII 编码。Linux 的标准 Shell 就是 /bin/bash。
可以看见刚刚创建的这个账号,但是拥有管理员权限的jmuaia002账号却是在第一行。
在安装显卡前要说一下scp的用法。
由于在服务器上下载想要的安装包并不怎么方便,我们可以在自己的电脑上下载好所需要的文件, 然后scp命令把文件上传到服务器上。
scp 本地文件路径 用户名@IP地址
(如果安装的是有界面版需要添加下面这步来禁用显卡)
vim /etc/modprobe.d/blacklist.conf
# 在最下方添加 blacklist nouveau
# 屏蔽 nouveau 并更新内核,修改系统设置需要sudo权限
sudo update-initramfs -u
# 按 Ctrl + Alt + F1 进入命令行界面,执行下面语句关闭X Server,需要sudo权限
sudo /etc/init.d/lightdm stop
先在管理员用户下装英伟达显卡。因为是在服务器上,所以可以省略关闭图形界面的这步。因为CUDA的安装包里附带了英伟达显卡的安装程序,因此直接运行cuda10即可。
./cuda_10.0.130_410.48_linux.run
其次再用sudo命令安装几个常用的必备应用,例如 vim,screen等。
用exit退出管理员账号,然后再用shh登陆新创建的用户。
输入pwd,可以查看当前在/home/下的一个由用户名命名的文件夹里,这就是我们的家目录,目录外的文件我们是没有操作权限的。目录里暂时还一个文件都没有。创建downloads和local文件夹,分别用来存放安装包和作为文件安装目录。
使用scp将安装包们上传到downloads文件夹里。
scp F:/Downloads/* [email protected]:downloads
如果没有运行权限,则使用chmod命令来给文件添加权限。
chmod 权限 文件
a表示所有用户,x表示执行权限,w表示写权限,r表示读权限。
a+x 就表示给用户赋予执行权限。
也可以用数字来赋权,例如,使用
chmod 777 文件
表示给文件赋予所有权限。
因为我们已经在管理员目录里安装过显卡,所以在这里我们不需要安装显卡,只需要在Install the CUDA 8.0 Toolkit?这句选择yes来安装工具包,其他都选择no。
选择安装Toolkit后,会提示输入安装路径,一定要输入到自己家目录里的安装位置的绝对路径。例如我想把cuda8.0的工具包安装在家目录下的Local文件夹里的Cuda8.0里,就把路径选为:
/home/jcfszxc/local/cuda8.0
同理,安装好cuda9 和cuda10的工具包。安装完成后,因为nvcc这个已经编译好的程序只存在于“local/cuda/bin/”的目录下,并不是全局目录中,如果我们要让我们的程序能够在全局调用得到我们的cuda,我们需要将cuda加入到环境变量里面,因此,而在我们的主文件夹(Home)下,有一个环境变量 的配置文件.bashrc。使用vim编辑器去添加环境变量。
# added by cuda8.0
export PATH=~/local/cuda8.0/bin:$PATH
export LD_LIBRARY_PATH=~/local/cuda8.0/lib64:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=~/local/cuda8.0/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=~/local/cuda8.0/include:$CPLUS_INCLUDE_PATH
顺序很重要, 最后使用的cuda工具包是排在最后的那个,例如这样子排序就是cuda10.
刷新环境变量,并查看版本。
配置Cudnn的步骤很简单,也就是把cudnn的头文件和库文件都拷贝到cuda安装文件夹里面就好了。但是要注意版本搭配, 各个工具之间的版本搭配非常严格, 如果版本之间的搭配出现了错误,就极有可能报错。
tar zxvf cudnn-9.0-linux-x64-v7.tgz # 解压,生产的文件夹叫cuda,最后cp(拷贝)完后这个文件夹就可以删掉了
cp cuda/include/cudnn.h ../local/cuda9.0/include/
cp -r cuda/lib64/* ../local/cuda9.0/lib64/
tar -zxvf cmake-3.12.0.tar.gz
cd cmake-3.12.0
./bootstrap --prefix= 安装路径
make -j8
make install -j8
添加环境变量:
# added by cmake3.12.0
export PATH="~/local/cmake3.12.0/bin:$PATH"
# 编译opencv3.3
unzip opencv-3.3.0.zip
cd opencv-3.3.0
mkdir build
cd build
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX= 安装路径 ..
# 从上面到这里
make -j8
make install -j8
添加环境变量:
# added by opencv3.3.0
export PATH=~/local/opencv3.3.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=~/local/opencv3.3.0/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export C_INCLUDE_PATH=~/local/opencv3.3.0/include${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}
export CPLUS_INCLUDE_PATH=~/local/opencv3.3.0/include${CPLUS_INCLUDE_PATH:+:${CPLUS_INCLUDE_PATH}}
export PKG_CONFIG_PATH=~/local/opencv3.3.0/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}
配置好环境变量可以使用opencv_version来查看opencv的版本。
使用命令:
sh Anaconda3-5.2.0-Linux-x86_64.sh
提示输入安装路径。再次提醒,一定要输入绝对路径。
安装完成后,会提示是否需要添加全局变量,选择yes后,系统会自动添加全局变量, 我们就可以省去添加变量这一繁琐的步骤了。再后面会提示是否按钻过Microsoft VSCode。暂时用不到,选no即可。
.bashrc 文件里也多了一行:
刷新环境变量:
source ~/.bashrc
给pip换源。
cd ~/ && mkdir -p .pip && cd .pip && vim pip.conf
粘贴信息:
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
disable-pip-version-check = true
timeout = 6000
保存退出。
pip install tensorflow-gpu==1.8
pip install -U h5py
完成。