nohup을 통해 실행하는 백그라운드 프로세스가 실패하거나 완료되면 어떻게 이메일을 보내나요? for 루프에서 nohup을 통해 많은 백그라운드 프로세스를 실행하고 있습니다.
for afolder in $dir/dothis*
do
nohup nice COMMAND afolder &
done
백그라운드 프로세스 때문인 것 같아요.
nohup nice COMMAND afolder & ; tail nohup.out | mail [email protected] -s "job done"
완료되었을 때가 아니라 실행되었을 때 이메일을 받습니다. 프로세스가 완료되지 않았거나 성공적으로 완료되었는지 여부에 따라 다른 이메일 제목을 보내려면 어떻게 해야 합니까?
미리 감사드립니다!
답변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)" [email protected]
rm "$outfile"' sh "$afolder" &
done
이것은 당신과 동일한 루프를 수행하지만 아래에서 실행되는 아래 첨자를 시작합니다 nohup
. 스크립트는 $afolder
첫 번째 명령줄 인수로 현재 값을 사용하고 if
명령문에서 명령을 실행합니다. success_or_fail
명령 결과에 따라 적절한 설정을 지정한 후 이메일을 보냅니다 .
명령의 모든 출력은 임시 파일로 리디렉션된 다음, tail
쉘이 종료되면 이메일이 -ed되고 삭제됩니다.