私はUnix Power Toolsという本を読んでいて、psコマンドに出くわしました。本に記載されているコマンドps x
asの出力は次のとおりです。
PID TTY STAT TIME COMMAND
18034 tty2 S 0:00 -zsh
18059 ? S 0:01 ssh-agent
18088 tty2 S 0:00 sh /usr/X11R6/bin/startx
18096 tty2 S 0:00 xinit /etc/X11/xinit/xinitrc -- :0 -auth /home/jpeek/
18101 tty2 S 0:00 /usr/bin/gnome-session
18123 tty2 S 0:33 Enlightenment -clientId default2
18127 tty2 S 0:01 magicdev --sm-client-id=default12
18141 tty2 S 0:03 panel --sm-client-id default8
18145 tty2 S 0:01 gmc --sm-client-id default10
18166 ? S 1:20 gnomepager_applet --activate-goad-server gnomepager_a
18172 tty2 S 0:01 gnome-terminal
18174 tty2 S 0:00 gnome-pty-helper
18175 pts/0 S 0:00 zsh
18202 tty2 S 0:49 gnome-terminal
18203 tty2 S 0:00 gnome-pty-helper
18204 pts/1 S 0:01 zsh
18427 pts/1 T 0:00 man zshjp
18428 pts/1 T 0:00 sh -c /bin/gunzip -c /home/jpeek/.man/cat1/zshjp.1.gz
18430 pts/1 T 0:03 /usr/bin/less -is
18914 pts/1 T 0:02 vi upt3_changes.html
1263 pts/1 T 0:00 vi urls.html
1511 pts/1 T 0:00 less coding
3363 pts/1 S 0:00 vi 1007.sgm
4844 tty2 S 0:24 /usr/lib/netscape/netscape-communicator -irix-session
4860 tty2 S 0:00 (dns helper)
5055 pts/1 R 0:00 ps x
誰かがこの出力をデコードするのを手伝ってくれる? pts/0とpts/1とはどういう意味ですか?
どうもありがとう。
TTYはありません。このプロセスはttyから切り離されました。 TIOCNOTTY ioctl()またはsetsid()を使用します。これは伝統的に、バックグラウンドプロセスa.k.a.の「デーモン」になるために行われ、ターミナルからログアウトするときにSIGHUPによって自動的に強制終了されることはありません。 (この例のようにgnomeプロセスの場合、他のメカニズムによって終了することが予想されます)。
あるいは、たとえばsystemd
サービス用に開始されたプロセスのように、開始するTTYがなかった可能性もあります。
昔は、端末はそれぞれシリアルポートに接続された物理デバイスでした。これらは、UNIXでは/dev
の「デバイスファイル」として表示されます。
出力の外観からLinuxを実行しているため、「仮想」端末には2つの異なるタイプがあります。最初のセットは、ディスプレイを介して接続されたものです。 Linuxはそれらの束を作成し、Ctrl + Alt + Fnを使用してそれらを切り替えることができます。これらはtty0
、tty1
などです。
それから疑似端末の概念があります。システムへの接続に使用するssh
セッションごとに1つ、および(Gnome)X端末セッションごとに1つ必要です。これらは「pts/n」名です。詳細については、「疑似端末」を検索してください。
したがって、上記の出力は、グラフィカルセッションが2番目の仮想端末に関連付けられていることを示しています(Ctrl + Alt + F2)。 2つのgnome端末、pts/0
とpts/1
があります。
Ctrl + Alt + F1を使用して新しいVTを開いてログインし、ターミナル3と4で繰り返します。これを行うたびに、そのターミナルで実行されているプロセスがps -ef
に表示されます。
バックグラウンドプロセスには端末が接続されておらず、TTY列に?
が表示されます。