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