Mam kilka sesji na ekranie, każda z nich ma jedną aplikację Java.
Na przykład mam te 3 sesje na ekranie:
7361.ARM48 (Detached)
7397.ROP90 (Detached)
7314.ARM22 (Detached)
A to jest wyjście ps -A
7314 ? 00:00:00 screen
7329 pts/1 00:00:16 java
7361 ? 00:00:00 screen
7375 pts/2 00:00:02 java
7397 ? 00:00:00 screen
7411 pts/3 00:00:02 java
Czy jest jakiś sposób na niezawodne wykrycie, czy każda sesja na ekranie uruchamia aplikację Java, czy nie?
Rozejrzałem się po podręczniku ekranowym Linuksa, ale nie mogłem znaleźć żadnych poleceń ekranowych, które pokazywałyby procesy potomne sesji ekranowej ( http://linux.die.net/man/1/screen )
linux
java
gnu-screen
Albert
źródło
źródło
htop
a następnie naciśnij & lt; kbd & gt; F5 & lt; / kbd & gt; na widok drzewa?Odpowiedzi:
To brzmi jak przypadek
działa również dla kilku okien w ramach jednej sesji na ekranie
źródło
man ps
:f ASCII-art process hierarchy (forest)
;x Lift the BSD-style "must have a tty" restriction, which is imposed upon the set of all processes when some BSD-style (without "-") options are used or when the ps personality setting is BSD-like. The set of processes selected in this manner is in addition to the set of processes selected by other means. An alternate description is that this option causes ps to list all processes owned by you (same EUID as ps), or to list all processes when used together with the a option.
Istnieje kilka opcji, wyjście
ps aux
można posortować według nazwy terminala i pid. To da ci listę każdego procesu potomnego na każdym ekranie, ale nie będzie wyraźnie kojarzyć (pkt / N) każdego ekranu z procesami wewnątrz niego:na przykład
Ewentualnie możesz biegać
pstree
na każdym ekranie, aby wymienić ich dzieci. To jest prawdopodobnie to, czego szukasz.Albo znajdź rodziców każdego procesu Java.
źródło
echo $(pidof screen;pidof SCREEN)| tr ' ' \\n | xargs -L1 pstree -lanu
To zrobiło dokładnie to, czego potrzebowałem. Dzięki!