2010-03-23 32 views
11

我有一个无限循环的PHP脚本。我需要这个脚本永远运行。所以,我跑如何在Linux的后台运行无限脚本?

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

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

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

非常感谢!

+0

可能重复的http://stackoverflow.com/questions/285015/linux-prevent-a-background-process-from-being-stopped-after-closing-ssh-client – Ether 2010-04-10 17:07:16

回答

24

nohup是你的朋友。

nohup command & 
+0

太简单了!谢谢! – 2010-03-23 10:49:26

6

我认为,一般的解决方法是nohup

nohup的是POSIX命令忽略HUP(挂起)信号,使命令,以保持谁发出命令的用户运行后已注销。按照惯例,HUP(挂断)信号是终端警告取决于注销过程的方式。

nohup最常用来作为守护程序在后台运行命令。如果输出没有被重定向,那么通常会去往终端的输出会转到名为nohup.out的文件。当需要运行多个相互依赖的批处理作业时,该命令非常有用。

1

您可以:

  • 安装屏幕,并从那里运行命令。屏幕是一个持久的终端会话,您可以继续运行。所以它加载在开机
  • 写一个init /暴发户(不管你使用)脚本
  • 使用PEAR的lib system_daemon
  • 使用cron如果批量工作符合情况较好(只记得检查后才能启动运行实例另外,当且仅当并发问题)
  • 编辑:或其他人一样和他们的兄弟刚才说的,nohup
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 “是我的命令