my working bash script for restarting services 11/11/19

#!/bin/bash
#DEBUG_MODE=on
unset DEBUG_MODE
RESOURCE_SERVER_LOCKFILE=/tmp/resource_service.lock
FAST_CGI_LOCK_FILE=/tmp/fastcgi.lock

. /home/teaegg/bin/functions-eucs.sh
. /home/teaegg/bin/functions.sh
. /home/teaegg/etc/general.ini
. /home/teaegg/etc/network.ini
. /etc/init.d/pocinit/led_func

send_message_to_all_poc_clients() {
    #/home/teaegg/opensips/sbin/opensipsctl miscapps send_message 'sip:10004@127.0.0.1:6067' 'sip:10001999@127.0.0.1:6067' 'eyJtZXRob2QiOiJhZGREZXZpY2UiLCJkYXRhIjp7ImthaXlhbmciOiIyMDAwNCJ9fQ==' 'sip:10001999@127.0.0.1:6067' 'sip:192.168.139.122:6067' ''
    sleep_before_send=$1
    timestamp=`get_current_timestamp`
    msg=`echo '{ "method":"noticeServerReady", "event_type":"broadcast", "time":"'$timestamp'" }'`
    [ "$DEBUG_MODE" != "" ] && echo $msg && return
    sleep $sleep_before_send
    from="sip:10000@127.0.0.1:${SIP_LISTEN_PORT}"
    to="sip:10001999@127.0.0.1:${SIP_LISTEN_PORT}"
    body=`echo $msg|base64`
    body=`echo $body|sed 's/ //g'`
    proxy="sip:${CURRENT_EXTERNAL_IPADDR}:${SIP_LISTEN_PORT}"
    /home/teaegg/opensips/sbin/opensipsctl miscapps send_message "$from" "$to" "$body" "$to" "$proxy" '' > /dev/null 2>&1
}


resource_service_wait_for_asterisk() {
    cnt=0
    while [ $cnt -lt 20 -a -e $RESOURCE_SERVER_LOCKFILE ]; do
    /home/teaegg/opensips/sbin/opensipsctl online |grep 10001001 > /dev/null 2>&1
    ret=$?
    [ $ret -eq 0 ] && return 0
    let cnt=$cnt+1
    sleep 1
    done
    return 1
}

on_resource_service_exit_abnormal() {
    #如果资源服务不正常退出,则杀掉asterisk
    killall -9 asterisk
}

run_resource_service() {
    while [ -e $RESOURCE_SERVER_LOCKFILE ]; do
    resource_service_wait_for_asterisk
    ret=$?
    if [ $ret -eq 0 ]; then
        #5秒后send message给所有终端,通知其重新加入
        send_message_to_all_poc_clients 5 & 
        cd /home/teaegg/resourceService/bin/
        ./resourceService > /tmp/resource-service.log 2>&1
    fi  
    if [ -e $RESOURCE_SERVER_LOCKFILE ]; then

        on_resource_service_exit_abnormal
    fi  
    sleep 5
    done
}

run_fastcgi() {
    while [ -e $FAST_CGI_LOCK_FILE ]; do
    ps ax|grep fcgi|grep -v grep >/dev/null 2>&1
    ret=$?
    if [ $ret -ne 0 ]; then 
       cd /home/teaegg/fcgi/bin
       #ulimit -c unlimited
       CWD=`pwd`
       ${CWD}/spawn-fcgi -a127.0.0.1 -p9001 -f ${CWD}/fcgi
       echo ${CWD}/spawn-fcgi -a127.0.0.1 -p9001 -f ${CWD}/fcgi
    fi  
    sleep 60
    done
}

start_nginx() {
    /home/teaegg/nginx/sbin/nginx -c /home/teaegg/nginx/conf/nginx.conf
}

stop_nginx() {
    killall -9 nginx
}

start_phpfpm() {
    /usr/sbin/php-fpm7.0
}

stop_phpfpm() {
    ps aux | grep "php-fpm" |grep -v grep| cut -c 9-15 | xargs kill -9
}

start_fastcgi() {
    touch $FAST_CGI_LOCK_FILE
    run_fastcgi >/dev/null 2>&1 &
}

stop_fastcgi() {
    rm -rf $FAST_CGI_LOCK_FILE
    cgi_id=`ps -ef | grep fcgi | grep -v grep | awk '{print $2}'`
    [ -n "$cgi_id" ] && kill -9 $cgi_id
}

start_opensips() {
    /home/teaegg/opensips/sbin/opensipsctl start
}

stop_opensips() {
    /home/teaegg/opensips/sbin/opensipsctl stop
    sleep 3

    everything_is_ok
    ret=$?
    if [ $ret != 0 ]; then
    echo "error in everything_is_ok check"
    #点亮故障灯
    error_led ON
    return
    fi  
    #调整运行灯
    sys_led BL
    #放开服务端口
    #iptables -I INPUT -p tcp --dport ${SIP_LISTEN_PORT} -j ACCEPT
    #iptables -I INPUT -p tcp --dport ${IDRC_ENCRYPTION_PORT} -j ACCEPT
    #iptables -I INPUT -p tcp --dport ${POC_CONF_PORT} -j ACCEPT
    #iptables -I INPUT -p tcp --dport ${TURN_LISTEN_PORT} -j ACCEPT
    #iptables -I INPUT -p tcp --dport ${TURN_TLS_LISTEN_PORT} -j ACCEPT
    #iptables -I INPUT -i $EXTERNAL_NETWORK_INTERFACE -p udp -m udp --dport 1024:65535 -j ACCEPT
    #if [ "$DATA_STREAM" = "on" ]; then
    #iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE
    #fi 
    #echo 1>/proc/sys/net/ipv4/ip_forward
}

#调用stopall之前,可以调用此方法,关闭所有服务端口
pre_stop() {
    sleep 1
    #iptables -D INPUT -p tcp --dport ${SIP_LISTEN_PORT} -j ACCEPT
    #iptables -D INPUT -p tcp --dport ${IDRC_ENCRYPTION_PORT} -j ACCEPT
    #iptables -D INPUT -p tcp --dport ${POC_CONF_PORT} -j ACCEPT
    #iptables -D INPUT -p tcp --dport ${TURN_LISTEN_PORT} -j ACCEPT
    #iptables -D INPUT -p tcp --dport ${TURN_TLS_LISTEN_PORT} -j ACCEPT
}

start_all() {
    sys_led ON
    apply_configs
    ulimit -n 655350
    ulimit -c unlimited
    echo "starting turnserver..."
    start_webrtc_turn
    sleep 1
    echo "starting nginx..."
    start_nginx
    sleep 1
    echo "starting phpfpm..."
    start_phpfpm
    sleep 1
    #echo "starting fastcgi..."
    #start_fastcgi
    echo "starting opensips..."
    start_opensips
    sleep 1
    echo "starting asterisk..."
    start_asterisk
    sleep 2

    echo "starting resourceserver..."
    start_resource_service
    sleep 2
    echo "post start..."
    #start_media_proxy
    post_start
}

stop_all() {
    pre_stop
    sys_led OFF 
    stop_resource_service
    stop_webrtc_turn
    #stop_media_proxy
    stop_asterisk
    stop_opensips
    #stop_fastcgi
    stop_phpfpm
    stop_nginx
}

start_maintance() {
    start_nginx
    start_phpfpm

    post_start
    #iptables -I INPUT -p tcp -i $EXTERNAL_NETWORK_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
    #iptables -I INPUT -p tcp -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
}

#main
case $1 in
    start)
    echo "starting all services ..."
    start_all
    ;;  
    stop)
    echo "stopping all ..."
    stop_all
    ;;  
    restart)
    echo "restaring all ..."
    stop_all
    sleep 5
    start_all
    ;;  
    maintance)
    echo "starting in maintance mode ..."
    stop_all
    sleep 5
    start_maintance
    ;;  
    *)  
    echo "usage $0 [start|stop|restart]"
    ;;  
esac

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值