Linux守护进程

Linux守护进程是一类在后台运行的特殊进程,用于执行特定的系统任务。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。

Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。

守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机才随之一起停止运行。守护进程一般都以root用户权限运行,因为要使用某些特殊的端口(1-1024)或者资源。守护进程的父进程一般都是init进程,因为它真正的父进程在fork出守护进程后就直接退出了,所以守护进程都是孤儿进程,由init接管。守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备stderr的输出都需要特殊处理。

守护进程的名称通常以d结尾,比如sshd、xinetd、crond等。另外,有一些守护进程只在需要的时候才启动,完成任务后就自动结束。


Linux守护进程在退出后并不会自动重启。但是,有一些方法可以实现守护进程在退出后自动重启。

  1. Shell脚本:编写一个shell脚本,轮询监控应用的进程,如果出现崩溃进程不在的情况下,自动启动应用程序。

  2. Systemd:Systemd是Linux系统工具,用来启动守护进程,可以配置服务在down掉后自动重启。

  3. /proc目录:每一个被创建的线程都会放在/proc文件夹下,而在/proc文件夹的以线程ID命名的文件夹里面都包含有一堆关于这个线程ID的相关信息。可以遍历/proc文件夹下所有的进程ID,然后读取/proc/[进程ID]/status的文件内容。如果没有找到我们想要的这个线程名字,就用execl(“./a.out”)重启这个程序¹。

  4. 终端命令:通过终端命令即可看到有没有这个线程,然后如果需要PID,或者名字,就需要去网上找一下具体的grep用法,来得到想要的信息。

这些方法可以帮助你实现守护进程在退出后自动重启的功能。但是,请注意,这些方法可能需要一定的Linux知识和编程技能。

你可能感兴趣的:(我的博客,linux)