1

На моем CentOS я пытаюсь выполнить сценарий php, который содержит бесконечный цикл, чтобы сделать некоторые интересные вещи внутри. Неважно, что бесконечный цикл не может быть точным решением для большинства случаев, но это для моего теста. Если в этом цикле происходит ошибка, она записывается в выходной файл (как и все из stdout). Это то, что я делаю в данный момент.

exec php testfile.php >> output.log 2>&1

Это работает, как и ожидалось, но я хочу знать, когда stdout или stderr что-то записывает в файл, поэтому мне нужна временная метка в каждой строке.

Я уже пытался что - то вроде этого, но если я сделаю это , как упоминалось, там просто нет вывода на всех (я подозреваю , что это из - за не быть простой скрипт).

Можно ли перенаправить каждый echo файл из testfile.php и каждую ошибку из stderr в output.log с отметкой времени в каждой строке?

1 ответ1

2

Вы можете поставить перед каждой строкой отформатированную строку даты и времени, используя gnu awk. Однако буферизация может привести к переупорядочению некоторых строк или исчезновению последней пары. Чтобы избежать этого, рекомендуется использовать stdbuf .

stdbuf -i0 -o0 php testfile.php  2>&1 | gawk '{print strftime("%Y%m%d-%H%M%S"), $0}' >> output.log 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .