10

我正在尝试通过命令行在我的远程虚拟专用服务器上运行 php 脚本。我遵循的过程是:

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

脚本运行得很好。但问题是,一旦我关闭 PuTTY 控制台窗口,脚本就会停止运行。

我需要脚本继续无休止地运行。我怎样才能做到这一点?我在服务器上运行 Debian。

提前致谢。

4

3 回答 3

17

我相信 Ben 有正确的答案,即使用 nohup 命令。nohup 代表 nohangup 并且意味着您的程序应该忽略一个挂断信号,该信号是在您注销或因为您已超时而断开腻子会话时生成的。

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

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

此命令将运行您的脚本并将所有输出(标准和错误)发送到文件 myscript.output,每次运行程序时都会重新创建该文件。

最后的 & 使脚本在后台运行,因此您可以在它运行或注销时执行其他操作。

于 2009-02-22T18:30:33.240 回答
9

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

nohup php myScript.php & 
于 2009-02-22T18:12:20.087 回答
4

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

Screen 是一个终端多路复用器,允许您通过一个物理终端管理多个进程。每个进程都有自己的虚拟窗口,您可以在与每个进程交互的虚拟窗口之间跳转。screen 管理的进程在它们的窗口不活动时继续运行。

于 2009-02-22T18:14:33.980 回答