Перезаписать файл с помощью stdoutput из выполнения cron

Меня беспокоят 2 пункта

  • PID-файлов, с которыми я не знаком, но я бы предложил использовать pgrep в качестве обходного пути.
  • ds4drv кажется демоном, но udev поддерживает только краткосрочные процессы.

    RUN {type}

    ...

    Может использоваться только для очень коротких задач переднего плана. Запуск процесса события в течение длительного периода времени может заблокировать все дальнейшие события для этого или зависимого устройства.

    Запуск демонов или других длительно выполняющихся процессов не подходит для udev; разветвленные процессы, независимо от того, отсоединены они или нет, будут безоговорочно уничтожены после завершения обработки события.

Сделайте копию этого сценария:

#!/bin/bash
# DS4 Check Script

pgrep ds4drv || ds4drv --hidraw --config /home/user/.config/ds4drv.conf & disown
0
14.03.2019, 17:37
2 ответа

Перенаправления >> будут добавлены, а > перезаписаны. Просто интересно, если не хранить исторические данные, почему бы не отправить их по почте?

1
28.01.2020, 02:30

Чтобы перезаписывать файл журнала при каждом выполнении скрипта, замените оператор >>оператором >.

Оператор >>добавляет выходные данные в файл при каждом выполнении, и при таком подходе у вас будет постоянно растущий файл.

Оператор >"затирает" файл при каждом выполнении, что приводит к удалению любых существующих данных перед записью перенаправленного вывода.

Если сделать еще один шаг, можно просто направить потоки вывода и ошибок из скрипта напрямую в команду mailx:

/srv/python/proj/acquisizione/acquisizioneAOK.sh 2>&1 | mailx -s "Cron output: acquisizioneAOK" marco.fumagalli@mymail.com
2
28.01.2020, 02:30

Теги

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