所谓进程通俗上讲是正在运行的程序的实例也就是cpu未完成的工作,为了更直观的对计算机进行管理,需要对系统的进程进行监控。今天就来提提进程管理的相关命令。
1.ps :将某个时间点的进程运行情况选取下来
a 关于当前环境的所有进程,包括其他用户的程序。
x (-A) 显示所有程序。
f 显示程序间的相互关系。
e 列出程序时,显示每个程序所使用的环境变量。
l 较长教详细的及将该PID的信息列出。
u 显示进程的用户信息
-a 显示shell前台运行命令的进程,但不包括i函shell本身
进程观测这里ps指令的操作较多,望诸君亲身操作细细体悟。
以ps l 为例:
F:表示进程标志,说明进程的权限,若为4则表示此进程权限为root;
UID PID PPID :UID为进程拥有者ID,PID进程ID,此进程父进程的PID;
PRI NI: 表示进程被CPU执行的优先级;
VSZ:该进程使用的虚拟内存量(KB);
RSS:该进程占用的固定内存量(KB);
STAT:进程目前的状态
R(Running):该进程正在运行中;
S(Sleep):该进程在睡眠状态,但可以被唤醒;
D:,不可被唤醒的睡眠状态,通常进程可能在等待I/O
T(Stop):停止状态,可能后台暂停或除错状态
Z(Zombie):“僵尸”状态,进程已经终结但却无法删除至内存之外
TTY:登录者的终端机位置;
TIME:进程实际花费CPU运行的时间
COMMAND:该进程的实际命令
ps ax -o %cpu,%mem,user,group,comm,nice,pid,stat 指定显示进程的某些信息
%cpu CPU的使用率
%mem 内存的使用率
user 进程用户
group 进程组
comm 进程名称
nice 进程优先级
pid 进程的id
stat 进程状态
stat中显示的信息
S 进程状态(S,R,T,Z)
l 内存中有锁定空间
N 进程优先级低
< 进程优先级高
+ 前台运行
s *进程
如下所示:执行: ps ax -o %cpu,%mem,user,group,comm,nice,pid,stat
sort 为了更明了的显示进程信息,我们可以利用“--sort +(-)%cpu(%mem)”按照对cpu或者内存
占有率进行排序。【“+”为正序(由小到大);“-”为倒序(由大到小);%cpu,%mem分别为按照cpu负载和内存负载排序】
为了更加清晰的对进程进行观测,可结合“-o”来进行指定需要的进程信息。
ps ax --sort=-%mem -o %mem.comm,%cpu
这么多的进程,计算机不可能同时对他们进行操作,所以进程会有优先级之分。
上面提到的NI(nice)表示的就是进程的优先级,nice的值从-20~19,越小进程优先级越高。而且进程的优先级可以调控。
ps a -o pid,nice,comm
nice,renice 对进程优先级进行调控。若是:
(1)一开始执行程序就立即给予一个特定的"nice"值:用nice指令;
nice+[-n数]+command
-n:后面接一个数值,数值的范围-20~19。
(2)调整某个已经存在的PID的nice值:用renice指令。
renice+[number]+PID
PID:某个程序的ID
例如上面例子中的vim
renice -5 16564
注:超级用户可随意调整自己或他人程序的Nice值,且范围为-20~19;
普通用户仅可调整自己程序的nice值,且范围仅为0~19(避免普通用户抢占系统资源);
普通用户仅可将nice值越调越高,例如本来nice为5,则未来仅能调整到大于5。
job
在我们系统的进程有前后台之分我们在一个shell的环境下,如果想要同时进行多个工作,可
以将某些工作直接丢到后台中,让我们可以继续操作前台的工作。
job 可查看被打入环境后台的进程,
fg + 工作号,把后台的进程调回前台。
bg + 工作号,把后台暂停的进程运行。
命令+ & 将命令在后台运行
ctrl + z 将前台的进程丢到后台中“暂停”,与命令+&区分开来。
kill
对进程发送一个信号(信号为一固定数字),在前后台对其进行结束、重启、暂停等操作。
kill +"-signal" +PID 对固定进程进行操作;
killall +"-signal"+进程名字 对所有同名进程进行操作;
pkill +"-u"+用户名+"-signal" 对用户所有进程进行操作。
常用信号(signal)
1 进程重新加载配置
2 删除进程在内存中的数据
3 删除鼠标在内存中的数据(直观上看就是鼠标图标消失)
9 强行结束单个进程(不能被阻止)
15 正常关闭进程(可以被阻止)
18 运行暂停的进程
19 暂停某个进程(不能被阻止)
20 把进程打入后台 (可以被阻止)
注:更多关于signal的信息可以通过"man 7 signal"来查看
以信号"9"为例
后台运行几个vim 然后通过kill结束
kill -9 PID
killall -9 vim 以程序名结束进程
pkill -u studnt -9 结束student用户的所有进程
top 动态观察程序的变化
top 的功能非常多!可以用的按键也非常的多,以下只介绍常用的,更多详细的用法请参照"man top"
s : 修改进程刷新间隔时间
m : 根据内存占有率进行排序
c : 根据 cpu 占有率进行排序
u : 后面输入用户名 , 用来查看该用户发起的所有进程
k : 后面跟要作用的进程 pid, 和发起的信号(signal) 用来给某个进程发起一信号,也就等同于(kill)
q : 退出进程查看界面
h : 显示 top 命令的帮助