There are several options, the output of ps aux
can be sorted on the name of the terminal and the pid. That will give you a list of every child process of every screen, but will not clearly associate (pts/N) each screen with the processes inside of it:
e.g.
$ ps aux | sort -k7.2r |
grep -Ei 'pts|java|screen' |
awk '{ printf "%10s %6s %6s %6s %s\n", $1, $2, $7, $9, $11}'
jaroslav 30700 tty3 Apr07 screen
root 4933 ? Mar16 SCREEN
jaroslav 5024 ? Mar12 SCREEN
root 3811 ? Apr07 sshd:
jaroslav 3716 ? Apr07 SCREEN
jaroslav 11996 ? Apr05 SCREEN
jaroslav 11139 ? Apr05 sshd:
root 4934 pts/8 Mar16 -/bin/bash
root 3819 pts/6 Apr07 -bash
jaroslav 3718 pts/5 Apr07 -/bin/bash
jaroslav 3810 pts/5 Apr07 ssh
jaroslav 11998 pts/2 Apr05 -/bin/bash
jaroslav 11140 pts/1 Apr05 -bash
jaroslav 12594 pts/1 13:52 sort
jaroslav 12595 pts/1 13:52 grep
jaroslav 12596 pts/1 13:52 awk
jaroslav 12593 pts/1 13:52 ps
jaroslav 5041 pts/0 Mar12 /bin/bash
jaroslav 5076 pts/0 Mar12 /usr/lib/jvm//sun-jdk-1.6/bin/
Alternatively, you could run pstree
on every screen to list their children. This is probably what you are looking for.
$ echo $(pidof screen;pidof SCREEN)| tr ' ' \\n |
xargs -L1 pstree -lanu
creen,jaroslav -dR serv
screen,jaroslav -dR java3
`-bash
`-java -cp /home/jaroslav/src/java/ TestUlimit
`-11*[{java}]
screen,jaroslav -dR java2
`-bash
`-java -cp /home/jaroslav/src/java/ TestUlimit
`-11*[{java}]
screen,jaroslav -dR java1
`-bash
`-java -cp /home/jaroslav/src/java/ TestUlimit
`-11*[{java}]
screen,jaroslav -dR serv
`-bash
screen,jaroslav -dmS nailgun /home/jaroslav/bin/nailgun
`-nailgun /home/jaroslav/bin/nailgun
`-java -server -jar /usr/share/nailgun/lib/nailgun.jar localhost:64781
`-16*[{java}]
screen -dR emr
`-bash
screen,jaroslav -dR gdb
`-bash
`-ssh l00
Or, find the parents of each java process.
$ for i in `pidof java`; do pstree -sp $i ;done | grep -v '^ '
init(1)---screen(13097)---bash(13099)---java(13943)-+-{java}(13947)
init(1)---screen(13004)---bash(13006)---java(13927)-+-{java}(13931)
init(1)---screen(12911)---bash(12913)---java(13911)-+-{java}(13915)
init(1)---screen(5024)---nailgun(5041)---java(5076)-+-{java}(5095)
Have you tried to run
htop
and then press <kbd>F5</kbd> for tree view? – None – 2013-04-14T11:03:11.143Thanks for the tip, it works fine indeed if I want to check that manually, but I need something more parsable as this is intended for a PHP script (htop output is too complicated to parse). I was hoping that screen had a command that would show the child proces(es) being run inside the session. – Albert – 2013-04-14T12:01:34.110
You can list the children of the current shell with ps. screen -S java1 -X stuff ps"$(printf '%b' '\015')" – Ярослав Рахматуллин – 2013-04-14T12:40:05.193