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

 


 



 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
42 0
|
2月前
|
Ubuntu
百度搜索:蓝易云【Ubuntu开机自启服务systemd.service配置教程】
现在,你的服务将在Ubuntu开机时自动启动,并在之后的启动中持续运行。记得根据你的实际需求修改 `your_service_name.service`文件中的相关信息。
56 2
|
3月前
|
Linux
|
3月前
|
Ubuntu Shell
百度搜索:蓝易云【Ubuntu系统如何设置开机自启动shell脚本?】
现在,你的Shell脚本将会在Ubuntu系统开机时自动执行。请确保脚本中的逻辑是正确的,以免对系统造成不必要的影响。
32 0
|
3月前
|
Ubuntu Linux 时序数据库
|
1月前
|
监控 Linux Shell
【Shell 命令集合 系统管理 】⭐Linux 显示系统中的进程信息 procinfo命令 使用指南
【Shell 命令集合 系统管理 】⭐Linux 显示系统中的进程信息 procinfo命令 使用指南
26 0
|
2月前
|
数据采集 Web App开发 文字识别
高并发数据采集:Ebay商家信息多进程爬虫的进阶实践
高并发数据采集:Ebay商家信息多进程爬虫的进阶实践
|
2月前
|
监控 Ubuntu
百度搜索:蓝易云【ubuntu开启sar记录日志】
请注意,sysstat默认情况下会每10分钟记录一次系统性能信息。你可以通过编辑配置文件 `/etc/cron.d/sysstat`来调整记录频率。另外,sar记录的性能信息是文本格式,你可以使用工具如 `sadf`来转换成其他格式如CSV,以便更方便地分析和处理。
23 5
|
3月前
|
存储 JSON 运维
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
49 0
|
3月前
|
Ubuntu Docker 容器
百度搜索:蓝易云【ubuntu docker日志docker ubuntu desktop】
这样,你就可以查看Docker容器的日志信息。记得将 `CONTAINER_ID`替换为你要查看的实际容器ID。
34 0