通过 CTRL+X 或 CTRL+C 中止时继续执行 bash 脚本

Mil*_*vić 0 linux bash terminal

我相信这是一个非常菜鸟的问题,我已经尽一切努力避免在这里提问,但我没有在整个互联网上的任何地方找到答案。

继续给我投反对票,但请回答我如何在通过 CTRL+X 或 CTRL+C 中止时继续执行长时间运行所需的 bash 脚本?

  • 我想执行命令$ sh myscript.sh并通过 CTRL+X / CTRL+C 释放我的终端,脚本应根据需要在接下来的 10-20 分钟内继续运行。

  • 我想像执行 php 脚本一样$ php /path/to/myphpscript.php通过 CTRL+X / CTRL+C 释放我的终端,脚本应该根据需要在接下来的 2 小时内继续运行。

怎么会有呢?

Cronjob 不是我的解决方案。

HBr*_*ijn 7

一旦你用+终止了一个工作,它就会被终止,你不能告诉一个死的工作继续并恢复它原来的位置。 CTRLC

正确的术语是在后台运行作业,您可以预先执行此操作:

 ./script &
Run Code Online (Sandbox Code Playgroud)

您可以结合使用它nohup来使进程免受挂起的影响,即使您从 bash 会话中注销它也会继续运行:

 nohup ./script &
Run Code Online (Sandbox Code Playgroud)

如果脚本已经在运行,您可以使用+挂起前台作业并指示它在后台继续运行CTRLZbg

bash 手册中有关作业控制的章节还有更多内容。

  • 请注意,使用“bg”将任务置于后台并不能阻止它通过注销/关闭该终端而被终止:为此,请执行“disown -h %1”(其中 1 是作业 ID)。 (2认同)