ubuntu下编写开机自启守护进程,并记录进程信息到日志文件
2013-04-15 18:25
288 查看
步骤1:编写守护进程
void init(){ pid_t pid; int i; pid=fork(); //创建第一子进程 if(pid<0) exit(1);//创建失败退出 if(pid>0) exit(0);//父进程退出 setsid(); //第一子进程成为领头进程,脱离终端 pid=fork(); //第一子进程生成第二子进程 if(pid<0) exit(1);//创建失败退出 if(pid>0) exit(0);//第一子进程退出 chdir("/home/ling/文档");//切换目录 umask(0); //改变文件创建掩码 for(i=0;i<NOFILE;i++) //关闭文件流 close(i); }
注意这里chdir函数中的路径就是日志文件的保存路径。
步骤2:记录进程信息到日志文件
void main(){ char buf[256]; FILE *fp,*p; init(); while(1){ sleep(30); //每30s记录一次 if((fp=fopen(“test.log”,“a”))>=0){ //打开文件test.log,参数a表示以追加的形式打开 p=popen(“ps-eopid,user,cmd,start_time,etime”,“r”);//将指针p连接到ps命令的标准输出 while(fgets(buf,sizeof(buf),p)!=0) //获取输出内容并保存在buf中 fprintf(fp,“%s\n”,buf); //以字符串的形式将buf中的内容写到fp指定的文件中 pclose(p); } fclose(fp); } }
步骤3:编译运行,设置开机启动
编译程序命令行下执行:
gccprotect.c –o protect
得到可执行文件protect,再执行:
./protect
即可运行程序。
开机启动
安装sysv-rc-conf:
sudo apt-get installsysv-rc-conf
执行:
sudosysv-rc-conf 这里是你的程序名称 on
到这里就可以的,但重启之后你在终端会找不到这个程序的信息,但它其实在后台运行。
设置开机启动的另一种方法就是直接把启动命令写到/etc/rc.local文件里面。
相关文章推荐
- .Net写txt文件-简单的记录执行日志信息代码
- 学习记录之让ubuntu开机自动挂载文件命令
- 在守护进程中实现临时输出一些调试信息到指定的文件
- 自己动手实现一个守护进程,当控制台窗口关闭时还可以在后台运行。每隔一秒钟向my.log文件中插入一条记录
- 存储过程,捕获错误信息记录到日志文件中
- ★实验 8-1 1. 创建一个守候进程。并为自己创建独立的日志文件。 2. 每隔 1s 向日志文件中写入如下信息: a) 未使用的内存大小(MemFree) 可以从/proc/meminf
- 在Ubuntu中和Android中添加开机自启动的守护进程
- 在Ubuntu中和Android中添加开机自启动的守护进程
- ★实验 8-2 1. 创建两个守候进程。每个守候进程各自创建独立的日志文件。 2. 每隔 1s 向日志文件中写入如下信息: a) 守候进程 1:未使用的内存大小(MemFree) b) 守
- ubuntu下设置开机自启守护进程
- 在Ubuntu中和Android中添加开机自启动的守护进程
- log4net 如何跨域或者跨进程日志记录在同一个日志文件中以及数据库中
- 在Ubuntu中和Android中添加开机自启动的守护进程
- 一个linux守护进程的编写(Ubuntu环境下)
- 如何记录redo和arch进程到日志文件(上)
- 使用触发器实现记录oracle用户登录失败信息到alert.log日志文件
- asp.net 错误信息记录到日志文件
- PHP的错误信息记录到日志文件中
- Ubuntu 9.10 cpu 温度过高“Temperature/speed normal”,导致kern.log记录日志文件过大的解决办法
- Ubuntu下的守护进程的编写