다음은 프로세스가 완료/종료될 때 알림을 받는 것에 대한 몇 가지 질문과 대답입니다(1,2) - 그러나 이것들은 모두 사용자가 해당 프로세스를 스스로 시작했다고 가정하므로 관리 스크립트에 내장된 경고를 사용하여 스크립트를 작성하거나 프로세스를 일종의 경고에 전달할 수 있습니다.
내 상황은 사용자가 초기화하지 않은 프로세스의 완료/종료에 대한 경고를 받고 싶습니다. 즉, 저는 Ubuntu 12.04 LTS 서버에서 많은 수의 비디오 파일을 일괄 처리하고 있습니다. 이러한 파일에 대한 일부 작업은 시간이 오래 걸리므로 특정 작업이 완료되면 일종의 알림(이메일이 좋을 것임)을 받고 싶습니다. 시간이 너무 오래 걸리므로 PIT를 기반으로 한 번에 수동으로 수행하는 것이 완벽합니다.
더 많은 정보를 제공하기 위해 - 제가 특히 큰 파일을 작업하고 있는데 그 파일이 FFMPEG 스크립트로 발전했다는 것을 알게 되었다고 가정해 보겠습니다. 이 스크립트 자체는 Python 스크립트입니다(매우 복잡하고 제가 작성한 것이 아니며 제가 작성한 몇 가지 사항이 있습니다). 수정을 원하지 않습니다. 이것이 첫 번째 논리적 접근 방식이기는 하지만). 실행 중인 Python 스크립트의 PID를 매개변수로 사용하여 명령이나 스크립트를 실행하고 해당 PID가 있는 프로세스가 더 이상 실행되지 않을 때 경고 스크립트가 해당 작업을 수행하도록 하는 것을 상상해 봅니다.
어떤 아이디어가 있나요?
답변1
이 같은?
(while kill -0 $pid; do sleep 1; done) && echo "finished"
$pid
프로세스 ID와 echo "finished"
프로세스가 종료될 때 수행할 작업 으로 바꿉니다 .
예를 들어:
(while kill -0 $pid; do sleep 1; done) && mail ...
답변2
나는 썼다process_watcher.py
process_watcher --pid 1234 --to [email protected]
현재 이메일 본문은 다음과 같습니다.
PID 18851: /usr/lib/libreoffice/program/soffice.bin --writer --splash-pipe=5
시작: 3월 10일 목요일 18:33:37 종료: 3월 10일 목요일 18:34:26( 기간 0:00 :49)
메모리(현재/피크) - 상주: 155,280 / 155,304 kB 가상: 1,166,968 / 1,188,216 kB
[+] indicates the argument may be specified multiple times, for example:
process-watcher -p 1234 -p 4258 -c myapp -c "exec\d+" --to [email protected] --to [email protected]
optional arguments:
-h, --help show this help message and exit
-p PID, --pid PID process ID(s) to watch [+]
-c COMMAND_PATTERN, --command COMMAND_PATTERN
watch all processes matching the command name. (RegEx pattern) [+]
-w, --watch-new watch for new processes that match --command. (run forever)
--to EMAIL_ADDRESS email address to send to [+]
-n, --notify send DBUS Desktop notification
-i SECONDS, --interval SECONDS
how often to check on processes. (default: 15.0 seconds)
-q, --quiet don't print anything to stdout
개선이 필요한 경우 GitHub 이슈를 생성해 주세요.
답변3
나는 &&
첫 번째 명령이 성공적으로 완료된 후 두 번째 명령을 실행하는 데 익숙합니다. 여기 몇 가지 예가 있어요.
큰 폴더를 삭제하고 경고음이 울립니다.
rm -rv ~/tmp && beep
커널을 컴파일하고 이메일을 보냅니다:
make && mail -s "Compilation is done" [email protected]
이것이 귀하의 문제에 대한 좋은 해결책입니까? 또 다른 경우에는 ||
실패할 경우를 대비해 세 번째 명령을 추가할 수 있습니다.
추가적으로 쉘 스크립트는 다음을 수신할 수 있습니다.종료 상태( $?
) 명령을 사용하고 if/else
반복하여 원하는 것은 무엇이든 할 수 있습니다.
답변4
프로세스가 종료되면 컴퓨터에 테더링할 필요가 없도록 Android 휴대폰에 알림을 보내는 앱을 만들었습니다.
설치하고 ;notifier.sh
명령 끝에 추가하십시오.
예를 들어, 명령이 이면 make install
다음 명령을 실행합니다.
make install; notifier.sh