目录
进程的概念
程序与进程的关系
进程的分类
守护进程的分类
进程的PID
进程的状态
xinetd 守护进程服务
xinetd基本概念
xinetd工作原理
xinetd相关文件介绍
守护进程的管理命令
chkconfig 命令
service 命令
systemctl命令
查看进程状态相关命令
一般程序处理的过程
应用程序的执行文件存储在硬盘中,在用户执行程序文件时通过shell将其调用到硬件的内存中去,然后由内存交给CPU进行处理;CPU处理完成后将结果返回到内存,内存再通过shell输出给用户的输出设备
通过以上流程,我们就可以看到程序运行的结果
Linux操作系统概述1——操作系统、Shell、Kernal内核讲解-CSDN博客
Linux操作系统概述2——CentOS6/Redhat6版本的启动流程描述-CSDN博客
什么是进程
从用户层面:进程就是运行中的程序(程序运行起来被加载到内存中)
从操作系统层面:进程就是操作系统为了更好的管理程序,对运行中的程序进行信息描述
程序与进程的关系
程序就是存储在硬盘中的可执行文件;进程是由程序调用到内存中产生的
程序是静态的;进程是动态的
程序是永久的,进程是短暂的
进程有PCB(进程描述符),操作系统对进程管理就是通过进程描述符PCB进行管理的
程序崩溃时可以通过杀死进程停止程序运行,然后再重启程序来解决崩溃现象;killall可以直接将父进程、子进程杀死
按照进程的功能与服务对象分类
用户进程:通过用户执行程序或者内核之外的系统程序产生的进程;此类进程可以在用户的控制下运行或关闭
系统进程:通过执行系统内核程序而产生的进程(例如 执行内存资源扥配等相对底层的工作);该进程不受用户的干预,即使是root用户也无法干预
按照应用程序的服务类型分类
交互进程
交互进程需要与用户进行交互,等待用户输入相应信息才能够响应该进程(例如ctrl+c)
交互进程可运行于前台,也可以运行于后台
批处理进程
不需要用户干预而按预定顺序执行的进程;通常以脚本或命令文件的形式存在(包含了待执行的一系列任务或操作)
可以理解为shell脚本(shell脚本有多条命令,每条命令都有相应的交互进程,将这些进程打包,按顺序启用交互进程,就称为批处理进程)
守护进程(Daemon进程)——守护进程的名称通常以d结尾
守护进程是在后台运行的特殊进程,是一个生存期较长的进程;通常独立于控制终端,并且周期性的执行某种任务或者等待处理某些发生的事情
大部分守护进程在Linux系统启动时自己启动,并持续运行以提供某种服务(可以通过systemctl设置守护进程是否开机自启动),在系统关闭时就关闭该程序;某些守护进程可以在需要的时候手动启动(由周期性任务crond启动,也可以由用户终端通过systemctl启动进程)
Linux 计划任务讲解(一次性计划、周/长期性计划)_linux计划任务时间格式_-CSDN博客https://blog.csdn.net/m0_49864110/article/details/129191135?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22129191135%22%2C%22source%22%3A%22m0_49864110%22%7DLinux的大多数网络服务以及系统监控都是通过守护进程实现的(例如:httpd-http的守护进程、sshd-ssh的守护进程、xinetd-telnet等服务的服务进程)
Sysv——独立启动的守护进程
该守护进程由init脚本负责管理,一开机就会进入内存,一直处于listen状态
即使该守护进程不运行也会一直占用系统资源,一直启动,响应速度快
所有独立运行的守护进程的脚本都在/etc/rc.d/init.d目录下
系统服务都是独立启动的守护进程
例如 http的守护进程httpd就是独立启动的守护进程
Xinetd——超级守护进程
通过该守护进程来管理众多进程;但是xinetd自身是一个独立启动的守护进程,常驻内存
通过xinetd管理的进程在没有使用时会睡眠,不占用系统资源,节约资源,但是响应时间长
Xinetd超级守护进程的配置文件是/etc/xinetd.conf,超级守护进程的子进程存放在/etc/xinetd.d目录下
例如 telnet服务的守护进程就是xinetd
PID(process ID)
一个PID只标识一个进程
PID是程序被操作系统加载到内存成为进城后动态分配的资源
每次程序执行时操作系统都会重新加载PID
PPID(parent process ID)
PPID表示某个进程的父进程号;因为有些进程不是直接由程序产生的,而是由进程产生的子进程
所有进程追溯到最终都会落到进程号为1的进程身上,也就是初始化进程;初始化进程是linux内核启动后第一个执行的进程,引导系统来启动守护进程并运行必要的程序;RHEL 4、5、6初始化进程为init;RHEL7、8初始化进程为systemd
系统的进程状态(5个常用模式)
R状态(Running) 运行状态,此进程正在为用户提供服务
S状态(Sleeping) 休眠状态,此进程没有为用户提供服务,正在等待为用户提供服务,不会消耗系统资源
D状态(unstopped)不可中断状态,此进程无法被中断-异常,有可能为用户提供服务,也有可能没有为用户提供服务,都会消耗系统资源(类似于windows的异常响应状态),即使使用kill命令也无法将其中断
Z状态(zombie) 僵死状态,此进程已经终止,没有为用户提供服务,但是进程描述符依然存在,会消耗系统资源,可以在父进程下调用wait4()系统函数后将进程释放
T状态(stopped) 停止状态,此进程停止运行,不会为用户提供服务,也不会消耗系统资源
五个不常用的进程状态
<状态 高优先级状态
N状态 低优先级状态
L状态 被锁进内存状态
s状态 包含子进程状态
I(大写i)状态 多线程状态
xinetd全称为扩展互联网服务守护进程,是新一代的网络是守护进程,常常用来管理并保护多种轻量级的Internet服务,管理服务的同时保证这些服务的安全
系统默认哪些服务会使用xinetd作为守护进程
具体可以使用xinetd的服务再/etc/service文件中指出
标准的Internet服务:telnet、ftp
邮件服务:imap、pop3等
内部服务:echo、servers、services、time等
RPC服务:rstatd、walld、rquotad等(xinetd对RPC的支持不稳定,可以通过启用protmap与xinetd共存来解决此问题)
以Telnet服务为例子
telnet客户端访问23端口,将telnet请求提交给Xinetd守护进程
然后Xinetd守护进程激活对应的服务,并将其载入内存
最后Xinetd守护进程提供连接使得telnet客户端能够访问该服务
针对提供的连接,xinetd有两种方式
单线程single-threaded 为所有允许的访问者建立一个连接提供服务
多线程multi-threaded 为每一个允许的访问者建立一个连接提供服务
相关文件路径
/etc/xinetd.conf 该文件为xinetd服务的主配置文件
/etc/xinetd.d 该目录下存放着被托管的服务的目录(可以理解为主配置文件的补充)
主配置文件字段介绍
主配置文件由多个服务块组成,每个服务块的形式如下(也可以把服务块放在/etc/xinetd.d目录下的的不同文件中);服务块的格式如下
service 服务名称
{
服务相关配置
}
此处主配置文件配置了服务缺省的配置-也就是缺省的服务块(具体针对每个服务的配置也就是针对具体服务的服务块存放在/etc/xinetd.d目录下)
/etc/xinetd.d目录下文件介绍
不同文件表示不同的服务
针对Redhat 6之前或CentOS6之前的系统
通过chkconfig命令能够了解哪些服务在系统启动时自动启动,在特定的运行级别下启用或禁用的服务(修改的是/etc/rc[0-6].d文件夹中的内容)
主要用来管理服务的自启动和停止,允许用户设置在系统启动时自动运行的服务,并能够指定该服务的启动级别
相关命令
chkconfig --add 守护进程 配置该守护进程自启动
chkconfig --del 守护进程 停止该守护进程的自启动
chkconfig --level [0-6] 守护进程 在该运行级别加入该守护进程
chkconfig --list 列出已配置的服务以及它们在各个系统级别下的启用状态
service基础概念
针对Redhat 6之前或CentOS6之前的系统
service的工作原理是去/etc/init.d目录下去执行相关程序,用service命令对系统服务进程管理
相关命令
service 守护进程 start 启动该守护进程
service 守护进程 sop 停止该守护进程
service 守护进程 restart 重启该守护进程(PID会变)
service 守护进程 reload 重新加载配置该守护进程(PID不会变)
service 守护进程 status 查看该守护进程的状态
service 守护进程 start 启动该守护进程
systemctl命令是一个systemd工具,主要负责控制systemd系统和服务进程的管理工具
整合了chkconfig与service功能于一体,既可以事项服务的启动、停止、重启、重新加载配置、查看状态的功能,还可以添加服务为开机启动等功能
相关命令
systemctl start守护进程.service 启动该守护进程
systemctl sop 守护进程.service 停止该守护进程
systemctl restart守护进程.service 重启该守护进程(PID会变)
systemctl reload守护进程.service 重新加载配置该守护进程(PID不会变)
systemctl status守护进程.service 查看该守护进程的状态
systemctl start守护进程.service 启动该守护进程
systemctl enable守护进程.service 服务开机自启动
systemctl disable守护进程.service 服务开机禁用
systemctl list-units --type service –all 查看所有服务状态的详细信息
Linux基础命令2(系统信息、系统时间、系统进程相关命令以及历史命令介绍)_查看进程的命令-CSDN博客https://blog.csdn.net/m0_49864110/article/details/128959932?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128959932%22%2C%22source%22%3A%22m0_49864110%22%7D