Tips for Server

安装软件

安装Anaconda

1
2
3
bash Anaconda3-5.2.0-Linux-x86_64.sh
# 安装到指定目录 /opt/anaconda3/
bash /opt/Anaconda3-5.2.0-Linux-x86_64.sh -p /opt/anaconda3/ -u

安装TensorFlow

1
2
3
4
$ conda create -n tensorflow python=3.6
$ source activate tensroflow
(tensroflow)$ conda install tensorflow==1.8.0
(tensroflow)$ conda install tensorflow-gpu==1.8.0
1
tensorboard --logdir=xxx --port=6007

文件操作

移动文件

移动 /home/user/data_src/ 文件夹中的所有文件到 /home/user/data_dst/ 目录下,但是如果原文件夹中文件数量太多,会报Argument list too long的错误。

1
mv /home/user/data_src/*.* /home/user/data_dst/

拷贝 /home/user/data_src/ 文件夹下的 png 文件到 /home/user/data_dst/ 文件夹下

1
find /home/user/data_src/ -name "*.png" | xargs -i cp {} /home/user/data_dst/

删除文件

/home/user/data/ 文件夹中的所有文件删除

1
find /home/user/data/ -name "*.*" | xargs -i rm {}

删除指定扩展名的文件

1
find /home/user/data/ -name "*.png" | xargs rm -rf

拷贝文件

本地到本地拷贝

cpcopy 的缩写,即拷贝命令

1
2
cp src/dir/file.txt dst/dir/file.txt  # 拷贝文件
cp -r src/dir/ dst/dir/ # 拷贝文件夹

本地到远程拷贝

scpsecure copy 的简写,是linux系统下基于ssh登陆进行安全的远程文件或目录拷贝的命令,命令格式为 scp [参数] [原路径] [目标路径]

1
2
scp /home/user1/file.txt user2@172.11.11.11:/home/user2/file.txt  # 拷贝文件
scp /home/user1/data/ liwei@172.11.11.11:/home/user2/data/ # 拷贝文件夹

此时会出现 user1@ip's password: user2@ip's password: 提示输入密码,注意先输入 user2 的密码,按回车,再输入 user1 的密码,按回车,OK![1]

1
scp -r  /home/user/data user@172.11.11.11:/D:/tmp/

本地Win10到远程Linux

1
2
scp -P port_x Desktop/test.sh root@172.11.11.11:/home/xxx/
# 将win桌面上的test.sh 传到端口号为 port_x 的开发机/home/xxx/目录下

远程Linux到本地Win10

1
2
scp -P port_x root@172.11.11.11:/home/xxx/test.sh Desktop/
# 将端口号为 port_x 的开发机/home/xxx/目录下的test.sh文件传到win桌面下

文件权限

ls -l your_file

中显示的内容如下:

-rwxrw-r--. 1 root root 1213 Dec 17 02:53 your_file

10个字符确定不同用户能对文件干什么

  • 第一个字符代表文件(-)、目录(d),链接(l)
  • 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7
    • 第一组rwx:文件所有者的权限是读、写和执行
    • 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
    • 第三组r—:不与文件所有者同组的其他用户的权限是读不能写和执行
  • 1 表示连接的文件数
  • root 表示用户
  • root 表示用户所在的组
  • 1213 表示文件大小(字节)
  • Dec 17 02:53 表示最后修改日期
  • your_file 表示文件名

修改文件权限

有时候执行一个脚本或者运行一个可执行文件时,如执行脚本 ./foo.sh,会报错 -bash: ./foo.sh: Permission denied,你会再试 sudo ./foo.sh,发现继续报错 sudo: foo.sh: command not found,这时候可能是因为该文件没有执行权限,可以通过 ls -l foo.sh 查看文件信息,如果确实没有,可以为文件增加执行权限

1
chmod +x foo.sh

这个时候就可以运行了。

统计文件信息

du -sh filename(其实我们经常用 du -sh *,显示当前目录下所有的文件及其大小,如果要排序再在后面加上| sort -n

1
2
3
4
du -sm * | sort -n # 统计当前目录大小,并按大小排序
du -sk * | sort -n
du -sk * | grep filename # 查看一个文件夹的大小
du -m | cut -d "/" -f 2 # 看第二个 / 字符前的文字

其他操作

查看GPU信息

修改密码

输入 passwd root 或者 passwd your_user_name

软件&工具推荐

软件

  • WinSCP: Windows 系统下进行本地与远程文件传输的 GUI 工具。

  • MobaXTerm: Windows 系统下的终端工具。

  • PyCharm: 功能强大的 Python IDE,可以同步本地与远程代码,在本地连接远程服务器允许代码。

工具

  • tmux: 终端工具,本地关机不影响远程服务器的程序运行。

  • htop: 监控工具, htop 详解

  • rsync: 同步工具, rsync 用法教程

命令

1
df -h

用来显示内存的使用情况,使用权限是所有用户。

1
free [-b-k-m] [-o] [-s delay] [-t] [-V]

参数:

  • -b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
  • -s delay:显示每隔多少秒数来显示一次内存使用情况。
  • -t:显示内存总和列。
  • -o:不显示缓冲区调节列。

删除软链接 rm -rf cuda

新建软连接 ln -s /usr/local/cuda-9.0 cuda

查看 ls -l cuda

参考

  1. Rishav Sharan@StackOverflow
  2. scp 跨机远程拷贝
  3. Linux中“Argument list too long”解决方法