Недавно мы перешли на инстансы AWS EC2 с дистрибутивом Amazon Linux.
На наших старых серверах (RH Enterprise) мы смогли запустить команду в фоновом режиме (&
), а также перенаправить вывод в файл журнала, как показано ниже:
php /path/to/script > log.txt &
Однако в AWS это больше не работает. log.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 /]$
Я почти уверен, что это связано с вашей конфигурацией /etc/php.ini или способом компиляции пакета php для Amazon Linux. Я пробовал на 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.
вы можете попробовать сделать это в том же каталоге, где находится ваш журнал?
echo "test" > log.txt
Это может привести к дисквалификации файловой системы и опциям файловой системы только для чтения.
Также вы можете использовать экран ?? человек экран
Странно ... у меня он работает, en amazon, но Debian.
root@domU-12-31-39-0F-31-10:/home/try$ php i.php It's big, it's heavy, it's wood! 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]+ Done 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 It's big, it's heavy, it's wood!
Попробуйте запустить его с nohup
nohup php /path/to/script > log.txt &