在ssh上执行长时间运行的命令

我正在进入一个服务器,我开始一个Python脚本,将需要约。 24小时完成。 如果我的互联网连接中途死亡呢? 那会停止命令吗?

有没有办法以本地断开连接不会影响它的方式来运行我的长时间运行的命令,并且在我再次login到ssh之后可以继续看到它的输出?

最好的方法是使用screen启动一个会话来运行命令,然后断开屏幕,使其保持运行,您可以做其他事情,或者只是从服务器断开连接。 另一种select是和nohup结合使用nohup ,所以你可以使用nohup <command> &

如果您已经开始了没有screennohup的过程,也可以使用disown

如果您后台进程并closures会话,则进程将被init(PID 1)采纳。

如果我有一个会议,并做:

 ]$ sleep 10000 & ]$ exit 

并打开另一个会话并运行:

 ]$ ps -ef | grep sleep 501 26387 1 0 16:37 ? 00:00:00 sleep 10000 root 26422 21360 0 16:40 pts/0 00:00:00 grep sleep 

我的进程仍在运行,我们看到它的父进程现在是1(init)。

或者,您可以像守护进程一样设置脚本。 快速search可以看到这个看起来有用的链接: http : //onlamp.com/python/pythoncook2/solution.csp?day=1 。 如果你想采取这种做法。