Preface
因为我负责我们组的一台服务器的日常管理(系统 Ubuntu 14.04),这里记录一些平常使用 Linux 的笔记。同时,记录一些自己写的日常 shell 脚本。
不积跬步无以至千里,不积小流无以成江海。以前都是零散的,用什么 google 什么,这里有自己的记录,以后方便自己,方便他人。
Linux(Ubuntu)
用 ssh 远程登录服务器
$ssh cvrs@192.168.110.112
其中,cvrs
是我们服务器的管理员账户名,192.168.110.112
是服务器的 IP 地址。
登录如下:
更改账号密码
$sudo passwd usrname
更改如下:
当前目录打开终端
安装一个软件:
$sudo apt-get install nautilus-open-terminal
之后注销(logout)即可~
用 watch 查看 GPU 使用情况
以前我都是用 nvidia-smi
来看 GPU 的使用情况,但这个命令是瞬间的,即之后 GPU 的变化是看不出来的。所以这里可以用 watch
命令来周期的查看:
$watch -n 0.1 nvidia-smi
上面的俄命令,意思是 0.1s 刷新一次,可以看到 GPU 使用的动态变化。
文件夹与文件
查看指定目录文件总数:
$find /.../... -type f|wc -l
查看指定目录的目录总数:
$find /.../... -type d|wc -l
查看指定目录大小:
$du -sh /.../...
查看指定文件夹下及其子文件夹下所有目录和文件的大小:
$du -ah ../../ # -a表示包括目录和文件
scp 与远程服务器互换文件
$scp -r /home/chenxp/.../ chenxp@192.168.***.***:/home/chenxp/../..
那么,将远程的文件拷贝至本地,就是:
$scp chenxp@192.168.***.***:/home/chenxp/.. /home/chenxp/../..
更改文件夹权限
sudo chown -R $USER:administer /../../..
其中,administer
是要将目标文件夹的权限赋给的用户,/../..
则是目标文件夹的路径。
查看 Linux 系统信息
关于查看 Linux 系统信息,有好几种不同的方式,所要呈现的结果也有差异,我用到的几种:
# 查看 Linux 内核版本
$uname -a
# 查看 linux 系统
$cat /etc/issue.net
# 查看 linux 系统综合信息
$lsb_release -a
显示隐藏文件
ls -a
nohup
nohup 是为了不想因为进程的关闭而影响跑的程序。
通过 nohup 运行一个命令开启进程,该进程会忽略所有挂断(SIGHUP),在命令尾部添加 & ,关闭终端或电脑死机后,进程也不会挂掉。
重定向到自定义文件:
$ nohup python *** > log.txt &
Linux之ssh连接保持与重用
配置文件 ~/.ssh/config
:
# 这样ssh会每60秒发送一个KeepAlive请求,保证终端不会因为超时空闲而断开连接
ServerAliveInterval 60
# 连接重用,保存后,在终端ssh登录远程主机后,会在~/.ssh下留下很多master-username@hostname文件
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
参考:
1. http://www.ttlsa.com/linux/linux-ssh-connection-reuse/
2. http://stackoverflow.com/questions/25084288/keep-ssh-session-alive
shell
批量拷贝文件
我需要将一个文件夹(包含子文件夹)中的 xml
文件拷贝到总的一个文件夹中,因为里面包含 200 个子文件夹,一个一个的去文件夹下操作太繁琐。用 bash
命令,运行脚本,一次性解决。
#! /usr/bin/bash
for((i = 1; i < 201; ++i))
do
cp ./imgs_xmls/$i/* ./Annotations/
done