关于进程process

2024-01-09 10:30:42

什么是进程

进程是一个在系统中运行的程序

进程是已启动的可执行程序的运行实例,进程有以下组成部分:

  • 已分配内存的地址空间

  • 安全属性,包括所有权凭据和特权

  • 进程代码的一个或多个执行线程

  • 进程状态

程序:二进制文件,静态/bin/date,/usr/sbin/httpd,/usr/sbin/sshd,/usr/local/nginx/sbin/ngix

进程:是程序运行的过程,动态,有生命周期及运行状态

进程类型

  • 守护进程:在系统引导过程中启动的进程,跟终端无关的进程
  • 前台进程:跟终端相关,通过终端启动的进程
    进程
    父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性之需。PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:

centos5/6:使用init命令启动一个进程

centos7:使用 systemd启动一个进程

进程状态

子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信息请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵尸(zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

? 在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。

  • R运行状态(runing): 表明进程要么在运行中要么在运行队列里,并不意味着进程一定在运行中。

  • S睡眠状态(sleeping):意味着进程在等待事件的完成(这里的睡眠有时候也叫做可中断睡眠)

  • D磁盘睡眠状态(Disk sleep): 有时候也叫做不可中断睡眠,在这个状态的进程通常会等待IO的结束

  • T停止状态(stopped):可以通过发送SIGSTOP信号给进程来停止(T)进程。这个被暂停的进程可以通过发送SIGCNT信号让进程继续运行。

  • Z僵尸状态(zombie):通知父进程回收所有的资源

  • X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。

    • 僵尸进程:当一个进程fork一个子进程之后,如果子进程退出,而父进程没有利用wait 或者waitpid 来获取子进程的状态信息,那么子进程的状态描述符依然保存在系统中。
    • 孤儿进程:当一个父进程fork一个子进程之后,父进程突然被终止了,那么这个子进程就成为了一个孤儿进程,它会被init进程接管

查看进程

ps命令

ps命令用于显示当前进程的状态

静态查看进程ps 注: ps -aux 不同于 ps aux

常用组合:aux 
u:以用户为中心组织进程状态信息显示 
a:与终端相关的进程; 
x:与终端无关的进程; 
[root@wdy ~]# ps -uax 
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 
用户 进程ID CPU占用 内存占用 
VSZ:Virtual memory SiZe 虚拟内存集 
RSS:ReSident Size 常驻内存集———其他的都可以放入交换内存中
TTY:执行的终端编号,直接w命令可以看到
STAT:进程状态 
    R:running 
    S:interruptable sleeping
    D:uninterruptable sleeping 
    T:stopped 
    Z:zombie 
        +:前台进程 
        l:多线程进程 
        N:低优先级进程 
        <:高优先级进程 
        s:session leader 
START:启动时间 
TIME:运行占据cpu的累积时长 
COMMAND:由哪个命令来启动的相关进程 
常用组合:ps -ef 
    -e:显示所有进程 
    -f:显示完整格式程序信息 
常用组合:ps -eFH 
    -F:显示完整格式的进程信息 
    -H:以进程层级格式显示进程相关信息 
常用组合:eo,axo 
自定义想要查询的字段值 -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm -axo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wcha n:14,comm 
ni:nice值 
pri:priority,优先级 
psr:processor,CPU 
rtprio:实时优先级
[root@wdy ~]# ps aux |less 
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 
root 1 0.0 0.3 193940 6416 ? Ss 9月09 0:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 
root 2 0.0 0.0 0 0 ? S 9月09 0:00 [kthreadd]

USER 运行进程的用户

PID 进程ID

%CPU CPU占用率

%MEM 内存占用率

VSZ 占用虚拟内存

RSS 占用实际内存 驻留内存

TTY 程序运行的终端

STAT 进程状态 man ps(/STATE)

  • D:不可中断睡眠,将一直等待事件的发生或等待某种系统资源

  • R:运行

  • S:可中断睡眠 Sleep

  • T:停止的进程

  • Z:僵尸进程,不存在但暂时无法消除

    • 每个进程在运行结束后都会处于僵死状态,等待父进程调用进而释放系统资源,处于该状态的进程已经运行结束,但是它的父进程还没有释放其系统资源
  • X:死掉的进程

  • W:没有足够的内存可分配

  • <:高优先序的进程

  • N:低优先序的进程

  • +:前台进程

  • l:多线程进程

  • s:主进程(先导进程),有子进程的进程

? Ss s进程的领导者,父进程

? S< <优先级较高的进程

? SN N优先级较低的进程

? R+ +表示是前台的进程组

? Sl 以线程的方式运行

START 进程的启动时间

TIME 进程占用CPU的总时间

COMMAND 进程文件,进程名

[root@wdy ~]# ps aux --sort %cpu |less 	# 按照CPU使用率排序 
[root@wdy ~]# ps aux --sort -%cpu |less 
[root@wdy ~]# ps aux --sort rss |less 
[root@wdy ~]# ps aux --sort -rss |less
[root@wdy ~]# yum -y install httpd 
[root@wdy ~]# systemctl start httpd 
[root@wdy ~]# ps auxf |grep httpd 	# 按照父子进程层级显示
[root@wdy ~]# ps -ef 				# 精简显示

自定义显示字段

[root@wdy ~]# ps axo user,pid,ppid,%mem,%cpu,command --sort -%cpu |less

查看指定进程的PID

[root@wdy ~]# cat /run/sshd.pid 
[root@wdy ~]# ps aux |grep sshd 
[root@wdy ~]# pgrep -l sshd 
[root@wdy ~]# pidof sshd

查看进程树

[root@wdy ~]# pstree
yum install psmisc -y
pstree --help
pstree -p #可以列出进程的id

top命令

动态显示系统相关资源的管理器,有点类似于windows当中的任务管理器

top [选项]

选项:
	-d:改变显示的更新速度,或是在交互式指令列(interactive command)按s
	-c:切换显示模式,共有两种模式,一是只显示程序的名称,另一种是显示完整的路径的名称
	-S:累积模式,会将已完成或消失的子进程(dead child process)的CPU time累积起来
	-s:安全模式,将交互式指令取消,避免潜在的危机
	-i:不显示任何闲置(idle)或无用(zombie)的进程
	-n:更新的次数,完成后将会退出top
	-b:显示模式,搭配'n'参数一起使用,可以用来将top的结果输出到文件内
	
交互模式快捷键
	空格:立即刷新
	P:根据CPU使用多少排序
	T:根据事件、累计排序
	q:退出top命令
	m:切换显示内存信息
	t:切换显示进程和CPU状态信息
	c:切换显示命令名称和完整命令行
	M:根据内存的大小排序
	W:将当前设置写入~/.toprc文件中,这是top配置文件推荐方法
	N:以PID的大小排序
	z:彩色
[root@wdy ~]# top 
[root@wdy ~]# top -d 1 						# 一秒钟刷新一次 
[root@wdy ~]# top -c						#显示完整命令 
[root@wdy ~]# top -n 2 						# 更新两次后终止更新显示

[root@wdy ~]# top -d 1 -p 6995 				# 查看指定PID 
[root@wdy ~]# top -d 1 -p 6995,1 			# 查看多个PID进程 
[root@wdy ~]# top -d 1 -u apache 			# 查看指定用户的进程 
[root@wdy ~]# top -b -n 2 > top.txt 		# 将2次top信息写入到文件

top查看进程
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。

第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。

第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。

第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。(buffer和cache之间的区别,cache是提高cpu和内存之间的数据交换速度,buffer是io设备和存储设备之间的缓冲区)

第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。

进程信息

h|? 帮助

1 cpu展开

M 按内存的使用排序

P 按CPU使用排序

N 以PID的大小排序

R 对排序进行反转

f 自定义显示字段

1 显示所有CPU的负载

k 输入信号

< 向前

> 向后

z 彩色

W 保存top环境设置 ~/.toprc

文章来源:https://blog.csdn.net/dreamnn/article/details/135428649
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。