X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Fstopdaemons.sh;h=e725dd0bf0064588e490eecb90def35bc4d10ba9;hb=a25d952ef9ab458b875e6a250d101178b8a582bb;hp=fd4406d415b35f766c200c5e3dc85cf2705edde5;hpb=095aecdd5cdd77f26ec6e61fc9eda97c10a522fc;p=quix0rs-gnu-social.git diff --git a/scripts/stopdaemons.sh b/scripts/stopdaemons.sh index fd4406d415..e725dd0bf0 100755 --- a/scripts/stopdaemons.sh +++ b/scripts/stopdaemons.sh @@ -1,8 +1,8 @@ -#!/bin/sh +#!/bin/bash -# Laconica - a distributed open-source microblogging tool +# StatusNet - a distributed open-source microblogging tool -# Copyright (C) 2008, Controlez-Vous, Inc. +# Copyright (C) 2008, 2009, StatusNet, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -17,27 +17,58 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This program tries to stop the daemons for Laconica that were +# This program tries to stop the daemons for GNU social that were # previously started by startdaemons.sh +ARGSG= +SITENAME= +SITE= +ID="*" + +# stopdaemons.sh [server [path]] + +if [ $# -gt 0 ] ; then + SITENAME="$1" + SITE="-s$SITENAME" + ID=`echo $SITENAME | sed s/\\\\./_/g` + ARGSG="$ARGSG -s$1" +fi + +if [ $# -gt 1 ]; then + ARGSG="$ARGSG -p$2" +fi + SDIR=`dirname $0` -DIR=`php $SDIR/getpiddir.php` +DIR=`php $SDIR/getpiddir.php $SITE` -for f in jabberhandler ombhandler publichandler smshandler \ - xmppconfirmhandler xmppdaemon twitterhandler facebookhandler ; do +DAEMONS=`php $SDIR/getvaliddaemons.php $ARGSG` + +for f in $DAEMONS; do + f=$(basename $f .php) + + FILES="$DIR/$f.$ID.pid" - FILES="$DIR/$f.*.pid" for ff in "$FILES" ; do - echo -n "Stopping $f..." - PID=`cat $ff` - kill -3 $PID - if kill -9 $PID ; then - echo "DONE." - else - echo "FAILED." + PID=`cat $ff 2>/dev/null` + if [ -n "$PID" ] ; then + echo -n "Stopping $f ($PID)..." + if kill -3 $PID 2>/dev/null ; then + count=0 + while kill -0 $PID 2>/dev/null ; do + sleep 1 + count=$(($count + 1)) + if [ $count -gt 5 ]; then break; fi + done + if kill -9 $PID 2>/dev/null ; then + echo "FORCIBLY TERMINATED" + else + echo "STOPPED CLEANLY" + fi + else + echo "NOT FOUND" + fi fi rm -f $ff done done -