Меня беспокоят 2 пункта
pgrep
в качестве обходного пути. ds4drv
кажется демоном, но udev
поддерживает только краткосрочные процессы.
RUN {type}
...
Может использоваться только для очень коротких задач переднего плана. Запуск процесса события в течение длительного периода времени может заблокировать все дальнейшие события для этого или зависимого устройства.
Запуск демонов или других длительно выполняющихся процессов не подходит для udev; разветвленные процессы, независимо от того, отсоединены они или нет, будут безоговорочно уничтожены после завершения обработки события.
Сделайте копию этого сценария:
#!/bin/bash
# DS4 Check Script
pgrep ds4drv || ds4drv --hidraw --config /home/user/.config/ds4drv.conf & disown
Перенаправления >> будут добавлены, а > перезаписаны. Просто интересно, если не хранить исторические данные, почему бы не отправить их по почте?
Чтобы перезаписывать файл журнала при каждом выполнении скрипта, замените оператор >>
оператором >
.
Оператор >>
добавляет выходные данные в файл при каждом выполнении, и при таком подходе у вас будет постоянно растущий файл.
Оператор >
"затирает" файл при каждом выполнении, что приводит к удалению любых существующих данных перед записью перенаправленного вывода.
Если сделать еще один шаг, можно просто направить потоки вывода и ошибок из скрипта напрямую в команду mailx
:
/srv/python/proj/acquisizione/acquisizioneAOK.sh 2>&1 | mailx -s "Cron output: acquisizioneAOK" marco.fumagalli@mymail.com