PHP를 사용하여 SSH를 통해 프로그램을 시작하고 싶습니다. 훌륭하게 작동하지만 이제 PHP를 사용하여 화면을 종료하고 싶지만 제가 아는 유일한 것은 화면 이름뿐입니다. 화면 ID를 (자동으로) 찾는 방법은 무엇입니까?
답변1
환경 변수를 사용하여 $STY
현재 화면 세션에 있는지 여부와 현재 세션의 이름을 확인할 수 있습니다.
예
처음에는 스크린 세션이 아닌 터미널 창에 앉아 있습니다.
$ echo $STY
$
화면 세션을 시작합니다.
$ screen -ls
There is a screen on:
31543.tscrn (Detached)
1 Socket in /var/run/screen/S-saml.
그것에 연결하십시오 :
$ screen -r 31543.tscrn
화면 내 세션:
$ echo $STY
31543.tscrn
$
세션 종료
종료하는 데 사용할 수 있는 세션의 이름입니다 screen
.
$ screen -X -S tscrn kill
거기에서 번호를 사용할 수도 있습니다.
$ screen -X -S 31543 kill
종료되었는지 확인합니다.
$ screen -ls
No Sockets found in /var/run/screen/S-saml.
답변2
screen
프로그램 을 말씀하시는 건가요 ? screen -ls
화면 프로세스는 실행되는 PID 앞에 화면 이름과 함께 나열됩니다.
screen -S foo
screen -ls
There are screens on:
8806.foo (09/08/13 20:05:22) (Attached)
이를 사용하여 프로세스를 종료할 수 있습니다.
kill -15 $(screen -ls | grep '[0-9]*\.foo' | sed -E 's/\s+([0-9]+)\..*/\1/')
또는 ps를 사용하여 PHP 프로세스를 식별할 수 있는 경우 해당 상위 ID는 screen이 되며 이를 종료할 수 있습니다. pgrep -U <myusername> -f <name>
찾고 있는 PHP 프로세스를 찾는 데 도움이 됩니다( -f
명령 이름뿐만 아니라 명령 인수도 검색한다는 점에 유의하세요). 여러 PHP 스크립트를 실행 중일 수 있으므로 이것이 -f
프로세스에 더 적합한 메커니즘이 될 것입니다. <myusername>
귀하의 사용자 이름이 될 것이며 <name>
프로세스와 일치하는 문자열이 될 것입니다. 그런 다음 이를 사용하여 ps -p <pid> -o ppid=
화면 프로세스 ID를 얻고 종료할 수 있습니다.
kill -15 $( ps -p $(pgrep -U fooman -f foobar_process) -o ppid= )