Amazon Linux:无法记录后台任务输出?

Amazon Linux:无法记录后台任务输出?

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

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

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

然而,这在 AWS 上不再有效。日志.txt已创建,但是为空。

如果我省略 &,那么任务将在前台运行(php /path/to/script > log.txt),它就可以工作并且 log.txt 包含数据。

我在这里做错了什么和/或我可以做些什么才能再次记录我的脚本的输出?

提前致谢。


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

[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 /]$

答案1

我很确定这与您的 /etc/php.ini 配置或为 Amazon Linux 编译 php 包的方式有关。我在 MacOS 上试过,它也运行正常。您能比较一下您本地的和 AWS 上的吗?

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

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

然后运行:

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

如果它在两台机器上都能正常工作,那么肯定是 php 配置问题。

答案2

尝试运行它nohup

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

答案3

奇怪...它对我有用,在亚马逊上,但在 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
root@domU-12-31-39-0F-31-10:/home/try$
[1]+ 完成 php i.php > loh.txt
root@domU-12-31-39-0F-31-10:/home/try$
root@domU-12-31-39-0F-31-10:/home/try$ cat loh.txt
它很大、很重,它是木头!

答案4

您可以尝试在日志所在的同一目录中执行此操作吗?

echo "test" > log.txt

它可能会取消文件系统完整和只读文件系统选项的资格。

相关内容