3

シェルスクリプトを使用してプロセスを強制終了したいのですが、エラーが発生しています。これが私がこれまでに試したことです:

memcache を強制終了しようとすると、「kill: No such process」のようなエラーが表示されます。以下のコマンドを使用しました。

ps -ef | grep "memcache" | awk '{print $2}' | xargs kill; 

または以下のように試してみてください:

kill -9 $(pidof memcache)

以下のようなエラーが表示されます:": 引数はプロセスまたはジョブ ID でなければなりません"

コマンドプロンプトで直接実行すると、プロセスが実行されています:

ring@ubuntu:~/parasol$ ps aux | grep memcache     
memcache   873  0.0  0.0 323220  1188 ?        Sl   22:56   0:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1
ring      1714  0.0  0.0   9384   920 pts/0    S+   23:45   0:00 grep --color=auto memcache

https://askubuntu.com/questions/239923/shell-script-to-9-kill-based-on-name および シェル スクリプトを参照して、プロセス ID をキャプチャし、存在する場合はそれを強制終了します。

私のUbuntuバージョン:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"
NAME="Ubuntu"
VERSION="12.04.2 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.2 LTS)"
VERSION_ID="12.04"
4

5 に答える 5

3

次のコマンドを使用できます: pkill memcached または pgrep memcached | xargs kill -9 または killall memcached

pgrep、pkill - 名前やその他の属性に基づいてプロセスを検索または通知します。

于 2013-10-31T07:04:57.577 に答える
1

最初のコマンドでは、 grep のパターンに一致する2 つのプロセスがあることがわかります。実際のmemcachedプロセスとあなたのgrepプロセス。これがおそらく最初のコマンド ラインのエラーの原因です。

grep などで検索を絞り込んでみてください"^memcache.*/usr/bin/memcached"


2 番目のエラーの問題は、プロセス名ではなくユーザー名pidofを使用して呼び出しているため、コマンドには基本的にプロセス ID が含まれていないことです。代わりに、たとえば正しいプロセスのプロセス ID を取得してみてください。kill -9pidof memcached

于 2013-10-31T06:51:00.697 に答える
0
ps -ef | grep "memcache" | awk '{print $2}' | xargs kill; 
PID=`ps -ef | grep memcache | grep -v "grep" | awk '{print $2}'`
#...

まず、この場合cutの代わりに使用できます。awkハエを殺すために戦車を使う必要はありません;)

では、なぜ memcache を残酷に殺す必要があるのでしょうか? それを停止するデーモンがあります:

/etc/init.d/memcached stop
service memcached stop
于 2013-10-31T11:25:57.047 に答える