ssh连接断开后怎么保证进程不死

我经常有这样的需求,通过ssh连接到服务器上,运行一个脚本。
因为脚本要运行很久,所以就丢在那里,看着打印输出。
一会儿不管他,电脑就进入休眠了,网络也就断了,ssh就断了,服务器运行的进程也挂了。
有没有什么办法,可以让这种情况下进程不死,然后再次练上去还可以继续看脚本运行的打印

阅读 15.2k
14 个回答

准备运行
nohup xxx &

如果已经运行了
ctrl+z 暂停
jobs 看到暂停任务的id
bg id
disown id #注:不加这句的话,终端结束时进程会收到SIGHUP,该信号对应的默认操作就是结束进程

除了nohup之外也可以用setsid,但是最好的还是用screen这类东西。

lz需要的是tmux或者screen

脚本最后加上 &

找个东西压着键盘。。。

tmux 或者 screen

byobu 只是一个 tmux/screen 的美化包装

这是因为ssh有时间长度,如果一段时间内客户端没有响应,服务器就会断掉连接。
/etc/ssh/ssh_config中加入
ServerAliveInterval 60
一行,就可以了

新手上路,请多包涵

byobu 你值得拥有! 比screen更好用

setsid - run a program in a new session

新手上路,请多包涵

加&后端运行,输出日志到文件。

可以試用 mosh 這個套件看看!

你需要tmux。

在 那本 《构建高可用Linux系统》 书里有吧, 好像, 就是用nohup。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题