web-dev-qa-db-ja.com

ps -auxの出力で、pts / 0とpts / 1は何を意味していますか?

私はUnix Power Toolsという本を読んでいて、psコマンドに出くわしました。本に記載されているコマンドps xasの出力は次のとおりです。

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とはどういう意味ですか?

  1. 私が見つけることができたのは、ptsが「pseudo terminal slave」の略であるということだけでしたが、pts/0とpts/1の違いを理解できませんでした。
  2. なぜ「?」があるのかTTY列に?なぜそのプロセスのttyが不明なのですか?
  3. 「gnome-pty-helper」や「gnomepager_applet」など、さまざまなGnomeアプリケーションの意味は何ですか?

どうもありがとう。

3
Ayush Goyal
  1. これらは、疑似端末の異なるインスタンスです。例えば。ターミナルウィンドウの異なるタブです。
  2. TTYはありません。このプロセスはttyから切り離されました。 TIOCNOTTY ioctl()またはsetsid()を使用します。これは伝統的に、バックグラウンドプロセスa.k.a.の「デーモン」になるために行われ、ターミナルからログアウトするときにSIGHUPによって自動的に強制終了されることはありません。 (この例のようにgnomeプロセスの場合、他のメカニズムによって終了することが予想されます)。

    あるいは、たとえばsystemdサービス用に開始されたプロセスのように、開始するTTYがなかった可能性もあります。

4
sourcejedi

昔は、端末はそれぞれシリアルポートに接続された物理デバイスでした。これらは、UNIXでは/devの「デバイスファイル」として表示されます。

出力の外観からLinuxを実行しているため、「仮想」端末には2つの異なるタイプがあります。最初のセットは、ディスプレイを介して接続されたものです。 Linuxはそれらの束を作成し、Ctrl + Alt + Fnを使用してそれらを切り替えることができます。これらはtty0tty1などです。

それから疑似端末の概念があります。システムへの接続に使用するsshセッションごとに1つ、および(Gnome)X端末セッションごとに1つ必要です。これらは「pts/n」名です。詳細については、「疑似端末」を検索してください。

したがって、上記の出力は、グラフィカルセッションが2番目の仮想端末に関連付けられていることを示しています(Ctrl + Alt + F2)。 2つのgnome端末、pts/0pts/1があります。

Ctrl + Alt + F1を使用して新しいVTを開いてログインし、ターミナル3と4で繰り返します。これを行うたびに、そのターミナルで実行されているプロセスがps -efに表示されます。

バックグラウンドプロセスには端末が接続されておらず、TTY列に?が表示されます。

2
fork2execve