私は(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があるものとCOMMAND
tcshがあるものがありますCMD
。より標準書式指定子部分man 1 ps
マンページ。
基本的に:
cmd
(CMD
)はパラメータがすべて文字列のコマンドです。comm
(COMMAND
)は、プロセスが実行されている実行可能ファイルの名前です。
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 -l
csh -l
bin/tcsh -l
realpath $(which command)