千家信息网

linux守护进程怎么创建

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章主要讲解了"linux守护进程怎么创建",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"linux守护进程怎么创建"吧!在linux中,守护进程也
千家信息网最后更新 2025年12月01日linux守护进程怎么创建

这篇文章主要讲解了"linux守护进程怎么创建",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"linux守护进程怎么创建"吧!

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

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

守护进程的定义

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

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

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

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

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

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

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

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

守护进程的特点

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

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

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

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

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

  • 进程组:它是由一个或多个进程组成,进程组号(GID)就是这些进程中的进程组长的PID。

  • 会话:其实叫做会话期(session),它包括了期间所有的进程组,一般一个会话期开始于用户login,一般login的是shell终端,所以shell终端又是此次会话期的首进程,会话一般结束于logout。对于非进程组长,它可以调用setsid()创建一个新的会话。

  • 控制终端(tty):一般就是指shell终端,它在会话期中可有也可以没有。

创建守护进程

创建守护进程最关键的一步是调用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守护进程怎么创建这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

进程 终端 控制 系统 用户 运行 就是 函数 参数 名字 命令 文件 时候 服务 任务 信息 后台 学习 特殊 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 access数据库如何连接到数据源 用友售后服务器 黑魂重制版游戏服务器正在维修 智能家居系统服务器系统 网络安全规模最大 软件开发中影响产品质量特性 80年代欧美网络技术争夺 上海局部点胶软件开发 重庆市网络安全宣传短篇 阿里巴巴水冷服务器 赣榆县天气预报软件开发 苏州阿里云服务器业务部署 云南crm软件开发公司 经济下行网络安全创业公司 东城区网络安全培训 徐州软件开发定制价格 天涯明月刀各区服务器位置 搜发网络技术有限公司 附加数据库怎样加空白数据库 中学网络安全宣传小结 测试服务器网速命令 php获取全部表单数据库 微信被上海轩盒网络技术服务 数据库日志恢复工具 网络技术操作题高中 上蔡一中网络安全宣传 由于安全原因无法与服务器 服务器系统哪个版本支持九代 联想sr590服务器连接网络 数据库技术及应用王成良电子书
0