web-dev-qa-db-ja.com

Webサーバー全体を再起動せずにmemcacheを再起動/クリアする方法

/opt/eduserver/eduserverは私にオプションを与えます:

使用法:/ opt/eduserver/eduserver {start | stop | startphp | startwww | startooo | stopphp | stopwww | stopooo | restartphp | restartwww | restartooo | status | restart | reload | force-reload}

memcacheはphpモジュールであり、memcache.ini in /opt/eduserver/etc/php/conf.d

コマンドラインからmemcacheをクリアしたい。 Webサーバーの他の部分に「触れる」ことなく、どうにかしてそれを実行できますか?

48
Radek

はい。 memcacheをクリアできます。試してください:

telnet localhost 11211
flush_all
quit

memcacheがlocalhost 11211で実行されない場合は、調整する必要があります。

96
heiko

これはnetcatを使用しても機能します

echo "flush_all" | nc -q 2 localhost 11211 

次に、「OK」を待ちます。

41
Danie

memcacheツールのmemcflushが必要です。

memcflush --servers=localhost:11211

localhostをサーバーの名前に変更します。

Memcacheツールがサーバーにインストールされていない可能性があります。DebianベースのOSを実行している場合は、次のようにインストールできます。

Sudo apt-get install libmemcached-tools
24
robbrit

Bashでは、この手の込んだ構文を使用できます。

echo flush_all > /dev/tcp/localhost/11211

それ以外の場合は、memflushコマンドを使用します。

memflush --servers=localhost
8
kenorb

タイムアウトを待つのではなく、 flush_allquitコマンドを使用:

printf "flush_all\r\nquit\r\n" | nc localhost 11211

または、ncがない場合:

printf "flush_all\r\nquit\r\n" > /dev/tcp/127.0.0.1/11211

このメソッドは出力を生成しませんが、 stats をチェックしてcmd_flush増加しました。

4
polyethene

(sleep 2; echo flush_all; sleep 2; echo quit; ) | telnet 127.0.0.1 11211

非対話的に実行したい場合

@heikoに感謝

3
Radek

memcachedへの接続にソケットを使用する場合、構文は

echo "flush_all" | nc -U ~/memcached.sock

0
staabm