У меня есть cronjobs, которые выполняют PHP файлы в заранее определенные моменты времени. Эти скрипты могут занять более часа. Я хочу иметь возможность физически контролировать сценарии. У меня журналы, конечно, и множество способов обработки ошибок, но иногда мне просто нравится видеть, что происходит.
Раньше я делал это в Windows, где планировал задачу, которая запускалась бы в оболочке, которая оставалась бы открытой во время выполнения задачи.
Могу ли я сделать это в Linux? Использование SSH? Что-то, возможно, похоже на использование screen
с помощью cron? Я использую версию Linux для AWS.
Спасибо.
Вы можете вывести вывод cronjob в файл журнала, и вы можете использовать инструменты unix (хвост, часы и т.д.) Для просмотра всего выходного файла, как это происходит, например, следующие перенаправления STDERR, а также STDOUT в файл журнала:
/usr/bin/really_long_script.sh > /tmp/script.log 2>&1
tail -f /tmp/script.log
Самый простой (хотя и грязно грязный) способ сделать это - установить переменную среды в crontab:
* * * * * THIS_IS_A_CRON=1 /path/to/script
Затем, чтобы убедиться, что они работают на вашем компьютере:
ps auxe | grep THIS_IS_A_CRON
Это будет список всех процессов (если они есть), которые были запущены с переменной среды THIS_IS_A_CRON
Если все, что вам нужно, это окно, в котором вы можете видеть вывод скрипта во время его запуска, это действительно ничего не отличается от наличия:
* * * * * /path/to/script 2>&1 >> /random/output/file.txt
И открытие терминала, который tail
файла:
tail -100f /random/output/file.txt
tail
будет, потому что и stdout
и stderr
настроены на добавление в случайный файл, который будет выводиться на ваш экран через tail
Если скрипт генерирует выходные данные, которые вы хотите отслеживать, позвольте ему зарегистрировать это и использовать хвост -f в журнале.
Использование экрана для этого является излишним.