プロセスからpidを取得したいのですが。私はps aux | cut -d ' ' -f 2
を行いますが、pidを取得する場合と取得しない場合があります。
[user@ip ~]$ ps aux
user 2049 0.5 10.4 6059216 1623520 ? Sl date 8:48 process
user 12290 0.3 6.9 5881568 1086244 ? Sl date 2:30
[user@ip ~]$ ps aux | cut -d ' ' -f 2
12290
[user@ip ~]$ ps aux | cut -d ' ' -f 3
2049
最初のcut
コマンドが2
にパイプしているのに対し、2番目のコマンドは3
にパイプしていることに注意してください。使用する番号(2
または3
)を知らなくても、これらからPIDを選択するにはどうすればよいですか?
誰かが私にこれらの違いを教えてください、なぜそれが一方を拾い、もう一方を拾わないのですか?
-d ' '
は、単一のスペースを区切り文字として使用することを意味します。 2049の前に1つのスペースと12290の前に2つのスペースがあるため、コマンドは-f 2
と-f 3
でそれらを取得します。
これらのPIDを取得するには、ps aux | awk '{print $2}'
を使用することをお勧めします。
または、tr
を使用して、最初にそれらのスペースを絞り込みますps aux | tr -s ' ' | cut -d ' ' -f 2
オプション-oを使用して、pidのみを出力できます。
ps -u user -o pid