화면상의 작업이 언제 완료되었는지 어떻게 알 수 있나요?

화면상의 작업이 언제 완료되었는지 어떻게 알 수 있나요?

스크린 세션 내에서 실행된 스크립트가 완료되었는지 알 수 있습니까? 를 입력하여 스크립트를 볼 수 있습니다 . 스크립트가 완료되면 종료 jobs하고 싶습니다 . screen session어떻게 해야 합니까? 아니면 스크립트가 성공적으로 실행된 후 화면이 자동으로 종료되도록 할 수 있습니까? 한 번에 72개의 스크린 세션을 실행하고 있으므로 이 작업을 수동으로 수행하는 것은 편리하지 않습니다. 스크린 세션에서 작업 상태를 자동으로 확인하여 인쇄하고 stdout, 실행 중인 작업이 완료되면 세션을 종료할 수 있는 방법이 있으면 screen좋을 것입니다 .

답변1

명령 1과 2를 연결하면 됩니다 your_script.kill this screen session

그것을 foo.sh당신의 스크립트로 만드십시오. 스크린 세션을 종료하는 명령은 입니다 kill. shell/bash 명령이 현재 진행 중인 screen 세션을 종료하도록 screen -X하려면 screen 세션에 실행된 명령을 사용합니다 . screen -X kill당신은 것입니다

screen -S the_session_for_my_job

스크린 세션을 생성하면

/path/to/foo.sh; screen -X kill

이렇게 하면 창 수에 관계없이 screen 세션이 종료되며 foo.sh가 완료된 후에 종료됩니다.

보다 정교한 접근 방식은 프로세스 ID를 관찰하고 특정 PID가 사라질 때 kill 명령을 실행하는 것입니다.

모니터링하려는 프로세스의 PID를 12345로 설정합니다. 그러면 당신은 그럴 것이다

while ps a | grep ^12345;do sleep 2; done; screen -X kill

while 루프는 프로세스 목록에 PID 12345가 있는 프로세스가 있는지 모니터링합니다. 이러한 프로세스가 존재하면 2초 동안 Sleep 상태를 유지한 후 다시 확인합니다. 해당 PID를 가진 프로세스가 없으면 while 루프가 종료됩니다. 그런 다음 kill 명령을 실행하십시오.

답변2

나는 다음 내용이 포함된 이메일을 사용합니다.

command | mail-s job_output [email protected]; exit

또는 이미 실행 중인 경우 완료 시 실행할 명령을 입력(또는 출력이 많은 경우 복사하여 붙여넣기)할 수 있습니다.

echo $STY done | mail -s job_done [email protected]; exit

관련 정보