分享

shell脚本(管理守护进程)

 土心园 2018-01-05

    工作中常常会遇到处理消息队列的消费者进程,这样的进程是一个守护进程,即一个服务。服务通常写个shell脚本来管理,查询服务的status  ,启动start 关闭stop  重启reload。最近在学习shell,也模仿写了一个简单的服务管理脚本

    首先贴出模拟的守护进程服务,PHP程序,命名demo.php

1
2
3
4
5
6
<?php
while(true){
    echo 'doing...'.PHP_EOL;
    sleep(10);
}
?>

  这是一个死循环,不停的输出。

管理的shell脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash
DEMO_SCRIPT='/home/tianquanjun/study/service/demo.php' #服务脚本
DEMO_LOG='/home/tianquanjun/study/service/demo.log' #服务运行日志
#判断程序是否已经在运行
status_script(){
    pids=`ps aux|grep /home/tianquanjun/study/service/demo.php|grep -v grep|awk '{print $2}'`
    if [ ${pids} ]
    then
        echo ${0}'在运行中'
        return 1
    else
        echo $0'未启动'
        return 2
    fi
}
#启动脚本,先判断脚本是否已经在运行
start_script(){
    status_script
    if [ $? -eq 1 ]
    then
        echo ${0}' 已经在运行中了'
    else
        echo '启动'${0}'中...'
        nohup /usr/bin/php ${DEMO_SCRIPT}>${DEMO_LOG} &
        echo '启动完毕'
    fi
}
#停止脚本
stop_script(){
    status_script
    if [ $? -ne 1 ]
    then
        echo ${0}' 不是运行状态'
    else
        do
            kill -TERM ${pid} >/dev/null 2>&1
        done
        echo '停止完毕'
    fi
}
#重启脚本
reload_script(){
    stop_script
    sleep 4
    start_script
}
#入口函数
handle(){
    case $1 in
    start)
        start_script
        ;;
    stop)
        stop_script
        ;;
    status)
        status_script
        ;;
    reload)
        reload_script
        ;;
    *)
        echo 'USAGE OF THIS SERVER IS '${0} 'status|start|stop|restart';
        ;;
    esac
}
if [ $# -eq 1 ]
then
    handle $1
else
    echo 'USAGE OF THIS SERVER IS '${0} 'status|start|stop|restart';
fi

  利用 ./demo.sh  status|start|stop|reload 来管理

 

由于守护进程容易死掉,所以我们也经常在ctontab中加入 定时重启任务

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多