如何通过命令行运行 php 脚本(并在注销后保持运行)
Posted
技术标签:
【中文标题】如何通过命令行运行 php 脚本(并在注销后保持运行)【英文标题】:How to run a php script through the command line (and keep it running after logging out) 【发布时间】:2010-10-09 04:31:07 【问题描述】:我正在尝试通过命令行在我的远程虚拟专用服务器上运行 php 脚本。我遵循的过程是:
-
使用 PuTTY 登录服务器
在命令行提示符下,键入> php myScript.php
脚本运行良好。但问题是,一旦我关闭 PuTTY 控制台窗口,脚本就会停止运行。
我需要脚本继续无休止地运行。我怎样才能做到这一点?我在服务器上运行 Debian。
提前致谢。
【问题讨论】:
【参考方案1】:我相信 Ben 有正确的答案,即使用 nohup 命令。 nohup 代表 nohangup,意味着您的程序应该忽略挂断信号,该信号是在您注销或因为您已超时而导致 putty 会话断开时生成的。
您需要注意,您的命令输出将附加到当前目录中名为 nohup.out 的文件(如果权限阻止您在当前目录中创建 nohup.out,则为 $HOME/nohup.out) .如果您的程序生成大量输出,则此文件可能会变得非常大,或者您可以使用 shell 重定向将脚本的输出重定向到另一个文件。
nohup php myscript.php >myscript.output 2>&1 &
此命令将运行您的脚本并将所有输出(标准和错误)发送到文件 myscript.output,该文件将在您每次运行程序时重新创建。
最后的 & 使脚本在后台运行,因此您可以在运行或注销时执行其他操作。
【讨论】:
【参考方案2】:一个简单的方法是通过 nohup 运行它:
nohup php myScript.php &
【讨论】:
请注意,脚本在终止后不会自动重新启动。【参考方案3】:如果您在@987654321@
中运行php 命令,分离screen
,那么当您关闭控制台时它不会终止。
Screen 是一种终端多路复用器,可让您通过一个物理终端管理多个进程。每个进程都有自己的虚拟窗口,您可以在与每个进程交互的虚拟窗口之间跳转。 screen 管理的进程在它们的窗口不活动时继续运行。
【讨论】:
我和你说的一样,但目前我不知道为什么我的脚本停止在屏幕上执行。一旦我退出屏幕并再次将其放入屏幕,它就会正常工作,所以你知道这背后的主要原因是什么以上是关于如何通过命令行运行 php 脚本(并在注销后保持运行)的主要内容,如果未能解决你的问题,请参考以下文章
在我单击注销按钮之前,如何在 php 中保持会话? [复制]