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

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

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

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

提前致谢。

有帮助吗?

解决方案

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

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

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

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

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

其他提示

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

nohup php myScript.php & 

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top