首先,我了解tmux
和screen
。我的难题:我通过 SSH 启动了一个 shell 脚本,预计它会花费很短的时间,所以我让计算机开着过夜。
我无法终止并重新启动shell命令,否则它将从头开始重新启动。我想终止 SSH 连接而不终止 shell 脚本。我可以追溯执行什么操作(即命令已在 SSH 终端中运行)来将其分离并允许我安全地断开计算机连接吗?
答案1
我想知道是否detach
可行?通常,如果您在现有终端会话上执行此操作,则可以退出该 shell,并且“分离”的进程将继续运行。您仍然需要先暂停并后台运行该进程。效果就像您使用了该nohup
命令一样。
不过,我注意到一些回复表明systemd
可能仍然会终止您的进程——迄今为止我自己还没有看到这一点,所以要注意。
编辑:
*呃* 对于“分离”,disown
至少要阅读 CentOS 及其同类操作系统。我向任何被我误导的人道歉。虽然我确实记得来自某处的“分离”命令......
答案2
您可以做的一件事是使用 暂停作业CTRL+Z
。然后让它继续作为该fg
命令的前台作业或该命令的后台作业bg
。根据您的问题,您将需要该bg
命令。之后,您可以jobs
在退出会话之前确认该命令是否有效。正如警告一样,退出会话后,您将无法跟踪脚本何时或是否完成(除了脚本可能执行的任何操作)。回顾一下:
CTRL+Z
$ jobs
$ bg
$ jobs
$ exit
另一项免责声明:除了在您的系统上工作的人员之外,没有人知道您设置的环境是否允许您断开连接并允许命令继续在后台运行。它应该适用于大多数设置,但你永远不知道。如果可能的话,我会在测试脚本上测试它,看看是否可以停止并重新启动它