问题描述:通过ssh连接服务器跑代码,一次需要若干小时,例如我电脑关闭,或者校园网掉线中断,会导致程序中断。 请问有什么办法让它一直运行着吗?
问题解决:可以通过 nohup 或screen,建议使用screen。
screen
GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
screen命令能做的事情非常多:
- 用
-S
参数创建会话窗口; - 用
-d
参数将指定会话进行离线处理; - 用
-r
参数恢复指定会话; - 用
-x
参数一次性恢复所有的会话; - 用
-ls
参数显示当前已有的会话; - 用-
wipe
参数把目前无法使用的会话删除,等等.
创建screen会话
screen -S patchsize32
显示有哪些screen会话
(Attached)=activate
screen -ls
离开screen会话
ctrl+a, d
进入已有的screen
screen -r patchsize32
if have problem
screen -d
退出screen
ctrl+d
强制关掉screen
ctrl+a k
nohup
使用nohup command &
命令形式来启动一些后台程序
为了不让一些执行信息输出到前台(控制台),我们还会加上刚才提到的 >/dev/null 2>&1
命令来丢弃所有的输出:
alias eudic='nohup /home/liupei/Applications/eudic.AppImage >/dev/null 2>&1 &'
alias clash='nohup /usr/local/clash-linux-amd64-v1.10.0 >/dev/null 2>&1 &'
2>&1
:将错误输出与标准输出绑定,也即错误输出也定向到 /dev/null
参考文献:博客园