Я хочу определить такое 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 для того, чтобы обнаружить это?
Вы можете использовать удобный инструмент, такой как 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 секунд (или любое число, с которым вам удобно), то у вас есть сценарий прочитал данные и обрабатывать его, однако, что вы хотите.
Джобс проходит через Cron
, Crontab
, не выполняется в том же среде выполнения, которая у вас на рабочем столе. Ни один из ваших Путь
Изменения или другие настройки переменной среды автоматически распространяются на работу CRON
. Например, нет $ дисплей
, поэтому программы GUI нуждаются в специальном лечении (прочитайте человек Xhost
).
Можно устанавливать переменные среды для всех CRON
заданий в Crontab
файл
Читать Человек 5 Crontab
.
Посмотрите на результаты echo "=== set ==="; set; echo "=== env ==="; env | Сортировка; echo "=== псевдоним ==="; псевдоним
в каждой из ваших сред.
Поскольку команда
часть строки Crontab
, по умолчанию, интерпретируется / bin / sh
, который имеет более простой синтаксис, чем / bin / bash
, я рекомендую иметь команду
быть вызовом в Bash
скрипт (исполняемый, установленный, запускается с #! / bin / bash
) который устанавливает среду, затем вызывает желаемую программу.