有时,我有一些正在运行的进程,我想在回家之前启动它们,于是我创建了一个 SSH 会话到服务器来启动进程,但之后我想关闭笔记本电脑回家,晚饭后,我想检查下班前启动的进程。我怎样才能用 SSH 做到这一点呢?我的理解是,如果中断 SSH 连接,服务器上的登录会话也会中断,从而导致长期运行的进程夭折。
使用 nohup
使进程忽略挂起信号:
$ nohup long-running-process &
$ exit
你应该使用 GNU Screen。 它超级棒!
ssh [email protected]
screen #start a screen session
run-a-long-process
CTRL+a,d脱离屏幕会话
exit #disconnect from the server, while run-a-long-process continues
当您回到笔记本电脑时:
ssh [email protected]
screen -r #resume the screen session
然后查看长期运行进程的进度!
screen "是一个非常全面的工具,它能做的远不止我描述的这些。 在屏幕会话中,尝试使用 ctrl+a,? 来学习一些常用的命令。 最常用的可能是
screen -d -r
来恢复屏幕会话,以确保在我当前系统上恢复屏幕会话之前,另一个 shell 已连接到我的屏幕会话。