11

我有一个无限循环的 PHP 脚本。我需要这个脚本永远运行。所以,我跑

php /path/to/script.php > /dev/null &

它在我当前用户的安全上下文中在后台运行。但是当我关闭终端窗口(注销)时,当然,CentOS Linux 会杀死我的程序。

我看到两个猜测:在后台从不同的用户运行或创建一个守护程序。在每种情况下我都需要帮助。

非常感谢!

4

5 回答 5

25

nohup 是你的朋友。

nohup command &
于 2010-03-23T10:48:05.160 回答
6

我认为一般的解决方案是nohup

nohup 是一个忽略 HUP(挂起)信号的 POSIX 命令,使命令在发出命令的用户注销后继续运行。HUP(挂断)信号按照惯例是终端根据注销进程发出警告的方式。

nohup 最常用于在后台作为守护进程运行命令。如果尚未重定向,通常会发送到终端的输出将发送到名为 nohup.out 的文件。当需要运行大量相互依赖的批处理作业时,此命令非常有用。

于 2010-03-23T10:48:21.463 回答
1

nohup 是你的朋友。

于 2010-03-23T10:48:50.150 回答
1

你可以:

  • 安装屏幕并从那里运行命令。screen 是一个持久的终端会话,您可以让它继续运行。
  • 编写一个 init/upstart(无论您使用什么)脚本,以便在启动时加载
  • 使用梨库system_daemon
  • 如果批处理工作更适合场景,请使用 cron(请记住在启动另一个实例之前检查正在运行的实例,如果并发是一个问题)
  • 编辑:或者正如其他所有人和他们的兄弟刚刚所说的那样,nohup
于 2010-03-23T10:51:57.930 回答
0

使用命令

nohup your_command &

例如
nohup phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003 &

这里 "phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003" 是我的命令

于 2016-11-28T12:10:48.880 回答