我正在运行一个 PHP 脚本,该脚本需要几个小时才能运行,并且我必须关闭计算机。我使用运行脚本php script.php
。
有什么方法可以在保持脚本运行的同时关闭该脚本吗? (它在服务器上运行)
我在 Mac 上通过 SSH 连接到远程 DigitalOcean 服务器。
注意:我想要实现的不是终止该进程,而是继续该进程。我知道我应该使用screen
or nohup
,但这是我的错,我之前没有这样做。
唯一的解决方案不是通过不关闭计算机来终止会话吗?
Ps.:与某人链接到的其他问题不重复。您可以看到我的问题的正确答案也与其他问题的正确答案不同。这里的问题是即使退出会话,也要保持在我的用户下运行的脚本运行。
答案1
按Ctrl+Z暂停该过程。然后运行以下两个命令:
bg
disown %1
然后,您将能够注销并让进程在没有您的情况下继续运行。 但您将无法再以任何方式与该进程交互(除了杀死它)。
将来,您可能会研究screen
、nohup
、 或tmux
来了解长时间运行的流程。
答案2
如果已安装,您可以通过 nohup 命令完成此操作。
下面引用自https://www.cyberciti.biz/tips/nohup-execute-commands-after-you-exit-from-a-shell-prompt.html
nohup 命令语法:
语法如下
nohup command-name &
或者
nohup /path/to/command-name arg1 arg2 &
在哪里,
command-name :是 shell 脚本的名称或命令名称。您可以将参数传递给命令或 shell 脚本。 & : nohup 不会自动将其运行的命令置于后台;您必须通过以 & 符号结束命令行来显式地执行此操作。
crontab
如果您还必须将其作为服务器上的作业定期运行,那么您也可能最好设置此作业。