Linux进程管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)

一、进程管理

(一)程序与进程

程序:指令+参数的集合通过逻辑控制运行起来,完成某项特定任务。(类似Java)静态的,封闭的。
进程:程序运行起来的过程。是操作系统运行的基本单位。有生命周期(产生---->死亡)进程有运行状态(running,sleepping,等待,僵死)
Linux多任务操作系统能够让许多程序同时运行,每一个运行着的程序就是一个进程
1.进程与程序区别
程序是静态的,进程是动态的有生命周期的,有状态
程序和进程不是一一对应。相同的程序运行到不同的数量集上就是不同的进程/usr/bin/vim(程序) -----vim test1 ,vim test2
程序是封闭的,进程有并发性和交往性。进程之间可以通信,(|);方式:(1)共享内存,(2)消息队列
2.进程与线程
在linux系统上,对于进程或线程都将拥有一套完整的资源集。(内存---->虚拟内存,CPU------>时间片)。
自学:协程;对比一下进程,线程协程
在这里插入图片描述
区别:一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有。
线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。
3.子进程与父进程:fork
子进程继承父进程的特性:安全性的身份认证;过去和当前的文件描述符,端口等资源特权;环境变量;程序代码。
子进程的id号永远大于父进程,查看pid号:用pgrep命令 # pgrep httpd
每个进程都可以产生子进程,
父进程 ----sleep---------------------running-------->
| |
fork()-----exec()----------exit() ---->zombie
关系:①父进程终止,子进程也就终止。
②.子进程运行期间,父进程处于(sleeping)睡眠状态;当子进程完成时发出信号请求,在退出时,子进程已经关闭或丢弃其资源环境,剩下的部分称之为(zombie)僵尸。子进程退出父进程唤醒,继续执行自己的代码。加粗样式

(二).进程的生命周期

sleep

S:可中断睡眠,条件:硬件要求,系统资源访问,信号。比如:键盘输入。
D: 不可中断睡眠, 比如:系统进程(不可中断),如中断可能会引起系统的异常 -->用户进程
K:可退出的睡眠,

running:在CPU上运行的进程或者是准备运行的进程(队列(高速缓存));

user的日常任务,kernel的日常任务
运行:---->进程占用cpu时间片
等待:---->等待某个条件成熟
就绪:---->分配好所有资源,等待cpu时间片

stop:
zombie

Z: —>exit----task_struct(PID,返回状态码,父进程需要状态)
X: —>exit----将没有数据

(三).linux系统的进程优先级

“进程的优先级” 0-139 — 140数
实时优先级:0<------------------------------99
: 100-139
nice : -20-19
RP: 0-39 RT
“nice值” -20-19 作用是调整进程优先级,(不能调kernel,调整user)
“top–PR” 0-39
top —>“r” —>“PID” —“nice值”
renice -n 10 -u apache

(四).进程管理工具(pstree ps pgrep pkill uptime top htop vmstar lsof)

1、pstree 查看进程树之间的关系

[root@pinpoint-agent ~]# yum provides pstree //查看安装包
[root@pinpoint-agent ~]# yum install psmisc //下载ps安装包

-A:用途,当终端不支持UTF-8(中文),显示乱码,此时用该参数。(线)
-U:UTF-8默认线的样式(线)
-p:列出pid 子进程的号大于夫进程号
-u:列出账号名称
在这里插入图片描述
2、ps 查看瞬间进程状态
(最常用监控后台进程工作的情况)能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等
注意:ps显示瞬间进程状态,并不动态连续。对进程实时监控应该用top命令
-a :显示终端机下的进程,包括其他用户/列出所有运行中/激活进程
-u :以用户为 主的进程状态/uid or username 选择有效的用户id或者是用户名
-x : 除了TTY控制的其他进程/显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-l :列出较详细的信息
-f: 打印完整输出
-aux:当前以用户为主的所有进程状态
在这里插入图片描述

USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS:占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE) R 运行 S 可中断睡眠 Sleep
D 不可中断睡眠
T 停止的进程
Z 僵尸进程
X 死掉的进程

Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名

ps -ef |grep - 列出需要进程
在这里插入图片描述
在这里插入图片描述

F :代表这个程序的旗帜(flag)
S:代表使用者 superuser
UID :代表执行者身份
PID :进程id号
PPID:父进程号
C :cpu使用的资源百分比
PRI :进程的执行优先级 (priorite)值越小越早被执行
NI :进程的nice值表示进程可被执行的优先级的修正数值
ADDR:内核函数
SZ :使用掉的内存大小 WCHAN:目前这个程序是否正在运行 运行-
TTY :登入者的终端位置
TIME :使用掉的cpu时间
CMD:所下达的指令名称

3、pgrep 查看pid与进程名的对应
o:当匹配多个进程时,显示进程号最小的那个
n:当匹配多个进程时,显示进程号最大的那个
l:同时显示进程名和pid
kill pgrep -o httpd
在这里插入图片描述
4、killall ,kill ,pkill 杀死指定名字的进程
-----------通过发送信号的方式,对进程行为做控制
killall httpd 直接加进程名
kill PID 加父进程号
pkill httpd 直接加进程名
kill命令

0 ---->嗅探进程是否存在,不对其做任何操作
1 ---->断开终端
2 ---->中断,ctrl + c
3 ---->退出,ctrl
15 —>默认,终止
9 —>强制终止,
18 —>继续
19 —>暂停

eg:kill -18 进程
5、top动态的打印系统信息:
[root@ds2 ~]# top
在这里插入图片描述

PID:进程ID
user:运行进程的用户
PR:进程优先级 NI:nice值,负数表示优先级最高
VIRT:进程使用虚拟内存总量 REX:进程占用的物理内存总量
SHR:进程占用的共享内存大小 S:进程状态: R:runing S:sleeping休眠 T:stop Z:zombie D:不可中断
%CPU:从上次刷新到目前使用的cpu时间占比
%MEM:进程使用的物理内存百分比
TIME+:进程使用cpu的时间 单位1%秒
COMMAND:进程名称

6、htop top升级版
-aux注意:htop是第三方源 安装时先要安装epel*源,在安装htop .
根据此链接安装epel 源(选一种安装即可)
https://developer.aliyun.com/mirror/epelspm=a2c6h.13651102.0.0.3e221b11lbqnQo
安装
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install htop
在这里插入图片描述
上左区域:men:物理内存
上右区域:tasks:任务数量 uptime:运行时间
进程区域:同top显示的一样
7、vmstat:
8、sar

[root@localhost ~]# yum install sysstat -y
在这里插入图片描述
9、tsar --sar:
淘宝开源,以周期计划任务的方式执行
10、lsof
管理文件

(五)伪文件系统

/proc:进程信息,内存信息,磁盘信息
/sys:设备组织

(六)前后台作业

1、什么是作业:用户交给系统的某项任务
“前台作业同一时刻只能运行一个,后台作业同时可以运行多个”
前–》后:“命令 &”:运行
“Ctrl +z” :停止 —》bg &序列 ----》运行
后–》前:fg %序列
对于做支持信号:
0 ---->嗅探进程是否存在,不对其做任何操作 echo $? —>0
1 ---->断开终端
2 ---->中断,ctrl + c
3 ---->退出,ctrl +
15 —>默认,终止
9 —>强制终止,
18 —>继续
19 —>暂停
kill -19 %序列

作业可以放到后台运行,任然可以将输出打印在终端上。

作业是正对于终端而言,在哪个终端上启动的作业,在哪个终端上jobs。
2、 屏蔽中断信号
对于终端上的作业,有内容输出时,当终端断开后,该作业进程将会接收到中断信号;导致进程被杀死。
nohup屏蔽中断信号。

nohup ping www.baidu.com > /dev/null &
nohup ping www.baidu.com >> /tmp/nohup_ping.log &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值