web-dev-qa-db-ja.com

Linuxでプロセス名を指定してプロセスIDのみを取得するにはどうすればよいですか?

Linuxで指定されたプロセス名のプロセスIDのみを取得する方法は?

ps -ef|grep Java    
test 31372 31265  0 13:41 pts/1    00:00:00 grep Java

プロセスIDに基づいて、いくつかのロジックを記述します。特定のプロセス名のプロセスIDのみを取得するにはどうすればよいですか。

サンプルプログラム:

PIDS= ps -ef|grep Java
if [ -z "$PIDS" ]; then
echo "nothing"
else
mail [email protected]
fi
48
openquestion

次を使用できます。

ps -ef | grep '[j]ava'

または、pgrepが使用可能な場合は、使用することをお勧めします。

pgrep -f Java
61
anubhava

出力をawkにパイプして、PIDだけを印刷できます。例えば:

ps -ef | grep nginx | awk '{print $2}'
9439
60
Jose Varez

これを使用:ps -C <name> -o pid=

33
ventsyv

このコマンドはgrepプロセスを無視し、PIDを返します:

ps -ef | grep -v grep | grep Java | awk '{print $2}'
7
Nabi K.A.Z.

なぜpidofだけではないのですか?

pidof <process_name>

プロセス名に一致するPIDのリストを返します

https://linux.die.net/man/8/pidof

6
Porunga