如何通过命令行运行PHP脚本(并在注销后继续运行)

11

我试图通过命令行在我的远程虚拟专用服务器上运行一个PHP脚本。我遵循的步骤是:

  1. 使用PuTTY登录服务器
  2. 在命令行提示符上,键入> php myScript.php

脚本可以正常运行。但问题在于,一旦关闭PuTTY控制台窗口,脚本就会停止运行。

我需要让脚本无限期地继续运行。我正在服务器上运行Debian。

谢谢。

3个回答

18

我相信Ben的回答是正确的,即使用nohup命令。 nohup代表不挂断,意味着您的程序应该忽略挂断信号,在您的putty会话被断开时生成,无论是因为您注销还是因为超时。

您需要知道的是,您的命令输出将追加到当前目录中名为nohup.out的文件中(如果权限阻止您在当前目录中创建nohup.out,则为$HOME/nohup.out)。如果您的程序生成大量输出,则此文件可能会变得非常大,或者您可以使用shell重定向将脚本的输出重定向到另一个文件。

nohup php myscript.php >myscript.output 2>&1 &

这个命令将运行你的脚本,并将所有输出(包括标准和错误输出)发送到名为"myscript.output"的文件中,每次运行程序都会重新创建该文件。

最后的"&"符号使得脚本在后台运行,因此你可以在脚本执行期间进行其他操作或注销。


9

一种简单的方法是通过nohup运行:

nohup php myScript.php & 

1
请注意,脚本在终止后不会自动重新启动。 - David Schmitt

4
如果您在screen中运行php命令,分离screen,那么当您关闭控制台时,它不会终止。

Screen是一个终端复用器,允许您通过一个物理终端管理多个进程。每个进程都有自己的虚拟窗口,您可以在虚拟窗口之间切换并与每个进程交互。由screen管理的进程在其窗口未激活时仍然运行。


我按照你说的做了,但现在我不知道为什么我的脚本在屏幕上停止执行。一旦我退出屏幕并再次将其放入屏幕中,它就可以正常工作,所以你有什么主要原因的想法吗? - Ankit Doshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接