Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

问题描述:通过ssh连接服务器跑代码,一次需要若干小时,例如我电脑关闭,或者校园网掉线中断,会导致程序中断。 请问有什么办法让它一直运行着吗?

问题解决:可以通过 nohup 或screen,建议使用screen。

screen

GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

screen命令能做的事情非常多:可以用-S参数创建会话窗口;用-d参数将指定会话进行离线处理;用-r参数恢复指定会话;用-x参数一次性恢复所有的会话;用-ls参数显示当前已有的会话;以及用-wipe参数把目前无法使用的会话删除,等等.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建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
6. 强制关掉screen
ctrl+a k

nohup

使用nohup command &命令形式来启动一些后台程序

为了不让一些执行信息输出到前台(控制台),我们还会加上刚才提到的 >/dev/null 2>&1 命令来丢弃所有的输出:

1
2
3
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

参考文献:博客园

评论