Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does TTY mean in the unix ps command?

Tags:

java

process

tty

ps

When I run PS one of the columns output is TTY. What does this mean? In particular, how does as value of "??" compare with "ttys000"?

I ask because I have a Java program execute sort via ProcessBuilder, and when this program is run via my IDE (IntelliJ) the process takes 5x less than when run as an executable jar outside the IDE.

In each case I run ps when the sort is running and the only difference is the IDE creats a process with a TTY of ?? whereas the jar creates a process with TTY of ttys000.

like image 740
Aaron Silverman Avatar asked Aug 18 '11 20:08

Aaron Silverman


2 Answers

A TTY is a computer terminal. In the context of ps, it is the terminal that executed a particular command.

The abbreviation stands for "TeleTYpewriter", which were devices that allowed users to connect to early computers.

In relation to your situation, the jar creates a virtual terminal named 'ttys000' but the IDE does not attach to a virtual terminal to execute the command.

like image 85
George Cummins Avatar answered Sep 28 '22 04:09

George Cummins


A process can be (and usually is) bound to a "controlling terminal". This terminal may be hardware at the end of a serial line, or much more likely today, be a virtual software equivalent. The TTY is inherited from the parent process. Most likely your IDE disassociates itself from its TTY, and when started outside your java program inherits your shell's TTY.

like image 41
Jürgen Strobel Avatar answered Sep 28 '22 03:09

Jürgen Strobel