Bash Interaktive Shell Tiefe Überprüfen

Bash: Überprüfen der Tiefe der aktuellen interaktiven Shell

Dieser Artikel stellt vor, wie man auf der Kommandozeile in der Bash-Programmiersprache (Skriptsprache) auf Linux-PCs/Servern überprüft, wie viele Ebenen tief die aktuelle interaktive Shell ist. Ich habe kürzlich einen Artikel mit dem Titel 'Wie man die Bash Interactive Shell ohne mehrfache Starts neu startet' geschrieben. In diesem Artikel habe ich den Befehl exec bash verwendet...

Shou Arisaka
3 Min. Lesezeit
20. Okt. 2025

Dieser Artikel stellt vor, wie man auf der Kommandozeile in der Bash-Programmiersprache (Skriptsprache) auf Linux-PCs/Servern überprüft, wie viele Ebenen tief die aktuelle interaktive Shell ist.

Image

Ich habe kürzlich einen Artikel mit dem Titel “Wie man die Bash Interactive Shell ohne mehrfache Starts neu startet” geschrieben. In diesem Artikel zeigte ich, wie die Verwendung des Befehls exec bash die aktuelle interaktive Shell auf eine neue aktualisieren kann, aber beim Experimentieren mit verschiedenen Dingen entdeckte ich ein nicht zu vernachlässigendes Usability-Problem.

Also dachte ich darüber nach, wie man zu viele Bash-Instanzen vermeiden kann, ohne exec bash zu verwenden.

Das aktuelle Terminal wird als tty oder pts angezeigt, und durch Anzeigen mit ps f können Sie in der Hierarchieanzeige leicht überprüfen, wie viele Ebenen der Bash-Hierarchie existieren.

Image

PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND

21929 21930 21930 21929 tty19        0 Sl    1000   0:00 /mnt/c/Program Files/ConEmu/ConEmu/wsl/wslbridge-backend --check-version=0.2.5-dev -363252 -063253 -163254 -k6A72EFE6177C0FE62CC8A91F3E1369AC32E21930 21934 21934 21934 pts/19       0 Ss    1000   0:01  \_ bash -l -i
21934 24318 24318 21934 pts/19       0 S     1000   0:01      \_ bash
24318 25004 25004 21934 pts/19       0 S     1000   0:01          \_ bash
25004 25794 25794 21934 pts/19       0 S     1000   0:01              \_ bash
25794 26603 26603 21934 pts/19       0 R     1000   0:00                  \_ ps fjx

Auf diese Weise können Sie bestätigen, dass Bash drei Ebenen tief gestartet ist.

Durch Anwendung dessen schrieb ich ein Skript wie das folgende.

Image

check-bash-depth(){

    tty="$( tty | sed -Ee 's/\/dev\/(pts|tty)\/(.*)/\2/g' )" ; ps fx -o tty,pid,stat,command,%cpu,%mem --sort=tty | ag "^(pts|tty)/?${tty}\s" | tee

}
yuis ASUS /mnt/c/pg$ check-bash-depth
pts/11    6135 Ss    \_ bash -l -i               0.0  0.0
pts/11    4006 R         \_ ps fx -o tty,pid,st  0.0  0.0
pts/11    4007 S         \_ ag ^(pts|tty)/?11\s  0.0  0.0
pts/11    4009 S         |   \_ sh -c git confi  0.0  0.0
pts/11    4010 R         |       \_ git config   0.0  0.0
pts/11    4008 S         \_ tee                  0.0  0.0

Durch Ausführen von check-bash-depth können Sie sehen, wie viele Ebenen der Bash-interaktiven Shell das aktuelle Terminal hat. Dies ermöglicht es Ihnen, Zwischenschichten von Bash zu beenden, die mehrfach gestartet wurden, ohne sich von der aktuellen Login-Shell abzumelden, und so die CPU-Nutzung zu unterdrücken, während Sie arbeiten.

Wie in der Anzeige gezeigt, werden alle Prozesse des aktuellen Terminals angezeigt, sodass es nicht nur verwendet werden kann, um die Bash-Hierarchie zu kennen, sondern auch wenn Sie alle Prozesse aller interaktiven Shells im aktuellen Terminal überprüfen möchten.

Diesen Artikel teilen

Shou Arisaka 20. Okt. 2025

🔗 Links kopieren