linux守护进程设置开机自启动的两种方式
前期准备
首先,我们创建一个守护进程
1、守护进程初始化程序init.c文件如下:
#include<unistd.h> #include<signal.h> #include<sys/param.h> #include<sys/types.h> #include<sys/stat.h> void init_daemon(void) { pid_t child1,child2; int i; child1 = fork(); if(child1>0) { exit(0); } else if(child1<0) { perror("创建子进程失败"); exit(1); } setsid(); chdir("/tmp"); umask(0); for(i=0;i<NOFILE;++i) close(i); return; }
2、测试文件6-8.c内容如下:
#include<stdio.h> #include<time.h> void init_daemon(void); int main() { FILE *fp; time_t t; init_daemon(); while(1) { sleep(10); if((fp=fopen("6-8.log","a"))>=0) { t=time(0); fprintf(fp,"守护进程还在运行,时间是:%s",asctime(localtime(&t))); fclose(fp); } } }
实验结果如下
第一种方式
自启动程序方法1:
在etc/rc.local文件最后一行加入/home/robin/code/6-8 (其中6-8测试程序名称,一定要写绝对路径)。即可自启动
第二种方式
自启动程序方法2:
创建linux服务,步骤如下:
写服务启动脚本文件(后附例子)
修改脚本文件chmod 777 6-8(设置脚本文件的权限)
脚本文件拷贝到 /etc/rc.d/init.d/
chkconfig --add 6-8添加服务
重新启动(完成)
6) 重新启动后在终端输入命令:ps -A -opid,stime,etime,args即可查看开机自启的守护进程。
7)查看服务是否存在
chkconfig --list | grep wkcenter
查看服务状态
chkconfig wkcenter on
注意, 确认wkcenter在2,3,4,5中任意或者部分开启, 必须为绿字. 灰字代表服务无法开机启动或者其他问题
8 )测试
临时开启命令测试
service wkcenter start
#!/bin/bash # # autoruntest the shell script takes care of autoruntest auto start and stop # # chkconfig: 2345 20 80 # description: 6-8 # processname: /etc/rc.d/init.d/autoruntest EXEC_PATH=/home/robin/code/6-8 EXEC=6-8 PID_FILE=/var/run/6-8.pid DAEMON=/home/robin/code/6-8 # Source function library. . /etc/rc.d/init.d/functions if ! [ -x $EXEC_PATH/$EXEC ] ; then echo "ERROR: $EXEC_PATH/$EXEC not found" exit 1 fi stop() { echo "Stoping $EXEC ..." killall $DAEMON >/dev/null usleep 100 echo "Shutting down $EXEC: [ OK ]" } start() { echo "Starting $EXEC ..." $DAEMON > /dev/null & usleep 100 echo "Starting $EXEC: [ OK ]" } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; status) status -p $PID_FILE $DAEMON ;; *) echo "Usage: service $EXEC {start|stop|restart|status}" exit 1 esac exit $?
标签:EXEC,stop,c++,start,init,linux,自启动,include From: https://www.cnblogs.com/opensmarty/p/18011712