近来,都工作在 Linux 上,开始不断接触 Linux
更多的东西,开通这个 space
都很久了,还是留下点东西吧,日后应该对我对别人有点用处的,开通这个space不也是为了这个用途嘛,都是一些技术上的东西,非技术人员还是别看了吧,把你们搞晕了,我可罪过啊~~
今天需要用到 Linux
的自启动服务,在网上查了一些资料、请教了一下同事,总算摆平了。自启动服务是可以让
Linux 在启动是自动运行该程序的服务,用户也可以通过 service program
start|stop 等命令进行启动|停止。程序将会运行于后台。
要想使用自启动服务,一般需要两步,第一步就是程序本身编写需要做一些处理,第二步就是需要写一个shell脚步,启动时运行
#include
#include
#include
#include
#include
int main(int argc,char* argv[]){
pid_t
pid,sid;
pid =
fork();
if(pid<0){
exit(EXIT_FAILURE);
}
if(pid>0){
exit(EXIT_SUCCESS);
}
umask(0);
sid=setsid();
if(sid<0){
exit(EXIT_FAILURE);
}
if((chdir("/"))<0){
exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
while(1){
sleep(2);
}
return
0;
}
第一步就这样了,解析就不多说了。
第二步就是写个shell脚步
其实,在/etc/init.d下就有很多例子了,我也是参考这里面的,依葫芦划瓢就好了
#!/bin/bash
#
# /etc/rc.d/init.d/hello
#
# Starts the hello
#
# chkconfig: 345 44 56
# description: just a sample
# processname: hello
# Source function library.
. /etc/rc.d/init.d/functions
prog="/root/hello"
prog_s="var/lock/subsys/hello"
[ -f $prog ] || exit 0
RETVAL=0
#
# See how we were called.
#
start() {
# Check if it is already running
if [ ! -f $prog_s ]; then
echo -n $"Starting hello: "
daemon $prog
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $prog_s
echo
fi
return $RETVAL
}
stop() {
echo -n $"Stopping hello: "
killproc $prog
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $prog_s
echo
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
if [ -f $prog_s ]; then
restart
fi
;;
status)
status hello
;;
*)
echo $"Usage: $0
{start|stop|status|restart|condrestart}"
exit 1
esac
exit $RETVAL
把这个文件保存到/etc/init.d/下命名为hello就是了。还要加上运行权限
chmod +x hello
现在就可以通过运行 service hello start|stop|status|restart|condrestart 进行运行等操作了。
最后通过命令:
chkconfig --add hello
发服务添加到自启动行列就可以了。
通过 setup 看看system services 里有没有 hello 吧
good luck~~