Answers:
您可以使用环境变量$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.
你是说这个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= )
screen
还是DISPLAY
?