特定のプロセス名のPIDを検索して終了します。

特定のプロセス名のPIDを検索して終了します。

テストサーバー(ローカルアプリケーション)を実行していて、そのサーバーのプロセスIDを取得して終了したいと思います。どうすればいいですか?

test-serverusingコマンドを実行しておりnohup ./test-server &、以下を使用してプロセスのPIDも確認しています。

ps -ef | grep 'test-server' | grep -v 'grep' | awk '{ printf $2 }'

出力:

svr-ser+   42707   42618  0 10:43 pts/2    00:00:00 /bin/sh ./test-server
svr-ser+   42709   42707  0 10:43 pts/2    00:00:00 /bin/sh ./test -Dserver_port=1099 -s -j test-server.log
svr-ser+   42734   42709  9 10:43 pts/2    00:00:01 /usr/bin/java -server -XX:+HeapDumpOnOutOfMemoryError -Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20 -Djava.security.egd=file:/dev/urandom -Duser.language=en -Duser.region=EN -Dserver_port=1099 -s -j test-server.log

& プロセスを終了するには、次のコマンドを使用します。

ps -ef | grep 'test-server' | grep -v 'grep' | xargs kill -9

出力:

kill: cannot find process "svr-ser+"
Killed

どのように検索し 42707て終了できますか?プロセスの終了について非常に具体的に説明したいと思います./test-server。それがすべてです。

ベストアンサー1

で説明したように、正規表現で説明できる名前のPIDを取得するには、に示されているようにgrep単にを使用して実行できます。pgrep test-serverkill -9 $(pgrep test-server)

pkillしかし、必ずバイパスする必要はありませんpkill -9 test-server

おすすめ記事