23

私は 1 つのシェル スクリプトを作成しており、「ABCD」という名前の 1 つのプロセスの PID を取得したいと考えています。私がしたことは:

process_id=`/bin/ps -fu $USER|grep "ABCD"|awk '{print $2}'`

これは、プロセス ABCD と GREP コマンド自体の 2 つのプロセスの PID を取得します。実行された GREP の PID を取得したくなくて、ABCD プロセスの PID のみが必要な場合はどうすればよいですか?

提案してください。

4

8 に答える 8

55

grep 自体を grep するだけです。

process_id=`/bin/ps -fu $USER| grep "ABCD" | grep -v "grep" | awk '{print $2}'`
于 2013-06-06T14:45:46.027 に答える
32

使ってみましたpidof ABCD か?

于 2013-06-06T15:39:24.590 に答える
2

ps にはそのためのオプションがあります。

process_id=`/bin/ps -C ABCD -o pid=`
于 2017-08-02T22:48:04.837 に答える
1

このコマンドを使用して、特定のプロセスの pid を grep し、echo$bを実行して実行中のプロセスの pid を出力できます。

b=`ps -ef | grep [A]BCD | awk '{ printf $2 }'`
echo $b
于 2014-11-14T18:33:52.313 に答える