2012-03-01 148 views
1

我有一个php脚本,负责根据数据库中包含的队列发送电子邮件。通过shell在后台运行php脚本 - 脚本从不在mac os上执行x

当它从我的壳这样执行的脚本工作:

在/ usr/bin中/ PHP -f /folder/email.php

然而,当我执行它在后台运行:

在/ usr/bin中/ PHP -f /folder/email.php>的/ dev/null的&

它永远不会完成,并且该过程刚好坐在进程队列:

的ClickOnce:PSŤ

PID TT STAT TIME COMMAND

1246个S000 SS 0:00.03登录-pf

1247 S000秒0:00.03 -bash

1587 S000Ť0:00.05/USR /斌/ PHP -f /folder/email.php

1589 S000 R + 0:00.00 ps的牛逼

所以我的问题是我怎么能运行此作为背景PROCES并让它实际执行?我需要配置我的操作系统吗?我是否需要改变执行命令的方式?

回答

1

“STAT”列中的“T”表示停止的过程。我猜你的脚本正试图从标准输入读取输入,并且正在停止,因为它不是前台进程,因此不允许读取。

您应该检查脚本是否确实在执行时读取了某些内容。

+0

在这种情况下require_once语句或数据库读取是否被认为是stdin? – dirknibleck 2012-03-01 20:17:49

+0

从终端读取是从标准输入读取。作为一个实验,看看会发生什么,如果你尝试重定向来自/ dev/null的输入 – Perry 2012-03-01 20:46:48

+0

我将如何形成该声明?/usr/bin/php -f /folder/email.php dirknibleck 2012-03-01 22:45:18