linux · 2021年 8月 30日 0

不间断会话

问题描述:通过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

参考文献:博客园

TOC