【问题标题】:How to run a php script through the command line (and keep it running after logging out)如何通过命令行运行 php 脚本(并在注销后保持运行)
【发布时间】:2010-10-09 04:31:07
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

    标签: php debian putty remote-server


    【解决方案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 管理的进程在它们的窗口不活动时继续运行。

      【讨论】:

      • 我和你说的一样,但目前我不知道为什么我的脚本停止在屏幕上执行。一旦我退出屏幕并再次将其放入屏幕,它就会正常工作,所以你知道这背后的主要原因是什么
      猜你喜欢
      • 2014-06-03
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2021-07-06
      相关资源
      最近更新 更多