読むプロセスの周りの括弧はどういう意味ですか?私が知っている限り、実行可能ファイル名が印刷されます。
Linuxメモマニュアルページ:
プロセスパラメータが利用できない場合があります。この場合、psは実行可能ファイル名を括弧内に印刷します。
しかし、ps -Awwo pid,comm,args
私は次のようになります。
PID COMMAND COMMAND
1 init init [2]
どういう意味ですか? 「実行ファイル名」init
はまたはでなければなりませんか[2]
?
実行ファイルはもちろんのようですinit
。それは何ですか[2]
?なぜ印刷されていますか?
(また、実行可能ファイル名を知っていますが、なぜフルパスを表示できないのかは本当に理解できません。)
答え1
関連するすべての人がデフォルトの規則に従うと、出力列とcomm
列の最初の単語の両方がランチャーの名前を表示します。ただし、さまざまな理由で違いが発生する可能性があります。args
ps
プログラムが起動すると、そのargs
列に表示されているコマンド名が選択され、argv[0]
プログラムを実行している親プログラムによって引数()に渡されます。規則によって、親は実行可能ファイルのデフォルト名(つまり、ディレクトリ部分を持たない実行可能ファイルへのパス)を選択しますが、これは必須ではありません。プログラムが実行されると、文字列を上書きできます。
Init(少なくとも既存のLinux SysVinit)はそれをオーバーライドしてargv[0]
現在の状態を示します。ランレベル。
Linuxでは、このcomm
列は最初に実行可能ファイルのデフォルト名の最初の16文字でカーネルで埋められます。プロセスによって内容が変更されることがあるprctl
システムコール。
実行可能ファイルの名前が変更または削除されると、列または列のcomm
両方args
が反映されません。
ps
ジョブ記述にない実行可能ファイルへのパスは表示されません。lsof
私はあなたに話すことができますlsof -a -p 1 -d txt
。
Linuxでは、次のファイルにこの情報を表示できます。/proc/PID/
- (括弧内の2番目のフィールド)と
comm
(フィールド)のプロセス名(フィールド)。/proc/1/stat
/proc/1/status
Name
- 渡された実行可能ファイルのパス
/proc/1/exe
。 - (で始まる
argv[0]
)のパラメータ/proc/1/cmdline
(ヌルバイトで区切られたパラメータ)