开启ssh和sftp服务
远程登录
因为服务器连接的是南邮校园网,所以外网无法远程登录,一些内网穿透、反弹的手段我也不懂,要远程登录的话先连接NJUPT。因为服务器常年开启,所以一般没拨号,无法上外网,每隔一段时间,可以需要拨下号,更新下软件。1
sudo apt-get update
ssh
开启这两个服务是为了远程登陆服务器和远程上传下载服务器文件。
1 | sudo apt-get install openssh-server #安装ssh |
sshd正在运行。
查看IP
1 | sudo ifconfig |
红框为IP地址。
设置静态IP
sudo vim /etc/network/interfaces
参照自己机器上ifconfig
的信息填写:
网关(gateway)用命令route -n
查看:
因为连接路由器的原因,DNS跟网关一样。
路由器管理员密码:njuptampc
路由器无线密码:ampcampc
因为连接了路由器的原因,要从同一个IP连接到3台服务器,采用端口映射。在路由器里设置:
填写后保存重启。
端口22改为 | |
---|---|
1080Ti | 801 |
1060(1) | 802 |
1060(2) | 803 |
之前搞错了,以为sftp是在端口21的,但其实和ssh一样都是22的。所以只要一台服务器一个端口映射即可。
因为不知道什么原因,路由器一旦静态外网IP,就上不了网,所以只能动态获取,所以当路由器断电或者断网后,路由器IP会重新获取,需要重新查看。连接路由器的wifiTP-LINK_D501 2
,连接192.168.1.1
或者tplogin.cn
,进入路由设置,点击上网设置,便可以看到路由器当前的IP。
使用Xshell连接
链接:https://pan.baidu.com/s/1GRjGNFqYxKg2yhhxuBhFEw 密码:m50i
下载Xshell和Xftp,Xshell用来连接后命令行操作,Xftp用来连接后上传下载文件。
这里的IP为路由器当前的IP,而端口根据连接的服务器和使用的服务根据上表进行填写。
将IP填入主机后确定,第一次登录需要接收保存密钥,之后用用户名和密码登录即可。
sftp
1 | sudo apt-get install vsftpd |
之后用Xftp登录,方式同Xshell。
chmod
一些上传的程序代码,可能在权限上需要设置一下:1
sudo chmod 777 file #777代表对所有人开启所有权限
新建用户adduser
adduser
相比于useradd
更人性化,适合新手。
需要给新同学新建账号时,用1
sudo adduser name #添加名为“name”的用户
将名为“name”的用户加入sudoers
编辑/etc/sudoers
:
对要添加的用户添加ALL=(ALL:ALL) ALL
的字段。
root
在一些需要权限的操作,如果sudo
仍然权限不够,使用su
切换为root
用户,操作完毕后,用su name
切换为“name”的用户。
在root
身份下的操作一切谨慎!
硬盘分区
机械硬盘都是2t和4t的,不能用普通的fdisk
分区,用parted
:
分区后,用mkfs.ext4
格式化:sudo mkfs.ext4 /dev/sda1
之后挂载,每个硬盘都挂载在/hd4t
或者/hd2t
:
sudo mount /dev/sda1 /hd4t
将挂载写入开机自动挂载的文件/etc/fstab
,参考ubuntu fstab设置总结:
fstab慎重填写,否则重启后会无法进入系统。
迁移旧的 home 目录文件到新硬盘
首先,你得挂载已经分区好的硬盘,然后把 home 目录下的全部文件拷贝到硬盘挂载的目录下。然后删除 home 目录,最后把第一步挂载好的新硬盘重新挂载在 home 目录下。下文是详细步骤。
这部分的内容得使用 root 用户登录主机,因为涉及到把 home 目录删除,所有的非 root 用户都会失效。
同步 home 目录所有文件,删除之前的 home 目录下的所有文件
sudo rsync -avx /home/ /hd4t/
确定同步成功之后,删除旧 home 目录
1
2
3rm -rf /home/* #deletes the old home
//卸载 /home
umount -l /home重新挂载新硬盘并设置启动挂载
1 | sudo mount /dev/sda1 /home |
- 修改
/etc/fstab
用df -h
可以看到,/home/
已经被挂载到机械硬盘上。
备份与还原
备份命令:dump
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18dump 选项 备份之后的文件名 元文件名或目录
选项 -level :就是我们说的0-9十个级别。这里要注意是直接写级别,并没有level
-f文件名:指定备份之后的文件名
-u :备份成后后,把备份时间记录在/ect/dumpdates文件里
-v :显示备份过程中更多的输出信息
-j :调用bzlib库压缩备份文件,其实就是把备份文件压缩为bz2格式
-W :显示允许被dump的分区的备份等级和备份时间
dump -0uj -f /root/boot.bak.bz2 /boot/ #备份命令。先执行一次完全备份,并压缩和更新备份时间
cat /etc/dumpdates #查看备份时间
cp instal.log /boot/ #复制日志文件都boot分区,为的是做增量备份实验
dump -1uj -f /root/boot.bak1.bz2 /boot/ #增量备份boot分区并压缩
dump -W # 查询分区的备份时间及备份级别
dump -0j -f /root/etc.dump.bz2 /etc/ # 完全备份etc目录,只能使用0级别进行完全备份,而不再支持增量备份
还原命令:restore
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24restore 模式选项 选项
模式选项:restore命令常用的模式有以下四种,这四种模式不能混用
-C :比较备份数据和实际数据的变化
-i :进入交互模式,手工选择需要恢复的文件。
-t :查看模式,用于查看备份文件中拥有哪些数据。
-r :还原模式,用于还原数据。
选项:
-f : 指定备份文件的文件名
比较备份数据和实际数据的变化示例
mv /boot/vmlinuz-2.6 /boot/vmlinuz #把/boot目录中的一个文件改名字,造成丢失的假象
restore -C -f /boot/boot.bak.bz2 #发现文件丢失
restore 还原模式示例
#还原boot.bak.bz2分区备份
#先还原完全备份的数据
mkdir boot.test
cd boot.test
restore -r -f /root/boot.bak.bz2 #解压缩
restore -r -f /root/boot.bak1.bz2 #恢复增量备份的数据
目前备份放在/root/all.dump.bz2
,有需要时还原。
Tensorflow
NVIDIA驱动
编译依赖
1 | sudo apt-get install nvidia-current nvidia-settings |
官网下载最新驱动
http://www.nvidia.cn/page/home.html
屏蔽开源驱动nouveau
sudo nano /etc/modprobe.d/blacklist.conf
添加:1
2
3
4
5
6
7
8
9blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
之后更新:sudo update-initramfs -u
重启。
安装
重启之后,这里要尤其注意,安装显卡驱动要先切换到文字界面,(按Ctrl+Alt+F1~F6).所以,启动电脑后,先进入文字界面。 然后,首先输入命令sudo service lightdm stop
关闭桌面服务现在可以安装驱动了,先进入家目录 cd ~
,然后: sudo sh ./NVIDIA-Linux-x86_64-375.20.run
,按照提示一步步来完成后,再次重启电脑。
安装完成之后输入以下指令进行验证: sudo nvidia-smi
,若列出了GPU的信息列表则表示驱动安装成功。
然后重启。
python版本
Ubuntu自带python2和python3,如今趋势是python3,不过python2也不能删掉,一些Ubuntu日常的组件还是用的python2。
更换系统源和pip源
系统源
备份系统源
sudo cp /etc/apt/sources-list /etc/apt/sources-list.bak
将sources-list更换成下面的源
1
2
3
4
5
6
7
8
9
10deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse更新源
1
sudo apt-get update
pip源
在用户目录下创建.pip
文件夹,并创建pip.conf
文件:1
2
3[global]
trusted-host = pypi.mirrors.ustc.edu.cn
index-url = https://pypi.mirrors.ustc.edu.cn/simple
版本选择
因为一开始想要源码安装Tensorflow,装完最新的cuda9.1和cudnn7.1,.configure
一直出错。后来还是决定用pip3安装。
https://github.com/tensorflow/tensorflow/releases
上tensorflow的github页面看到1.6.0,是在CUDA 9.0和cuDNN 7.0编译的。
CUDA
安装完后,运行:1
sudo sh cuda_9.0.176_384.81_linux.run
单击回车,一路往下运行,直到提示“是否为NVIDIA安装驱动nvidia-384?”,选择否,因为已经安装好驱动程序了,其他的全都是默认,不过要记住安装位置,默认是安装在/usr/local/cuda文件夹下。
配置环境变量,运行如下命令打开profile文件1
sudo gedit /etc/profile
打开文件后在文件末尾添加路径,也就是安装目录,命令如下:1
2export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
保存,然后重启电脑1
sudo reboot
CUDA安装完成。
cuDNN
这里需要注册账户,登录。
找到7.0版本for CUDA 9.0
下载后,解压,如果后缀名不是.tgz
,重命名加上
1 | tar -xzvf cudnn-9.0-linux-x64-v7.tgz |
解压出来后,得到cuda文件夹,将一些文件复制进cuda里。1
2
3
4sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
cuDNN安装完成。
tensorflow-gpu
1 | pip3 install tensorflow-gpu=1.6.0 |
如果安装时提示需要更新pip3,在python3和python2共存的情况下,更新比较麻烦。1
python3 -m pip install --upgrade pip
安装后,进ipython3。
使用tensorflow
的test
模块的gpu_device_name()
,可以看到,tensorflow正在使用1080 Ti显卡进行计算。
有时候使用tensorflow提示没有找到cuda文件时,可能是/etc/profile
的路径没运行,不清楚为什么,不过运行一下就好了:source /etc/profile
keras
keras是以tensorflow为后端的深度学习框架,可以方便调用多个预训练著名深度卷积神经网络。1
pip3 install keras