Wenn ein Skript über die Eingabeaufforderung gestartet wird, erzeugt die Shell einen Unterprozess für dieses Skript. Ich möchte diese Beziehung zwischen dem Prozess auf Terminalebene und seinen untergeordneten Elementen zeigen, die ps
in einer Ausgabe im Baumstil verwendet werden.
Wie kann ich das machen?
Was ich bisher ausprobiert habe
Datei: script.sh
#!/bin/bash
ps -f -p$1
Dann rufe ich das Skript über die Befehlszeile auf und übergebe die Prozess-ID der Terminal-Shell:
$ ./script.sh $$
Was ich will, ist so etwas
- Shell-Prozess der obersten Ebene (Terminal)
- ./script.sh
- Prozess für den
ps
Befehl selbst
USER PID [..]
ubuntu 123 -bash
ubuntu 1234 \_ bash ./script.sh
ubuntu 12345 \_ ps auxf
Was ich bekomme ist:
PID TTY STAT TIME COMMAND
14492 pts/24 Ss 0:00 -bash
pstree
?pstree
und konnte es nicht schaffen, eine aussagekräftige Ausgabe zu produzieren. Ich denkepstree $$
, es wurdebash--pstree
nicht genau das produziert , wonach ich gesucht habe.ps
was erwarten Sie außer dem nochpstree
?pstree -p $$
? Oder, wenn Sie mehr von der Kommandozeile anzeigen möchten,pstree -pa $$
. Oder, wenn Sie alle übergeordneten Prozesse anzeigen möchten, die ausgeführt werdenpstree -psa $$
.Antworten:
Versuchen
quelle
$1
, ein Skript zu argumentieren oder$$
den Baum an der aktuellen Shell zu betrachten ein bestimmter prozess?Ich habe es gefunden, nachdem ich diese Superuser-Antwort gelesen und diesen Kommentar notiert habe
und experimentieren
Ergebnis
quelle
OUTPUT MODIFIERS: f ASCII-art process hierarchy (forest)
Sie können den Befehl verwenden
ps f -g <PID>
und den Root-Prozess für Folgendes angebenPID
:quelle
Versuche dies:
quelle