36 Stimmen

Was bedeutet TTY im Unix-Befehl ps?

Wenn ich PS ausführe, ist eine der Spaltenausgaben TTY. Was bedeutet das? Insbesondere, wie vergleicht sich der Wert von "??" mit "ttys000"?

Ich frage, weil ich ein Java-Programm sort über ProcessBuilder ausführen lasse, und wenn dieses Programm über meine IDE (IntelliJ) ausgeführt wird, dauert der Prozess 5-mal weniger lang als wenn er als ausführbare Jar außerhalb der IDE ausgeführt wird.

In jedem Fall führe ich PS aus, wenn das Sortieren läuft, und der einzige Unterschied besteht darin, dass die IDE einen Prozess mit einer TTY von ?? erstellt, während das Jar einen Prozess mit einer TTY von ttys000 erstellt.

41voto

George Cummins Punkte 27912

Ein TTY ist ein Computerterminal. Im Zusammenhang mit ps ist es das Terminal, das einen bestimmten Befehl ausgeführt hat.

Die Abkürzung steht für "TeleTYpewriter", was Geräte waren, die es Benutzern ermöglichten, sich mit frühen Computern zu verbinden.

In Bezug auf Ihre Situation erstellt das Java-Archiv eine virtuelle Terminal mit dem Namen 'ttys000', aber die IDE hängt kein virtuelles Terminal an, um den Befehl auszuführen.

5voto

Jürgen Strobel Punkte 2120

Ein Prozess kann (und ist in der Regel) an ein "steuerndes Terminal" gebunden sein. Dieses Terminal kann entweder Hardware am Ende einer seriellen Leitung sein oder heutzutage viel wahrscheinlicher ein virtuelles Software-Äquivalent. Das TTY wird vom Elternprozess geerbt. Wahrscheinlich löst sich Ihre IDE von ihrem TTY und erbt beim Start außerhalb Ihres Java-Programms das TTY Ihrer Shell.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X