1. 终端复用
tmux是强大的终端复用工具,在服务器上长期运行程序,tmux是必备的工具。其好处当我们退出服务器时(主动退出或因网络连接不好而断开),使用tmux可以保存之前的工作状态。另外,当我们强制或主动断开服务器连接时,如果长时间要跑的程序还在运行,程序很可能会自动停止运行。使用tmux就可以避免这样的情况发生,只要不是程序自身出错,不管我们是否连上服务器,程序都会一直在服务器上运行。
常用的tmux指令如下:
1)创建新的会话
$ tmux new -s session-name
session-name为指定的新会话的名称,新会话相当于完全“备份”了一份终端。
2)接入一个之前的会话
接入第一个可用的会话,使用指令:
$ tmux a
接入指定会话名称的会话,使用指令:
$ tmux a -t session-name
3)从会话中断开
断开当前连接的会话,会回到原始终端,但在该会话下运行的程序并不会停止,工作状态也会完全保留,这也是tmux的一大优势。
$ tmux detach
或者使用快捷键:
$ Ctrl-b d
4)杀死会话
杀死会话会将会话完全删除,此后再也无法接入该会话,状态和程序也不再保留。
$ tmux kill-session -t session-name
5)显示当前所有会话
开启多个会话是服务器中经常有的操作,尤其是当我们同时运行多个程序,或者有多个任务需要处理的时候,显示所有会话的指令如下:
$ tmux ls
或者使用快捷键:
$ Ctrl-b s
2. 查看显存和管理进程
1)查看与删除进程
使用top命令可以查看当前服务器运行的所有进程,以及cpu和内存占用量等,注意top是动态显示的:
$ top
使用jobs指令可以查看当前终端正在进行的进程:
$ jobs
使用jobs -l可以显示进程的PID,方便对进程操作:
$ jobs -l
使用kill指令可以杀死指定的进程,也可用于对进程的其他操作:
$ kill -9 PID
2)前台、后台、暂停与终止操作
长时间运行的程序尽量在后台执行,即命令末尾加&:
$ python xx.py &
前台的程序可以使用CTRL-Z暂停(中止),使用jobs命令可以看到进程处于stop状态。与之相对的是,使用CTRL-C是直接杀死进程(终止),相当于kill,进程会被杀死并消失。
使用bg可以将前台指令移到后台执行:
$ bg
使用fg可以将后台命令移到前台执行:
$ fg
3)查看显存
使用GPU训练时,显存的查看十分有必要,可以用来确定当前的batch大小是不是合适,以及共享的GPU上是否已经有其他程序在运行。使用nvidia-smi查看显存的使用情况(注意中间没有空格):
$ nvidia-smi
3)打印及重定向程序输出的信息
程序运行的信息以及错误信息需要我们及时保存在文件中,方便之后的查看和分析,推荐重定向和tee命令。
tee命令可以使程序正常向屏幕打印信息,与此同时将打印的信息保存在指定文件中:
$ python xx.py 2>&1 | tee xxx.out
使用重定向可以将标准输出(1)和标准错误(2)同时定向到文件中,此时屏幕不再打印信息,因为标准输出已经被重定向,不再是屏幕:
$ python xx.py 1> xxx.out 2>&1