diff --git a/src/ejabberdctl.template b/src/ejabberdctl.template index 086955b43..06681f16a 100644 --- a/src/ejabberdctl.template +++ b/src/ejabberdctl.template @@ -137,6 +137,7 @@ export EXEC_CMD # start server start () { + check_start $EXEC_CMD "$ERL \ $NAME $ERLANG_NODE \ -noinput -detached \ @@ -182,6 +183,7 @@ debug () # start interactive server live () { + check_start echo "--------------------------------------------------------------------" echo "" echo "IMPORTANT: ejabberd is going to start in LIVE (interactive) mode." @@ -338,6 +340,26 @@ stop_epmd() epmd -names | grep -q name || epmd -kill } +# make sure node not already running and node name unregistered +check_start() +{ + epmd -names | grep -q $NODE && { + ps ux | grep -q $ERLANG_NODE && { + echo "ejabberd is already running." + exit 4 + } || { + ps ux | grep beam | grep -v "grep beam" && { + echo "ejabberd node is registered, but no ejabberd process has been found." + echo "can not kill epmd as other erlang nodes are running." + echo "please stop all erlang nodes, and call 'epmd -kill'." + exit 5 + } || { + epmd -kill + } + } + } +} + # allow sync calls wait_for_status() {