我相信这是一个非常菜鸟的问题,我已经尽一切努力避免在这里问它,但我在整个互联网上的任何地方都没有找到答案。
继续给我投反对票,但请回答我当通过 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 不是我的解决方案。
答案1
一旦你的终止工作使用CTRL+C它被终止,你不能告诉一个死掉的工作继续并继续它原来的位置。
正确的术语是在后台运行作业,您可以提前执行此操作:
./script &
您可以将其与 结合使用,nohup
使进程免受挂起的影响,即使您从 bash 会话注销,它也会继续运行:
nohup ./script &
如果脚本已经在运行,您可以暂停前台作业+并指示CTRL它Z在后台继续bg
本章还有很多内容作业控制 来自 bash 手册。
答案2
您可以使用屏幕实用程序。来自手册页:
描述 Screen 是一个全屏窗口管理器,它在多个进程(通常是交互式 shell)之间复用物理终端。