进程管理用的比较多的工具就是ps(进程的显示工具=process 显示show)
simple list output输出 threads 线程 misc杂项 all
三种风格,-aux 和aux带-不带- ,效果不一样
默认只显示当前一个用户开的进程,看不到别的终端上的进程
(但登录在这台电脑上的还有其他终端,而且除了这些执行的前台进程,还有其他的后台进程,还有很多和终端无关的)
只显示tty0的终端的进程,(还有一些彻底和终端无关的,后台服务开机就运行的)
这些都默认看不见,想看就得加选项
想看别的终端上的进程就加 a
但是实际上,除了用户开的进程,还有一些是在后台运行的,与终端无关的,(比如与服务相关的守护进程,开机自动运行,不需要用户登录已经运行,这些进程可以说与终端无关,如果想看就要加x)
ps ax 既看到了终端有关的又看了与终端无关的进程
TTY,终端编号
?就是计算机启动自动开启,与终端无关
**TIME代表这个进程开启以后占用cpu的时间片的总和,(有些情况下,没有消耗cpu就不算时长,消耗cpu的总时长)
command后面就是跟的程序的名字
**
但是信息还是不够全面,想要看到进程占用的内存多大,以什么身份运行,就可以加u
u能显示更加详细的(显示进程所有者的信息)
除了显示用户,还显示了占用cpu的百分比,占用的内存百分比
VSZ 系统承诺分配的空间 RSS目前真正占用的空间
START 这个进程开启的时间,什么时候启动的
一般工程师都喜欢用aux
$$脚本运行的当前进程ID号
k|–sort 按照特定的属性排序
(指向显示该进程占用的cpu内存,并且希望将来按cpu利用率排序)可以用o
o只显示特定的内容,(光用o的话(只显示当前的终端的进程,显示的内容少),需要
a(显示除了本终端还有其他终端的进程)
x(既看到了终端有关的又看了与终端无关的进程)配合)
显示内容太少,加x
但是x不能放在o后面,因为o后面放的是各种属性
默认按进程编号排序,也可以按k 指定cpu排序
利用率高的就在下面了
也可以按照内存排序,排序之前,先要在前面显示内存使用率列
图形界面比较废内存,所以一般实际情况下不装图形界面,比较耗费资源
windows也有一种字符界面模式 叫core模式
可以用L查看支持哪些属性
euid 有效的用户
ruid 真正的
passwd权限有suid权限,(当用户去运行具有suid权限的程序的时候,该用户的权限会继承管理员(程序所有的)的权限)相当于wang变成了root,root有效用户
(用root的身份,但是真正的用户是wang,真实运行的用户)
也可以采用unix风格的选项
-是unix风格的
-e 显示所有进程,相当于-A
-f,显示完整格式程序信息
PPID 父进程的 C
STIME 启动时间,这些信息相对aux,aux更加详细些
BSD格式的-e等于-A,显示所有进程
-f 全格式,-F格式更全 extra额外的
SZ承诺使用内存
RSS实际使用内存
PSR占用的cpu(当前跑在哪颗cpu上)
TIME
lscpu查看cpu
-H:以进程层级格式显示进程相关信息
跟刚才的 auxf(不带dash -号的类似)
-u =euser 有效用户 -U ruser 真实用户
wang用户打开的进程列表
-U真实使用的用户
-u 有效用户 程序的权限
显示的是selinux的相关属性
早起nice优先级显示的是-20-19的优先级关系(实际对应系统优先级的0-139)
ps命令可以直接显示优先级
nice可以简写成ni
passwd进程pid 2612
cmd 进程名
pri 优先级 19 (实际是120+19=139)(等于0-139 ,倒过来,139-0 这样nice对应的值就是19)
nice (ni优先级0,对应系统中的120)
rytprio实时优先级 realtime 120的时候没有对应关系就是-
nice优先级可以根据情况调整
renice可以修改优先级
理论上这个值越大,优先级越高
越高的数字越低的优先级(写反了)所以不要盲目相信官方文档、
rtprio实时优先级,99是最高的优先级
pri是反过来的就是pri
0是系统默认的
也可以程序运行前就指定优先级。而不是运行中间改
也可以不跟-n (–5是 5 -5 是5)
nice优先级可以适当调整程序的优先级
(数字越大越宽容,优先权就靠后)
psr是cpu运行结果
可以用watch -n 1 1秒的程序运行结果
每颗cpu都有自己的缓存,一个程序在cpu上跳转工作,是比较浪费的,切换的时候缓存没了,(就可以绑定 到单独一个cpu上去,保持效率,比如nginx)(状态保存和切换信息,必然会浪费内存)
所以绑死cpu就比较好(但是cpu坏很少见)
管理的思路
nginx
-x x 类似
-f显示完整格式程序信息
-U 真正的用户id(真实用户)
-u 有效的用户
-G真正的所属组
通过pid显示某个进程的信息
通过pid 自己作为父进程,显示下面的所有子进程
显示多个进程的信息,也可以显示某个终端上的跑的进程
名字叫bash的进程
如果不加#!/bin/bash 或者 用bash fi,sh执行
救护导致看不到执行进程,显示的是bash或者 bash fi。sh
可以显示多个脚本信息
可以更详细的了解,进程编号,命令,cpu利用率,内存利用率。
‘ps -p 1244 -o comm=
要根据pid进程编号找进程名称’
也可以根据进程名称找进程编号
ping相当于f1.sh下的子命令
可以查看进运行的时间,持续增长(不代表cpu工作的时间,如果无人访问,就一直处在就绪状态,实际就是表示这个进程已经启动了多长时间)
已经开始了一个小时
按内存排序,–sort=-%mem按照倒序排序
–sort=%mem正序排序
工作中会遇到查看哪个进程比较消耗cpu和内存
nice(设置某个程序运行的时候的优先级)
renice 改现在允许程序的优先级
显示某个进程的信息,grep可以,也有专门的pgrep命令
pgrep是专门用来搜索进程信息(也支持正则表达式)
pts/1上设备进行的进程
w命令是列出当前所有登录在当前主机的终端
-l显示进程名称
l相比a还是简洁一点
可以用正则表达搜索或过滤掉一些进程
这个程序可以显示某个程序对应的进程id
有一些其他工具可以了解当前系统运行的状态
(ps和pgrep是查看进程的,除了这些还有一些系统的负载状态,内存等使用情况)
uptime 启动的时间
up后面跟的时间代表已经启动多久了
load average 平均负载情况,一分钟、五分钟、10分钟之内负载的情况,对应值越小,当前的负载情况越少
(在一分钟之内有0.02个任务没有完成(没完成说明,cpu很忙)
这个值不大于cpu个数的2倍)
可以动态跟踪,ps aux是快照机制,不能实时观察
top可以动态地观察cpu,内存情况
第一行(uptime)
tasks 进程数量 138个 有4个在允许, 136个在可中断睡眠 0停止的 0个僵死的
第三行属于cpu分配,13.7是给用户空间程序使用的,47。2是给系统空间占用的,0.0调整优先级的,id表示空闲(34.5)
wa等待的cpu,hi si(软中断(应用程序发生了,有个事件需要处理,让cpu响应),硬中断(键盘回馈cpu需要解决的事情))(中断是cpu实现进程响应时间发送的机制),si 软中断(中断都要消耗cpu,现在是软中断消耗的cpu时间更多一点,),
st表示偷盗的意思(被盗取的时间),对于电脑来讲,cpu消耗都是在本机的进程里的,有可能电脑上跑 了一个虚拟机,虚拟机也有自己 进程消耗cpu,被虚拟机偷走了(虚拟机的进程,当前电脑看不到)
第4行,kb为单位,总的内存空间,剩余空间,正在使用的空间,缓存
第5行,swap基本没有使用,说明内存够用
进程默认是以cpu来排序的
也可以按照内存排序,按M,大P又回到cpu排序
按l隐藏显示uptime信息
t命令换方式显示cpu
按1可以切换单,双cpu
m控制内存显示情况,q退出
s可以修改刷新时间间隔
k可以知道kill掉某个进程
杀掉它发个信号,15信号,关闭进程的意思
W 保存到家目录里
指定6秒刷新间隔
top命令只显示前面部分进程,-b显示所有进程
刷新多少次以后退出
-n 3 刷新3 次 -b全部显示 -d6 6秒一刷新
top工具是常用的观察系统运行的工具,也有更花哨的工具,htop