2013-12-16 55 views
3

我正在嘗試啓動一個節點應用程序,我認爲rabbitmq正在開發中。如何停止rabbitmq服務器

此主題類似:"node with name "rabbit" already running", but also "unable to connect to node 'rabbit'"

$ ps aux | grep erl 
rabbitmq 1327 0.0 0.0 2376 300 ?  S Dec13 0:00 /usr/lib/erlang/erts-5.8.5/bin/epmd -daemon 
rabbitmq 1344 0.0 0.3 59560 14888 ?  Sl Dec13 0:10 /usr/lib/erlang/erts-5.8.5/bin/beam.smp -W w -K true -A30 -P 1048576 -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -noshell -noinput -sname [email protected] -boot /var/lib/rabbitmq/mnesia/[email protected]/rabbit -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/[email protected]"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/[email protected]"} -os_mon start_cpu_sup true -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/[email protected]" 
rabbitmq 1700 0.0 0.0 2136 284 ?  Ss Dec13 0:00 /usr/lib/erlang/lib/os_mon-2.2.7/priv/bin/cpu_sup 
1000  15564 0.0 0.0 4392 820 pts/1 S+ 19:23 0:00 grep --color=auto erl 

我知道我現在需要運行kill -9 {pid of rabbitmq process},但其數量是PID?

如何停止一切與RabbitMQ的做,我不希望它干擾我的節點JS

回答

10

你有兩個選擇:

  1. 首先,嘗試用init.d腳本優雅地關閉RabbitMQ sudo /etc/init.d/rabbitmq-server stop
  2. 如果這樣不起作用,請使用ps -eaf | grep erl來查找進程和父標識。輸出中的第三列是父進程ID。找到仍然是erlang進程的所有進程的首個祖先(不是啓動它的shell腳本)並殺死它。這應該終止其他子流程。如果沒有,請手動殺死這些人。
1

如果你在你的系統pgrep,那麼你可以只

pgrep <proc_name> 

它將輸出可以使用PID列表殺了他們

+0

對不起,我是小白,什麼是這種情況proc_name中? –

+1

進程名稱:在你的情況下'epmd'或'beam.smp'或'cpu_sup'。 –

7

我剛開始使用的今天RabbitMQ的,得知可以正常關閉一rabbitmq-server過程通過使用命令rabbitmqctl stop

這可能不適用於您的情況,因爲您似乎不是首先在服務器上啓動rabbitmq的人,但如果您的路徑中有rabbitmqctl,則可以嘗試使用它嘗試乾淨關機。

+0

這工作形成了我。 –

3

這爲我工作(在Linux上),正常停機時沒有:

sudo pkill beam.smp 

其中beam.smp是最新版本的父進程的RabbitMQ的名稱。

+1

感謝幫助! – harshadura

1

如果您在安裝時使用brew,您可以使用brew services restart rabbitmqbrew services start rabbitmqbrew services stop rabbitmq