我在‘屏幕’内运行哪个命令?

我在‘屏幕’内运行哪个命令?

我已经登录服务器。然后发出“screen -list”命令,该命令给出以下输出 -

有一个屏幕:
11048.pts-0.devops(已分离)
27563.pst-0.devops(已分离)
1 个套接字在 /var/run/screen/S-root 中。

现在我必须使用“screen -S -X quit”终止其中一个屏幕会话。在终止之前,我想知道屏幕上正在运行哪个命令。例如,我在 id 为“11048”的屏幕上运行了“./startup.sh”(用于 tomcat),但我忘记了。有没有办法找出 id 为 11048 的屏幕下正在运行哪个命令?

提前致谢

答案1

打开屏幕的语法是:

screen -r <pid>

因此第一个屏幕将是“screen -r 11048” - 要再次分离屏幕,请键入 ctrl+ad(即按住 ctrl 并按下 a,然后释放,然后按下 d)。进入屏幕后,您还可以使用 ctrl+a " 在屏幕之间导航。您还应该知道,如果您只是杀死 11048,则在屏幕 11048 中运行的进程将在屏幕退出后继续运行。

- - 编辑 - -

哦,我明白你的意思了。尝试跟踪子进程:

seqb [~]# ps -ef | grep SCREEN
505       5835     1  0 Jun30 ?        00:00:01 SCREEN
505      19501     1  0 Feb27 ?        00:00:00 SCREEN
505      21852     1  0 Mar02 ?        00:00:07 SCREEN
root     22035 22006  0 19:05 pts/2    00:00:00 grep SCREEN
root     29668     1  0 Jul08 ?        00:00:00 SCREEN
seqb [~]# ps -ef | grep 29668
root     22038 22006  0 19:06 pts/2    00:00:00 grep 29668
root     29668     1  0 Jul08 ?        00:00:00 SCREEN
root     29669 29668  0 Jul08 pts/0    00:00:00 /bin/bash
seqb [~]# ps -ef | grep 29669
root     22047 29669  0 19:08 pts/0    00:00:00 sleep 600
root     22049 22006  0 19:08 pts/2    00:00:00 grep 29669
root     29669 29668  0 Jul08 pts/0    00:00:00 /bin/bash

因此,当您在 ps -ef (29668) 中搜索 screen 的 pid 时,您还会得到将 SCREEN 视为其父级的进程。这通常是 bash。因此,当您搜索 bash 的 pid 时,您会找到在 bash 中运行的进程,在本例中为“sleep 600”。如果不太明白,请运行 ps -ef | head -1。

还有一个快捷方式 - screen 将最后 500 行保存在内存中。输入 ctrl+a [ 然后按向上键。您可以转到输出的顶部,如果输出少于 500 行,则您可以看到正在运行的命令。

相关内容