Назад | Перейти на главную страницу

Amazon Linux: не удается записать вывод фоновой задачи?

Недавно мы перешли на инстансы 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 &