テストサーバー(ローカルアプリケーション)を実行していて、そのサーバーのプロセスIDを取得して終了したいと思います。どうすればいいですか?
test-server
usingコマンドを実行しており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-server
kill -9 $(pgrep test-server)
pkill
しかし、必ずバイパスする必要はありませんpkill -9 test-server
。