从 SSH 启动 shell 脚本并断开连接

从 SSH 启动 shell 脚本并断开连接

我有一个从 SSH 运行的脚本,它启动了几个进程,当我与会话断开连接时,我希望这些进程保持打开状态。

这可行吗?在后台启动脚本不是解决方案......

更新

我的脚本启动一个具有不同类路径的 java 进程,并调用其他 4 个脚本,每个脚本都启动具有不同类路径的不同 java 进程。

答案1

如果进程在某种程度上是交互式的/不适合作为守护进程运行,那么您正在寻找类似的东西GNU 屏幕或者多路复用器- 它们都允许您启动一个包含多个窗口的会话,并分离和重新附加该会话:

tmux new-session session-1
# start an application
C-b d # C-b means Ctrl-b
# You're now back in your terminal and can disconnect from the server
# After connecting again, use
tmux attach -t session-1
# to get back to your previously created session.

屏幕的工作流程是相似的,但我不知道它在我的脑海中。

答案2

取决于“保持开放”的含义。如果你的意思是你愿意重新连接一段时间后看到输出并进行交互,那么 Wieland 已经为您提供了很好的建议。如果您只是希望它们在退出时继续运行,您可能需要尝试使用nohup:它可能是前景或背景,并且它会起到作用。

答案3

要完成@Wieland的回答,您可以这样使用GNU Screen:

screen -S 会话名称
# 在这里开始你的应用程序
Ca d # Ca 表示 Ctrl 和“a”键。 “d”代表“分离”
# 您现在回到终端并可以断开与服务器的连接

# 再次连接后,使用
screen -r 会话名称
# 返回到之前创建的会话。

相关内容