Linux 2.进程(守护进程)

news2024/9/24 3:27:02

守护进程

  • 何谓守护进程
  • 常见守护进程
  • 进程查看命令ps
  • kill命令
  • 编写简单守护进程
  • 守护进程的父进程

何谓守护进程

  1. daemon,表示守护进程,简称为d(进程名后面带d的基本就是守护进程)

  2. 长期运行(一般是开机运行直到关机时关闭)

  3. 与控制台脱离(普通进程都和运行该进程的控制台相绑定,表现为如果终端被强制关闭了则这个终端中运行的所有进程都被会关闭,背后的问题还在于会话)

  4. 服务器(Server),服务器程序就是一个一直在运行的程序,可以给我们提供某种服务(譬如nfs服务器给我们提供nfs通信方式),当我们程序需要这种服务时我们可以调用服务器程序(和服务器程序通信以得到服务器程序的帮助)来进程这种服务操作。服务器程序一般都实现为守护进程。

常见守护进程

  1. syslogd,系统日志守护进程,提供syslog功能。

在这里插入图片描述

  1. cron,cron进程用来实现操作系统的时间管理,linux中实现定时执行程序的功能就要用到cron。

在这里插入图片描述

进程查看命令ps

ps -ajx	//偏向显示各种有关的ID号

ps -aux //偏向显示进程各种占用资源
ps -aux | grep syslogd // grep 过滤提取想看的进程名"syslogd"

kill命令

kill -信号编号 进程ID //向一个进程发送一个信号
kill -9 xxx //将向xxx这个进程发送9号信号,也就是要结束进程

编写简单守护进程

  1. 子进程等待父进程退出

  2. 子进程使用setsid创建新的会话期,脱离控制台

  3. 调用chdir将当前工作目录设置为/

  4. umask设置为0以取消任何文件权限屏蔽

  5. 调用sysconf函数关闭所有文件描述符

  6. 调用open函数,将0、1、2定位到/dev/null,赋值可读可写权限

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

// 函数作用就是把调用该函数的进程变成一个守护进程
void creat_daemon()
{
	pid_t pid = 0;

	pid = fork();

	if(pid == -1)
	{
		perror("fork");

		exit(-1);
	}
	
	// 父进程直接退出
	if(pid > 0)
	{
		exit(0);
	}
	
	// 执行到这里就是子进程
	
	// setsid将当前进程设置为一个新的会话期session,目的就是让当前进程
	// 脱离控制台。
	pid = setsid();

	if(pid < 0)
	{
		perror("setsid");

		exit(-1);
	}
	
	// 将当前进程工作目录设置为根目录
	chdir("/");

	// umask设置为0确保将来进程有最大的文件操作权限
	umask(0);

	int i = 0;
	
	// 关闭所有文件描述符
	// 先要获取当前系统中所允许打开的最大文件描述符数目
	for(i = 0; i < sysconf(_SC_OPEN_MAX);i++)
	{
		close(i);
	}

	open("/dev/null", O_RDWR);
	open("/dev/null", O_RDWR);
	open("/dev/null", O_RDWR);
}

int main()
{
	creat_daemon();
	
	while(1)
	{
		printf("This is my daemon!\n");
	}

	return 0;
}

运行./9_daemon

再通过

ps -ajx

查看我自己编写的守护进程“9_daemon”

在这里插入图片描述

如果想杀死守护进程,则输入

kill -9 pid

在这里插入图片描述

守护进程的父进程

在 Linux 系统中,守护进程的父进程通常是初始化进程。在现代 Linux 发行版中,这通常是 systemd 或者类似的进程管理器。systemd 是一个系统和服务管理器,负责启动系统服务和守护进程,并管理它们的生命周期。

因此,如果你在 Linux 系统中启动一个守护进程,其父进程很可能是 systemd 进程或者由 systemd --user 管理的用户级进程。这是因为 systemd 是 Linux 中常见的进程管理器,负责在系统启动时启动和管理各种服务和守护进程。

在这里插入图片描述

顺着ppid找到 9.daemon 守护进程的父进程号为1493,该进程恰好为systemd --user进程

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flask项目在Pycharm中设置局域网访问

打开PyCharm导入本应用。点击Run标签中的Edit Configurations 其中Target type选择Script path&#xff0c;Target填入本项目中app.py的路径&#xff0c;Additional optional填入--host0.0.0.0(不要有空格)。 再重新运行项目&#xff0c;会观察到除了原本的http://127.0.0.1:50…

java在线问卷调查系统的设计与实现(springboot+mysql源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线问卷调查系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于java的在线问卷调查…

函数 基础知识

本笔记为观看 50 函数-函数的定义_哔哩哔哩_bilibili的学习笔记 1 函数概述 作用:将一段经常使用的代码封装起来&#xff0c;减少重复代码一个较大的程序&#xff0c;一般分为若干个程序块&#xff0c;每个块实现特定的功能。 2 函数的定义 eg: int max(int a,int b); {retu…

社交媒体数据恢复:钉钉

在数字化办公日益普及的今天&#xff0c;钉钉作为一款综合性的企业级通讯工具&#xff0c;已经深入到众多企业和个人的工作与生活中。然而&#xff0c;在日常使用过程中&#xff0c;我们难免会遇到一些意外情况导致数据丢失的问题。本文将针对钉钉数据恢复这一主题&#xff0c;…

windows下python opencv ffmpeg读取摄像头实现rtsp推流 拉流

windows下python opencv ffmpeg读取摄像头实现rtsp推流 拉流 整体流程1.下载所需文件1. 1下载rtsp推流服务器1.2 下载ffmpeg2. 开启RTSP服务器3. opencv 读取摄像头并调用ffmpeg进行推流4. opencv进行拉流整体流程 1.下载所需文件 1. 1下载rtsp推流服务器 下载 RTSP服务器 下…

pyqt+opencv+常用图像算法可视化[资源介绍]

包含的算法&#xff1a; 均值滤波高斯滤波中值滤波Sobel边缘检测Laplacian边缘检测Canny边缘检测膨胀腐蚀灰度化直方图均衡化 包含的功能&#xff1a; 从文件中打开图片返回上一张处理后的图像保存处理后的图像文件退出系统 系统界面&#xff1a; 见我的资源&#xff0c;ht…

大型网站系统架构演化实例_3.使用服务集群改善网站并发处理能力

1.使用服务集群改善网站并发处理能力 使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时&#xff0c;不要企图去更换更强大的服务器&#xff0c;对大型网站而言&#xff0c;不管多么强大的服务器&#xff0c;对大型网站而言&…

数字零售力航母-看微软如何重塑媒体

数字零售力航母-看微软如何重塑媒体 - 从2024全美广播协会展会看微软如何整合营销媒体AI技术和AI平台公司 2024年&#xff0c;微软公司联合英伟达总司&#xff0c;赞助全美广播协会展会。本次展会微软通过搭建一个由全面的合作伙伴生态系统支持的可信和安全的平台&#xff0c;…

什么是301重定向,什么时候应该使用?301重定向详细说明

如果您将网站从一个URL移动到另一个URL&#xff0c;您需要采取必要的步骤来确保您的访问者被发送到正确的位置。在技术领域&#xff0c;这被称为301重定向。 在这里&#xff0c;我们将讨论什么是301重定向&#xff0c;何时需要使用&#xff0c;以及如何在网站或WordPress中重定…

【云计算】云计算八股与云开发核心技术(虚拟化、分布式、容器化)

【云计算】云计算八股与云开发核心技术&#xff08;虚拟化、分布式、容器化&#xff09; 文章目录 一、什么是云计算&#xff1f;1、云计算的架构&#xff08;基础设施&#xff0c;平台&#xff0c;软件&#xff09;2、云计算的发展 二、如何做云计算开发&#xff1f;云计算的核…

第十五届蓝桥杯复盘python大学A组——试题C 数字诗意

思路 数字可以分为 有诗意的数字可以写成 (ij)(j-i1)/2 &#xff08; i、j都是正整数 &#xff09; ij 、j-i1 的奇偶性不同&#xff08;因为i、j都是正整数&#xff09; 因此&#xff0c; 如果一个数是奇数就一定有诗意 eg.312 ,523,734,945… 原因&#xff1a;根据上述分…

PCIe错误报告机制

1 PCIe两种错误报告机制 Baseline Error Reporting (基线错误报告): 这是所有PCIe设备必须支持的基本错误报告机制。基线错误报告提供了一组基本的错误检测和报告功能&#xff0c;它包括的功能有&#xff1a; 错误检测&#xff1a;能够检测到不同类型的错误&#xff0c;例如数…

OpenCV从入门到精通实战(四)——答题卡识别判卷系统

基于OpenCV的答题卡识别系统&#xff0c;其主要功能是自动读取并评分答题卡上的选择题答案。系统通过图像处理和计算机视觉技术&#xff0c;自动化地完成了从读取图像到输出成绩的整个流程。下面是该系统的主要步骤和实现细节的概述&#xff1a; 1. 导入必要的库 系统首先导入…

三、fpga对完成过滤和校验的有效包数据进行有效像素提取、MATLAB对数据源进行处理与下发(完整实现pc机→显示器通信链路)

前言:上篇文章实现了MATLAB模拟发送UDP以太网协议数据包到fpga,能实现双沿数据→单沿数据转换,并将转换后的数据进行包过滤和crc校验,本篇内容要实现真正的从pc机下发视频数据,经过千兆以太网传输存储到fpga 的ddr3中,然后通过hdmi读出到显示屏上。 文章目录 一、模块设…

偏微分方程算法之一阶双曲差分法

目录 一、研究目标 二、理论推导 2.1 引言 2.2 迎风格式 2.3 完全不稳定差分格式 2.4 蛙跳格式&#xff08;Leapfrog&#xff09; 2.5 Lax-Friedrichs格式 2.6 Lax-Wendroff格式 2.7 Beam-Warming格式 2.8 隐格式 2.9 Courant-Friedrichs-Lewy条件&#xff08;CFL条…

apache是什么

​Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上&#xff0c;由于其跨平台和安全性被广泛使用&#xff0c;是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充&#xff0c;将Perl/Python等解释器编译…

【GDAL-Python】3-在Python中使用GDAL处理数字高程模型DEM

文章目录 1-介绍1.1 主要内容1.2 坡度、坡向、山体阴影 2-代码实现2.1 数据介绍2.2 代码实现2.3 效果显示 3.参考资料3.1 使用richdem库中的TerrainAttribute计算坡度、坡向、山体阴影 1-介绍 1.1 主要内容 &#xff08;1&#xff09;教程内容&#xff1a;使用GDAL处理数字高…

安装Milvus的可视化工具Attu教程

提供两种方式来安装可视化工具Attu 一、docker安装 # 执行命令&#xff0c;加个 -d 在后台运行 docker run -d -p 8000:3000 -e MILVUS_URL127.0.0.1:19530 zilliz/attu:v2.2.8 至此安装完成&#xff01; 浏览器输入地址 http:127.0.0.1:8000即可访问 Attu主页 如果拉取最新…

初识若依-项目介绍与部署(前后端分离版)

1-介绍 RuoYi-Vue 是一个 Java EE 企业级快速开发平台&#xff0c; 基于经典技术组合&#xff08;Spring Boot、Spring Security、MyBatis、Jwt、Vue&#xff09;&#xff0c; 内置模块如&#xff1a;部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码…

Py深度学习基础|Numpy基础总结

注&#xff1a;本文来自菜鸟教程学习总结 一、数组属性 NumPy 的数组中比较重要 ndarray 对象属性有&#xff1a; 注意&#xff1a;使用reshape后&#xff0c;数组的结构&#xff08;即元素的排列顺序和内在连接&#xff09;没有改变&#xff0c;但因为返回的是一个视图&#…