亚马逊Linux:不能logging后台任务输出?

我们最近移到了AWS EC2实例和Amazon Linux发行版。

在我们的旧服务器(RH Enterprise)上,我们已经能够在后台运行一个命令( & ),并将输出redirect到日志文件,如下所示:

php /path/to/script > log.txt &

但是,这不再适用于AWS。 log.txt被创build,但是是空的。

如果我放弃&,所以任务运行在前台( php /path/to/script > log.txt ),它的工作原理和log.txt包含数据。

我在这里做错了什么和/或我能做些什么来获得脚本的输出再次logging?

提前致谢。


以下是正在发生的事情的代码示例:

 [ec2-user@ip /]$ cat logtest.php <?php echo "It's big, it's heavy, it's wood!\n"; ?> [ec2-user@ip /]$ php logtest.php > log.txt [ec2-user@ip /]$ cat log.txt It's big, it's heavy, it's wood! [ec2-user@ip /]$ rm log.txt [ec2-user@ip /]$ php logtest.php > log.txt & [3] 6649 [ec2-user@ip /]$ <I waited 5 seconds and pressed enter here> [3]+ Stopped php logtest.php > log.txt [ec2-user@ip /]$ cat log.txt [ec2-user@ip /]$ ll log.txt -rw-rw-r-- 1 ec2-user ec2-user 0 Jan 3 00:30 log.txt [ec2-user@ip /]$ 

我很确定这与你的/etc/php.iniconfiguration有关,或者是为Amazon Linux编译php包的方式。 我在MacOS上试过,它也能正常工作。 你能比较一下你在本地的和AWS中的吗?

在两台机器上尝试以下操作。 创build一个名为logtest.sh的脚本

 #!/bin/bash echo "It's big, it's heavy, it's wood!\n" 

然后运行:

 chmod 777 logtest.sh ./logtest.sh > log.txt & 

如果它在两台机器上工作,那肯定是一个PHPconfiguration问题。

尝试用nohup运行它

 nohup php /path/to/script > log.txt & 

奇怪的…它适用于我,亚马逊,但Debian。


 root @ domU-12-31-39-0F-31-10:/ home / try $ php i.php
它很大,很重,是木头!

 root @ domU-12-31-39-0F-31-10:/ home / try $ php i.php> loh.txt&
 [1] 8928
根@ domU的-12-31-39-0F-31-10:/家庭/ $尝试
 [1] +完成php i.php> loh.txt
根@ domU的-12-31-39-0F-31-10:/家庭/ $尝试
 root @ domU-12-31-39-0F-31-10:/ home / try $ cat loh.txt
它很大,很重,是木头!

你也可以使用屏幕 ? 人屏幕

你可以尝试这样做,在你的日志是在同一个目录?

 echo "test" > log.txt 

这可能会导致文件系统不满,只读文件系统选项。