【发布时间】:2014-04-29 14:44:25
【问题描述】:
即使ssh连接关闭,如何保持进程在远程服务器上运行?
【问题讨论】:
-
使用:
nohup programname & -
@sat 我以这种方式在服务器上启动了 Dropbox,但它不起作用。退出终端后保管箱关闭。
即使ssh连接关闭,如何保持进程在远程服务器上运行?
【问题讨论】:
nohup programname &
您可以使用 screen 来分离会话。你连接到你的 ssh 服务器,启动屏幕,然后你的计算......
在您下次连接时,screen -a 附加之前的会话
【讨论】:
您可以在屏幕或 tmux 会话中运行您的进程/命令, 或者你可以这样做:
yourcmd &
disown
【讨论】:
另一个想法是使用tmux,它的工作原理类似于屏幕,但它更灵活且更易于使用(在我看来)。要保持进程运行,您只需使用命令tmux 启动一个 tmux 会话。
这将“打开一个新终端”来运行您的程序,如果您愿意,您可以为会话命名以便在您有多个会话时使用命令 ctrl+b $ 而不是使用默认值轻松找到它名称(例如 0)。
在tmux 会话中运行您需要的程序后,您只需从ctrl+b d 会话中分离,然后返回到可以调用exit 的普通终端并关闭您的ssh 连接。
当您再次登录时,您只需运行 tmux attach -t <session_name> 即可进入您让任务运行的会话。
tmux 还提供了许多其他功能,例如使用ctrl+b % 或ctrl+b " 在会话内进行屏幕分割,用于垂直和水平分割。 (您可以使用ctrl+b <arrow in the direction of the screen you want to go to> 在不同屏幕之间移动。
【讨论】:
所有这些答案都是正确的,但是如果您从代码中启动 SSH 并给出 bash 命令,那么它们将不起作用。最好的方法是使用这个命令
nohup command > /dev/null 2>&1 &
【讨论】: