ubuntu下编写开机自启守护进程,并记录进程信息到日志文件

步骤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文件里面。

 

 

 

时间: 2024-12-31 17:43:57

ubuntu下编写开机自启守护进程,并记录进程信息到日志文件的相关文章

如何在Ubuntu下安装和配置FTP服务器

FTP(文件传输协议)是一个较老且最常用的标准网络协议,用于在两台计算机之间通过网络上传/下载文件.然而, FTP 最初的时候并不安全,因为它仅通过用户凭证(用户名和密码)传输数据,没有进行加密. 警告:如果你打算使用 FTP, 需要考虑通过 SSL/TLS(将在下篇文章中讨论)配置 FTP 连接.否则,使用安全 FTP,比如 SFTP 会更好一些. 在这个教程中,我将向你们展示如何在 Ubuntu 中安装.配置并保护 FTP 服务器(VSFTPD 的全称是 "Very Secure FTP D

linux c+ stat+-为什么在ubuntu下调用stat函数,执行路径不同,结果也会不同?

问题描述 为什么在ubuntu下调用stat函数,执行路径不同,结果也会不同? 在ubuntu下编写判断一个文件是否目录得程序,调用了sys/stat.h头文件中得stat函数,生成可执行文件后,在不同路径下执行结果是不一样得,烦请各位大神帮忙看一下是什么情况,多谢多谢(没分额). 说明: 在我得电脑上,程序存放得绝对路径是/home/xiaoming/Desktop/linuxStudy/filesystem/,执行程序时,分别在/home/xiaoming/Desktop/linuxStud

Windows7 开机自启脚本

背景 如何开机自启 快捷方式 第一步 第二步 第三步 第四步 VB实现 逻辑脚本 VB代码 实现效果 两种方法区别 总结 背景 有些时候,我们需要做一些定时,或者指定时间运行的任务.然而相对于普通电脑和服务器而言,还是有一定的区别的. 对于服务器而言,基本上会一直处于一个运行状态.所以想要在指定的时间运行程序,或者脚本也会是很方面的.大不了写个死循环一直监听呗,虽然消耗了点服务器资源,但这点消耗不会很大,也是可以接受的.如果觉得自己写的不够精简,高效. 还可以使用Celery, Aspsched

ubuntu下无法打开USB串口

问题描述 ubuntu下无法打开USB串口 有个串口的问题想请教各位一下. 问题背景:在ubuntu下跑识别apriltags程序,将处理后的信息用串口发出去. 出现问题:串口无法打开. 我已经做出的尝试: 1.最开始我用那台座机成功过一次.可以在电脑端用minicom串口调试助手,自发自收数据. 2.后来又修改了一些串口发送的通信程序,再去实验就不好用了. 3.接着去网上各种百度论坛答案,尝试着给串口安装pl2303驱动,发现并不好用. 当串口第一次插上电脑时,我用dmesg | grep t

ubuntu下geekos使用bochs出现问题???

问题描述 ubuntu下geekos使用bochs出现问题??? 错误信息: 00000000000i[ ] LTDL_LIBRARY_PATH not set. using compile time default '/usr/lib/bochs/plugins' 00000000000i[ ] BXSHARE not set. using compile time default '/usr/share/bochs' 00000000000i[ ] reading configuration

Ubuntu下开启php调试模式报错信息解决办法_Linux

Ubuntu下开启php调试模式报错信息解决办法 在Ubuntu下php的缺省设置是不显示错误信息的,如果程序出错会显示"无法处理此请求的错误提示",这在开发环境下非常不方便. 其实我们只要编辑下apache的配置文件就好 1.我的apache 配置文件目录是/etc/apache2/apache2.conf sudo vim /etc/apache2/apache2.conf 再最后加入以下两行 php_flag display_errors on php_value error_r

lnav:Linux下一个基于控制台的高级日志文件查看器

服务器日志是一个由服务器创建并经常更新.用于抓取特定服务和应用的所有活动信息的日志文件.当你的应用或者服务出现问题时这个文件就会非常有用.从日志文件中你可以获取所有关于该问题的信息,例如基于警告或者错误信息它什么时候开始表现不正常. LNAV(Log file Navigator)是 Linux 下一个基于控制台的高级日志文件查看器.它和其它文件查看器,例如 cat.more.tail 等,完成相同的任务,但有很多普通文件查看器没有的增强功能(尤其是它自带多种颜色和易于阅读的格式). 它能在解压

lnav:Linux 下一个基于控制台的高级日志文件查看器

服务器日志是一个由服务器创建并经常更新.用于抓取特定服务和应用的所有活动信息的日志文件.当你的应用或者服务出现问题时这个文件就会非常有用.从日志文件中你可以获取所有关于该问题的信息,例如基于警告或者错误信息它什么时候开始表现不正常. LNAV(Log file Navigator)是 Linux 下一个基于控制台的高级日志文件查看器.它和其它文件查看器,例如 cat.more.tail 等,完成相同的任务,但有很多普通文件查看器没有的增强功能(尤其是它自带多种颜色和易于阅读的格式). 它能在解压

camera+-ubuntu下qtcreator工程中利用opencv编写工程,摄像头无法第二次打开

问题描述 ubuntu下qtcreator工程中利用opencv编写工程,摄像头无法第二次打开 ubuntu下qtcreator工程中利用opencv编写工程,opencv库操作,摄像头第一次可以正常使用,一旦点击停止键后,无法第二次打开,再次运行时就会报错.libv4l2: error turning on stream: Invalid argument cap 在析构函数中我有作释放.请问这是什么原因啊?? ---------------- VideoCapture cap; cap.op