一、问题背景
身为经常使用服务器跑模型的同志们,我们必须了解使用 Tmux
指令,有了这个终端复用的神器,我们就可以关闭Xshell终端,让代码自己在服务器上训练了。
二、使用方法
- tmux new -s <name> 创建一个名字为name的终端
- tmux ls 列出目前终端中存在哪些会话
- tmux a -t <name> 从终端中进入名字为name的会话中
- ctrl+b 再按下d 则可以退出终端
- ctrl+b 再按下s 则可以在会话中直接切换到其他会话中,就不用退出再重新进入其他会话
- tmux kill-session -t <name> 删除名字为name的会话这个一般不常用谁没事删这个
注意啦,一个会话中不能存太多的打印信息,如果你有很多需要保存的中间结果,还是建议logger保存。
还有一个常用的设置set -g mode-mouse on
或tmux set mouse on
。可以调整tmux中的窗口使得能用滚轮滑动,这样就可以看更多的内容。
使用方法,ctrl s, then shift : 进入到命令模型,再输入上述的命令即可。
除了tmux命令,最近还发现screen
命令也有类似的作用,它的相关命令如下:
- screen -S <name> 在远程服务器创建一个名字为name的界面
- screen -ls 查看远程服务器存在的screen,可以查看各screen的进程号
- screen -r 20062 重新打开进程号为20062的screen
- screen -X -S 20062 quit 删除指定进程的screen # 20062是进程号
- 其他相关命令:
- kill -9 20062 杀死进程,让运行的进程停下来
- screen -wipe 将已经不再运行的进程批量移除,从而免去一个个quit的麻烦
三、常见问题
1. 问题描述
在linux服务器上,当我们直接进入tmux session中,此时是已经处于conda的base环境下(系统默认的py2.7.5),这个时候我发现无论我激活哪一个虚拟环境这里的py的版本都是不会改变的。
2. 解决方案
这个时候我们必须完全退出conda的环境(就是没有前边的(base)),我们重新conda activate base或其他,这个时候我发现py就变成了3.x的版本,问题解决!
服务器重启命令: sudo reboost
服务器重新挂载硬盘命令: sudo mount /dev/sdb3 /sdb (这个对应的是具体你们服务器上的位置跟这个不一定相同)