GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie bekomme ich das Tty, in dem Bash läuft?

Bei der zweiten Methode, die auf dieser Seite vorgeschlagen wird, erhält man das tty, in dem bash ausgeführt wird, mit dem Befehl:

ps ax | grep $$ | awk '{ print $2 }'

Ich dachte mir, dass das sicherlich ein bisschen faul ist, alle laufenden Prozesse aufzulisten, nur um einen davon zu extrahieren. Wäre es nicht effizienter (ich frage auch, ob dies zu unerwünschten Effekten führen würde):

ps -p $$ | tail -n 1 | awk '{ print $2 }'

Zu Ihrer Information, ich bin auf dieses Problem gestoßen, weil der erste Befehl manchmal tatsächlich zwei (oder mehr) Zeilen ergab. Dies würde zufällig passieren, wenn ein anderer Prozess mit einer PID läuft, die $$ enthält als Teilstring. Beim zweiten Ansatz vermeide ich solche Fälle, indem ich die PID anfordere, von der ich weiß, dass ich sie haben möchte.

Akzeptierte Antwort:

Einfach durch Eingabe von tty :

$ tty 
/dev/pts/20

Zu einfach und offensichtlich, um wahr zu sein 🙂

Bearbeiten: Der erste gibt Ihnen auch den pty zurück des Prozesses, der grep ausführt wie Sie sehen können:

$ ps ax | grep $$
28295 pts/20   Ss     0:00 /bin/bash
29786 pts/20   S+     0:00 grep --color=auto 28295

Daher müssten Sie grep herausfiltern, um nur ein Ergebnis zu erhalten, was hässlich wird:

ps ax | grep $$ | grep -v grep | awk '{ print $2 }'

oder mit

ps ax | grep "^$$" | awk '{ print $2 }'

(eine vernünftigere Variante)


Linux
  1. Linux – Wie erhalte ich die Uhrzeit eines laufenden Prozesses?

  2. Wie erhalte ich programmgesteuert die CPU-Cache-Seitengröße in C++?

  3. Wie erhalte ich das absolute Verzeichnis einer Datei in Bash?

  4. Wie kann ich den temporären Ordner eines Computers abrufen, auf dem Maven ausgeführt wird?

  5. Wie bekomme ich eine Netzmaske von Bash?

So verwenden Sie den Bash-Lesebefehl

So erhalten Sie die Größe eines Verzeichnisses in Linux

So verwenden Sie den which-Befehl in Linux

Wie kann ich die letzte Zahl von String in Bash bekommen?

Wie man einen Abschnitt einer Datei in der Bash-Shell grep

Wie kann ich die Uhrzeit eines laufenden Prozesses abrufen?