실행하는 데 시간이 걸리는 스크립트가 있는데 화면을 사용하여 실행하고 있습니다.
ssh user@host screen -dm "python dostuff.py"
이제 문제는 dostuff.py가 실행을 완료한 후 스크린 세션을 종료하는지 확인하는 방법입니다. 오류로 인해 또는 올바르게 종료되었습니다.
답변1
이것은 아마도 "해결 방법" 범주에 속하지만 명령(예제에서는 "python dostuff.py")을 쉘 스크립트에 넣은 다음 실행하여 목표로 하는 것을 달성할 수 있었습니다.... screen -d -m "/path/to/that/script"
버전 정보:
$ screen -v
Screen version 3.09.10 (FAU) 4-Sep-01
내 시스템에 꽤 오래된 버전의 화면이 있는 것 같습니다. 최신 버전에서는 화면 동작이 자동 종료로 변경되었을 수 있나요?
$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ screen -dm "ls"
$ screen -ls
There is a screen on:
32112694.ls (Detached)
1 Socket in /tmp/uscreens/S-username.
(스크린-r; 종료)
$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ cat runme
#!/bin/sh
sleep 6
ls > now
$ screen -d -m ./runme
$ ps -ef|grep sleep
username 9633926 9437204 0 14:55:23 pts/1 0:00 grep sleep
username 15532242 10223670 0 14:55:21 pts/6 0:00 sleep 6
(6초 정도 기다리세요)
$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ ls now
now
이 과정을 진행하면서 깨달은 한 가지는 내 화면 버전에서 -dm
; 뒤에 세션 이름이 있어야 한다는 것입니다. 명령 매개변수를 전달하려면 -d
와 를 분리해야 합니다 .-m
다음을 사용해 보세요:
ssh user@host screen -d -m python dostuff.py
-S
세션 이름을 구체적으로 지정할 수 있습니다 .