【全志系统-2】 - 开机启动与守护进程

1. 开机自启动

Linux下,一些重要的程序一般都设置为开机自启动,避免每次重启都去手动启动,那么如何设置开机自启呢?

其实设置开机自启很简单,也就4步可以搞定(此处以OpenWRT为例):

  • 1). 撰写脚本
    以启动 /sbin/hello 这个程序为例,自启脚本命名为:start_hello
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org

START=99    #启动级别为99,(0-99,0为最先启动)
start() {
        cd /sbin/
    ./hello &
        cd -
}
  • 2). 将脚本放置到/etc/init.d/目录
    并赋予其执行权限

  • 3). 在/etc/rc.d/目录下,做软连接

ln -s S99start_hello ../init.d/start_hello
  • 4). 重启Linux
    查看我们刚才设置的/sbin/hello有没有启动起来

2. 守护进程

有时候我们怕我们上一节设置的程序因为某种原因死掉了,需要有一个守护进程(类似看门狗)去守着它,死了就救活。
守护进程的撰写也很简单,你可以使用程序,也可以使用脚本,但是为了简便起见,一般采用脚本形式!

下面提供一个demo脚本:

#!/bin/sh
PROC_PATH=/sbin/
PROC_NAME=hello
while true
do
        NUM=`pgrep ${PROC_NAME}|wc -l`
        echo "${NUM}"
        if [[ ${NUM} -lt 1 ]]; then
                echo "${PROC_PATH}/${PROC_NAME}  not found, start"
                ${PROC_PATH}/${PROC_NAME} &
        elif [[ ${NUM} -gt 1 ]]; then
                echo "${PROC_PATH}/${PROC_NAME}  more than one, restart only one"
                pgrep ${PROC_NAME} | xargs kill -9
                ${PROC_PATH}/${PROC_NAME} &
                sleep 1s
        fi
        sleep 5s
done
exit 0

你可能感兴趣的:(【全志系统-2】 - 开机启动与守护进程)