w
両方のコンピュータでコマンドを実行しています。どちらもまったく同じシステム(Ubuntu 16.04.3 LTS(GNU / Linux 4.4.0-87-generic x86_64))がインストールされています。 SSH経由で両方のコンピュータにhansとしてログインしました。
豊富な機械:
$ w
13:18:20 up 26 days, 6:02, 1 user, load average: 0.02, 0.03, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
hans pts/0 10.xxx.xxx.xxx 10:14 1.00s 0.08s 0.00s w
機械熱:
$ w
13:11:17 up 46 days, 46 min, 1 user, load average: 0.02, 0.04, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
hans pts/0 10.xxx.xxx.xxx 10:14 0.00s 0.02s 0.02s sshd: hans [priv]
列の出力が異なる理由は何ですかWHAT
? on foo I see it w
, on bar: I see it sshd: hans [priv]
.この非対称性はどこから来るのでしょうか?
答え1
このw
コマンドは、経験的な方法を使用して、現在のプロセスとして表示するプロセスを決定します。 Linuxのマニュアルページではどのように機能するのか説明していませんが、私のOS Xシステムでは次のように言います。
「現在のプロセス」という概念があいまいです。現在のアルゴリズムは、「割り込みを無視しない端末で最も高い番号付きプロセス、または存在しない場合は端末で最も高い番号付きプロセス」です。たとえば、シェルやエディタなどのプログラムの重要なセクションで、または無効なプログラムがバックグラウンドフォークで実行されていて中断を無視できない場合、失敗する可能性があります。 (プロセスが見つからない場合はwが印刷されます
-
。)
ここで説明されている失敗モードは、現在表示されている一貫性のない動作を説明できます。