• 技术文章 >运维 >linux运维

    什么是linux守护进程

    青灯夜游青灯夜游2022-02-25 15:51:29原创658

    在linux中,守护进程也称“精灵进程”,是一个在后台运行且不受任何终端控制的特殊进程,用于执行特定的系统任务。守护进程独立于控制终端并且周期性的执行某种发生的事件。

    本教程操作环境:linux5.9.8系统、Dell G3电脑。

    守护进程的定义

    守护进程也称为精灵进程(Daemon),是一个在后台运行且不受任何终端控制的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。

    它独立于控制终端并且周期性的执行某种发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。

    Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互。其他进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程(守护进程)不受用户登录注销的影响,它们一直在运行着。这种进程有一个名称叫守护进程(Daemon)。

    下面们用ps axj命令查看系统中的进程。参数a 表示不仅列出当前用户的进程,也列出所有其他用户的进程; 参数x 表示不仅列出有控制终端的进程,也列出所有无控制终端的进程;参数j 表示列出与作业控制相关的信息。

    1.png

    (1)凡是TPGID一栏写着-1的都是没有控制终端的进程,也就是守护进程;

    (2)在COMMAND一列用[ ]括起来的名字表示内核线程,这些线程在内核里创建,没有用户空间代码,因此没有程序文件名和命令行,通常采用以k开头的名字,表示Kernel;

    (3)init进程我们已经很熟悉了,udevd负责维护/dev目录下的设备文件,acpid负责电源管理,syslogd负责维护/var/log下的日志文件;

    (4)可以看出,守护进程通常采用以d结尾的名字,表示Daemon。

    守护进程的特点

    (1)在Linux中,每个系统与用户进行交流的界面成为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端;

    (2)当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,(脱离终端的目的是为了避免进程在运行的过程中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断),它从被执行的时候开始运转,直到整个系统关闭才退出(当然可以认为是杀死相应的守护进程);

    (3)如果想让某个进程不因为用户或中断或其他变化而影响,那么就必须把这个进程变成一个守护进程。

    进程,进程组,会话,控制终端之间的关系

    因为守护进程的创建需要改变这些环境参数,所以了解它们之间的关系很重要:

    2.png

    创建守护进程

    创建守护进程最关键的一步是调用setsid函数创建一个新的Session Leader。

    #includepid_t setid(void);//该函数调用成功时返回新创建的Session的id(其实也就是当前进程的id),出错返回-1。

    注意,调用这个函数之前,当前进程不允许是进程组的Leader,否则该函数返回-1。要保证当前进程不是进程组的Leader也很容易,只要先fork再调用setsid就行了。fork创建的子进程和父进程在同一个进程组中,进程组的Leader必然是该组的第一个进程,所以子进程不可能是该组的第一个进程,在子进程中调用setsid就不会有问题了。

    成功调用该函数的结果是:

    (1)创建一个新的Session,当前进程为Session Leader,当前进程的id就是Session的id;

    (2)创建一个新的进程组,当前进程为进程组的Leader,当前进程的id就是进程组的id;

    (3)如果当前进程原本有一个控制终端,则它失去这个终端,成为一个没有控制终端的进程。(所谓失去控制终端指的是,原来的控制终端仍然是打开的,仍然可以读写,但只是一个普通的打开文件,而不是控制终端了)。

    如何杀死守护进程

    1.首先ps axj | grep 守护进程名字,找到相应的守护进程,然后使用kill -9 守护进程名杀掉;

    2.利用ps -ef命令查找相应的守护进程,再用kill -9命令将其杀死;

    3.创建shell脚本对进程的启动、关闭、重启进行自动管理。

    相关推荐:《Linux视频教程

    以上就是什么是linux守护进程的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:linux 守护进程
    上一篇:linux的流程图软件有哪些 下一篇:linux中怎么修改内核
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 深入浅析了解Linux学习笔记之系统任务设置• Linux学习笔记之文件系统(整理分享)• 经典技巧之Linux进程间通信• 技术解答linux在/下的定义和规范• 一文详解Windows和Linux环境下怎么安装配置PHP• Linux中绝对用得到的四个技巧!• linux的流程图软件有哪些
    1/1

    PHP中文网