「ps -p proc1 proc2 proc3」は「-csh」、「-tcsh」、「-/bin/tcsh」を表示し、「ps -p proc[n]」は「tcsh」のみを表示するのはなぜですか。 ?

「ps -p proc1 proc2 proc3」は「-csh」、「-tcsh」、「-/bin/tcsh」を表示し、「ps -p proc[n]」は「tcsh」のみを表示するのはなぜですか。 ?

私は(cshではなく)tcshを使用し、pgrep csh | xargs ps -pなぜcshを実行しているのかを調べるために実行しました。いくつかの結果:

 1529 pts/0    Ss     0:00 -csh
 1764 pts/3    Ss     0:00 -tcsh
 1979 pts/4    Ss+    0:00 -bin/tcsh

それから私はps -p 1529 1764 1979同じ結果を得ました。

  PID TTY      STAT   TIME COMMAND
 1529 pts/0    Ss     0:00 -csh
 1764 pts/3    Ss     0:00 -tcsh
 1979 pts/4    Ss+    0:00 -bin/tcsh

それから私はそうでした。ps -p 1529; ps -p 1764; ps -p 1979

  PID TTY          TIME CMD
 1529 pts/0    00:00:00 tcsh
  PID TTY          TIME CMD
 1764 pts/3    00:00:00 tcsh
  PID TTY          TIME CMD
 1979 pts/4    00:00:00 tcsh

ps --version与えてprocps-ng version 3.3.10生産tcsh --versionしてくださいtcsh 6.19.00 (Astron) 2015-05-21 (x86_64-unknown-linux) options wide,nls,dl,al,kan,sm,rh,color,filec

なぜこんなに奇妙な行動をするのでしょうか?プロセスモニタを作成しようとしていますが、tcshに3つの異なる形式を取るのは面倒です。

ベストアンサー1

2つの異なる分野を比較しています。

タイトル行に注意してください。 dashがあるものとCOMMANDtcshがあるものがありますCMD。より標準書式指定子部分man 1 psマンページ。

基本的に:

  • cmdCMD)はパラメータがすべて文字列のコマンドです。

  • commCOMMAND)は、プロセスが実行されている実行可能ファイルの名前です。

Linuxでは、後者を個々のスレッドprctl(PR_SET_NAME, string)だけでなくプロセス全体に設定することもできます。しかし、制限は16文字です。pthread_setname_np(thread, string)string

シェルは通常、プロセスリストが論理的に正しく表示されるように、実行時にシンボリックリンクまたはパターンに基づいて名前を設定します。特に、ダッシュで始まる名前(例-tcsh:)は、次のことを示すために使用されます。ログインシェル。

OPの例にはシェルバイナリを実行する3つのシェルがありtcsh、その3つすべては次のとおりです。ログインシェル、そのうちの1つがcshモードにあります。

ログインシェル特定の対話型モードのシェルです。シェルは、スクリプトを実行するシェルとは若干異なる動作をします。スクリプトには必要ありませんが、人がシェルを使いやすくするためのアドオンを含むモードだと思います。

OPはほぼ確実にcshエイリアスを使用し、3つのシェルはtcshそれぞれおよびで始まりました。コマンドで実行された実際のバイナリを見つけるには。tcsh -lcsh -lbin/tcsh -lrealpath $(which command)

おすすめ記事