уведомление по электронной почте после завершения или ошибки фонового процесса nohup

Просто командой cut:

echo "pandi/sha/Dev/bin/boot" | cut -d'/' -f2-
sha/Dev/bin/boot

  • -d'/'-разделитель полей

  • -f2--диапазон полей для вывода(-f<from>-<to>; в нашем случае :от 2до последнего)

0
07.08.2019, 13:45
1 ответ

Один из вариантов — сделать рассылку в фоновом режиме.:

for afolder in "$dir"/dothis*; do
    nohup sh -c '
        outfile=$(mktemp)

        if nice COMMAND "$1" >"$outfile" 2>&1; then
            success_or_fail="success"
        else
            success_or_fail="failure"
        fi

        tail "$outfile" |
        mail -s "job done ($success_or_fail)" myemail@here.com

        rm "$outfile"' sh "$afolder" &
done

Это делает тот же цикл, что и вы, но затем запускает дочерний скрипт, работающий под nohup. Этот скрипт принимает текущее значение $afolderв качестве первого аргумента командной строки и запускает команду в операторе if. Он устанавливает success_or_failсоответствующим образом в зависимости от результата команды, а затем отправляет электронное письмо.

Весь вывод команды перенаправляется во временный файл, который затемtail-используется для электронной почты и удаляется при выходе из оболочки.

0
28.01.2020, 03:23

Теги

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