как указать точную дату для atd

Наивное решение

Я предполагаю, что имена файлов в ваших журналах совпадают с глобусом /xx/xx/logs/xx/*.log и что вы хотите отправить почту по адресу somebody@host.com

newest=$(ls -rt /xx/xx/logs/xx/*.log | tail -n 1)
echo 'An error occured' | mutt somebody@host.com -s "Logs" -a "$newest"

Этот подход работает, если файлы имеют хорошие имена. В общем, однако, анализ результатов работы ls ненадежен.

Более надежное решение

Это позволяет избежать использования ls и будет безопасно для любых и всех имён файлов:

inode=$(find /xx/xx/logs/xx/ -maxdepth 1 -type f -iname '*.log' -printf '%T@ %i\n' | sort -rn | awk '{print $2;exit;}')
newest=$(find /xx/xx/logs/xx/ -maxdepth 1 -inum "$inode")
echo 'An error occured' | mutt somebody@host.com -s "Logs" -a "$newest"

Тестирование, чтобы увидеть, какой файл выбран

Чтобы увидеть, какой файл самый новый, не отправляя его по электронной почте, запустите:

inode=$(find /xx/xx/logs/xx/ -maxdepth 1 -type f -iname '*.log' -printf '%T@ %i\n' | sort -rn | awk '{print $2;exit;}')
newest=$(find /xx/xx/logs/xx/ -maxdepth 1 -inum "$inode")
echo "newest file is $newest"
-1
19.12.2017, 00:18
0 ответов

Теги

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