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