Проверьте, пишет ли Cronjob еще в файл журнала

Я хочу определить такое Cronjob:

@hourly /path/to/my/script.sh &> "/path/to/my/logs/$(date +%Y-%m-%d_%H-%M-%S.txt)"

Так что он должен написать вывод скрипта в файл журнала. Теперь я хочу сделать второй скрипт (желательно с PHP), который читает все файлы в / Path / to / my / logs / и отправляет файлы по почте. Не должно быть проблемой создать такой скрипт, но мне интересно, как я могу определить, сделан ли Cronjob, который создал файл, и больше не пишут в файл. Я не хочу отправлять файл, который был создан, но Cronjob по-прежнему пишет.

Существует ли общий способ обнаружить это, а также путь в PHP для того, чтобы обнаружить это?

0
задан 4 March 2021 в 18:34

2 ответа

Вы можете использовать удобный инструмент, такой как Generator Crontab , чтобы построить определение задания. Чтобы запустить работу почасовой, вы можете сделать что-то вроде этого:

0 * * * * /path/to/script.sh > /path/to/output/log_$(date +\%Y-\%m-\%d).txt >/dev/null 2>&1

Оттуда вы можете использовать свой сценарий PHP функцию функцию , чтобы получить последний раз, когда файл был изменен Отказ Если задание CRON требует x секунд для запуска x секунды, и выходной файл имеет дату изменения в x + 60 секунд (или любое число, с которым вам удобно), то у вас есть сценарий прочитал данные и обрабатывать его, однако, что вы хотите.

1
ответ дан 18 March 2021 в 23:29

Джобс проходит через Cron , Crontab , не выполняется в том же среде выполнения, которая у вас на рабочем столе. Ни один из ваших Путь Изменения или другие настройки переменной среды автоматически распространяются на работу CRON . Например, нет $ дисплей , поэтому программы GUI нуждаются в специальном лечении (прочитайте человек Xhost ).

Можно устанавливать переменные среды для всех CRON заданий в Crontab файл Читать Человек 5 Crontab .

Посмотрите на результаты echo "=== set ==="; set; echo "=== env ==="; env | Сортировка; echo "=== псевдоним ==="; псевдоним в каждой из ваших сред.

Поскольку команда часть строки Crontab , по умолчанию, интерпретируется / bin / sh , который имеет более простой синтаксис, чем / bin / bash , я рекомендую иметь команду быть вызовом в Bash скрипт (исполняемый, установленный, запускается с #! / bin / bash ) который устанавливает среду, затем вызывает желаемую программу.

0
ответ дан 18 March 2021 в 23:29

Другие вопросы по тегам:

Похожие вопросы: