我们最近使用 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
它可能会取消文件系统完整和只读文件系统选项的资格。