Linux命令ps和进程详解

发布时间:2024年01月11日

进程 : 加载到内存中的一段指令
在硬盘中的app应用程序----->加载到内存中------>再加载到cpu的缓存中----->最后加载到cpu中

ps(process) aux
a : 查看所有终端的进程
u : 打印进程的详细信息,进程的拥有人、使用百分比
x : 打印不属于任何终端的进程,例如?
-e : 查看系统所有进程
-f : 查看额外的信息
-o : 查看指定的列 ? ?例如: ps ?-eo ?pid,%cpu,%mem ?: ?可查看指定的pid,%cpu,%mem列
--sort ?: 指定列进行排序-(降序),+(升序),格式为--sort=pid?
ps -eo pid,%cpu,%mem --sort=+%mem | head : 查看指定的pid,%cpu,%mem列,并以mem内存的使用百分比升序排列

在用户进行重启或者别的操作时,会生成一个进程,然后进程再访问文件
USER ? ? ? ? PID ? %CPU ? ?%MEM ? ? VSZ ? ? ?RSS ? ?TTY ? ? ? ?STAT ? ? ? ?START ? ? ? ? ?TIME ? ? COMMAND
root ? ? ? ? ? 1 ? ? ? ?0.0 ? ? ? ? ? 0.3 ? ? ?326716 13944 ? ? ? ? ? ? ? ?Ss ? ? ? ? ? ?Apr08 ? ? ? ? ?0:04 ? /usr/lib/systemd/syst
? ?1 ? ? ? ? ? ? 2 ? ? ? ? 3 ? ? ? ? ? ? ?4 ? ? ? ? ? 5 ? ? ? ? ?6 ? ? ? ?7 ? ? ? ? ? ?8 ? ? ? ? ? ? ? ? 9 ? ? ? ? ? ? ? 10 ? ? ? ? ?11
1 : ?进程的拥有人,一般情况下谁运行该进程,拥有人就是谁
进程匹配权限的流程:
注意: 进程的拥有组是进程拥有人所在的组,可以是主组也可以是多个附加组
用户(有自己的uid和gid)通过任何操作生成了进程------>进程就会匹配用户(uid和gid(可以是主组和多个附加组))权限-------->进程的拥有人uid和拥有组的gid匹配文件的拥有人和拥有组的uid和gid,并不是匹配执行用户的uid和gid,所以说并不是哪个用户执行的命令,拥有人就是该用户,过于绝对
2 : 进程的ID,也叫pid,不是唯一不变的,每次重启都会自动分配,(注意 : 重启进程是比较耗内存的,一般建议用reload,不要用restart)
3 : cpu的使用百分比
4 : 内存的使用百分比
5 : 虚拟内存,进程申请的内存
6 : 实际使用的内存,也是应用程序实际使用的内存
7 : tty,进程运行的终端,例如tty1,tty2,tty3(图形控制台和字符界面的终端),pts(伪终端: 图形界面打开的终端,或者远程ssh登录的终端),?(不属于任何终端,在进程运行之前就存在的)
8 : 进程的运行状态
9 : 进程开始的时间,通过这个可以判断系统的开始时间
10 : 系统运行的时间
11 : 进程的命令或者进程名

top - 02:27:46 up ?1:03, ?2 users, ?load average: 0.00, 0.00, 0.00
? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ??
1: 系统启动的时间
2: 有2个远程链接的用户登入
3: cpu的平均负载,分别是1分钟的负载,5分钟,15分钟
cpu负载和cpu的利用率的关系
cpu利用率: 程序在运行期间实时占用cpu的百分比
cpu平均负载: 显示的是一段时间内正在使用和等待使用cpu的平均任务数
理论上说cpu的利用率越高,cpu的负载就是越大,一般cpu负载趋近于0.7是较好的状态
特殊情况中,在运行一个任务一直需要cpu的运算能力,那么此时cpu的利用率可能达到100%,但是cpu的平均负载只是趋近于1,因为cpu仅负载一个任务,若此时增加一个这样的任务,则cpu的负载可能达到2,这时cpu就需要在两个任务中频繁的切换
Tasks: 268 total, ? 2 running, 266 sleeping, ? 0 stopped, ? 0 zombie
%Cpu(s): ?0.0 us, ?0.2 sy, ?0.0 ni, 99.8 id, ?0.0 wa, ?0.0 hi, ?0.0 si, ?0.0 st
? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? ?2 ? ? ? 3 ? ? ? ? ? ?4 ? ? ? ? ? 5 ? ? ? ? 6 ? ? ? ? 7 ? ? ? ? 8?
1: us(user):用户进程占有率
2: sy(system):内核空间占有率
3: ni(niced)
4: id(idle):空闲空间占有率
5: wa(wait):系统I/O等待时间
6: hi(hard-interrupt):硬中断时间
7: si(soft-interrupt):软中断时间
8: st:被虚拟化占用的时间
top(实时查看进程的占用百分比)
-d : ?指定多久实时监控的刷新频率,例如,top -d -1 : 表示1秒刷新一次
-p : ?指定pid进行查看,实时监控某一个指定的进程
用下面的按键在top里面操作
1 : 可以监控每个逻辑cpu的状况
M(大写的m) : 按照内存占用的百分比降序排列
P(大写的p) : 按照cpu的占用百分比降序排列
f : 可以选中显示的内容,例如%CPU,PID,COMMAND等等
c : 显示进程COMMAND的完整命令

pgrep(过滤进程): 通过程序的名字来查询进程的工具,如: pgrep httpd
-u : 查找某个用户的进程id,可接用户id和用户名
-g : 查找某个组的进程id,可接组的id和组名
-p : 根据父进程id,查找出所有子进程id
-l : 显示PID和进程名,可配合上面的选项使用,例如:pgrep -l ?-u root : 过滤出来root的pid和进程名
-d : 指定列出的多个进程的分隔符
pgrep -d : -u root
1:2:3:4:6:8:9:10:11:12:13:14:15:
-o : 如果该进程有多个进程正在运行,过滤出正在运行的最老的程序
例如 : pgrep -o -u root
1
-n : 如果该进程有多个进程正在运行,过滤出正在运行的最新的程序
例如 : pgrep -o -u root
2683

pidof + 进程名 : 查找准确的进程的所有pid
ps -p $(pidof httpd)指定进程的pid查询进程的详细信息

kill : 通过指定pid给进程发送信号执行操作
killall 进程名 : ?接的信号是一样的,但是后面接进程名
kill ?[signal] pid
15 : 退出,进行操作可以看到进程被中断
9 : 强制退出,显示进程被杀死
1 : 重新加载配置文件,等同于systemctl reload httpd?
19 : 将后台进程暂停

nice值(只有root用户才可以临时修改nice值)
-20到19 : 数值从大到小
nice -n 19 命令(如vim) : 当进程未启动修改优先级为19启动
renice ?19 ?-p 2100 ?: ?当进程正在运行修改优先级为19,指定pid为2100的进程nice设为19

进程和作业控制jobs
jobs : 查看后台运行的进程名和作业号
firefox : 直接运行的进程会直接在前台,占用终端
ctrl + z : 暂停前台的进程并放入后台,并不完全是后台进程 ? ?或者kill -19 %jobnum/pid : 暂停后台运行的进程
ctrl + c : 结束前台的进程
ctrl + d : 退出有交互式的命令操作,例如tr?
bg %jobnum : ?把程序放入后台运行,pkill -9 %jobnum : 结束后台进程
fg %jobnum : 把程序放入前台运行
firefox & : 让进程在后台运行
dd(从进程到进程) if=/dev/zero(输入0字节的数据) ?of=/dev/null(类似于黑洞) :干耗cpu资源,不会死机,因为cpu使用的轮询调度算法

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