【发布时间】:2013-07-28 12:58:27
【问题描述】:
我有一个简短的 php 实用程序脚本,我只需使用以下命令从 cli 运行它:
php myscript.php
脚本始终在运行,定期执行一些任务(与问题无关)。它不需要用户的任何输入。
运行后我一般按CTRL+z然后运行bg把进程放到后台,一切正常。
如果我运行它:
php myscript.php &
脚本在启动时置于后台,但它也处于停止状态。示例:
[1] 11513
[1]+ Stopped php myscript.php
即使此时运行 bg 也无济于事,我必须运行 fg,然后再次运行 CTRL+z 和 bg 才能成功工作。
这是 php 脚本:
<?
while(true){
echo 'hi '.time()."\n";
sleep(30);
}
?>
我的问题是我不能直接在后台运行它,因为系统停止了它,我不明白为什么。我该如何解决这个问题?
更新:
我制作了相同脚本的 bash 版本,它可以运行并放入后台(运行和不停止),只需在最后加上 & 启动它 (script.sh &)
script.sh:
#!/bin/bash
while true; do
echo `date`
sleep 30
done
为什么 php 脚本在后台启动后停止,而 bash 脚本却没有? 什么可能导致这种不同的行为?
【问题讨论】:
-
很高兴知道投票关闭问题的用户的原因
-
首先,这与专业的系统管理没有明显的联系。其次,您说您的脚本任务“与问题无关”,但很明显它们是相关的并且应该被描述。
-
为什么要明显?如果我说它不相关,它不相关:脚本只包含一个带睡眠的 while(true) :) 顺便说一句,我将它添加到我的问题中,所以它可以帮助理解它有多(不)相关。就问题而言,与它将执行什么任务无关。它直接与专业的系统管理连接,因为我在我的一台 linux 服务器中使用了这个脚本(备份目的,添加一些细节)。
标签: linux bash scripting shell php