nohup은 백그라운드 프로세스가 완료되거나 오류가 발생하면 이메일 알림을 보냅니다.

nohup은 백그라운드 프로세스가 완료되거나 오류가 발생하면 이메일 알림을 보냅니다.

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되고 삭제됩니다.

관련 정보