Как запустить команду в фоновом режиме и уведомить меня по электронной почте, когда закончите - PullRequest
4 голосов
/ 03 июня 2010

У меня есть следующая команда, для запуска которой потребуются целые годы (пара часов). Я хотел бы сделать это фоновым процессом и отправить его по электронной почте, когда это будет сделано.

Для вишни сверху все ошибки, с которыми она сталкивается, должны записываться в текстовый файл при возникновении ошибки?

find . -type f -name "*.rm" -exec ./rm2mp3.sh \{} \; -exec rm \{} \;

Как я могу сделать это с моей вышеупомянутой командой?

1 Ответ

9 голосов
/ 03 июня 2010
yourcommand 2>&1 | mail -s "yourcommand is done" yourname@example.com

Бит 2>&1 говорит: «Делайте мои ошибки как обычный вывод», а остальные - «Возьмите обычный вывод и отправьте его мне с хорошей строкой темы»

Обратите внимание, что он не работает в csh семействе оболочек, только в Bourne (sh, bash, ksh ...), AFAIK. Таким образом, запустить под #!/bin/sh или #!/bin/bash. (N.B. Вы можете передать оба дескриптора в csh, используя yourcommand |& mail ..., но только сумасшедший пишет сценарии, используя csh.)

UPDATE:

Как бы я записал ошибки в файл журнала, а затем просто отправил бы свое электронное письмо по завершении?

если вы имеете в виду просто по электронной почте тот факт, что это сделано,

yourcommand 1>/dev/null 2>mylogfile ; (echo "done!" | mail -s "yourcommand is done")

если вы имеете в виду просто отправлять сообщения об ошибках по электронной почте (в этом случае вам не нужен файл журнала) ( исправлено как @ Trey сказал),

yourcommand 2&>1 1>/dev/null | mail -s "yourcommand is done" yourname@example.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...