Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)

Linux系统进程的管理,ps,jobs,kill,top,等命令


   所谓进程通俗上讲是正在运行的程序的实例也就是cpu未完成的工作,为了更直观的对计算机进行管理,需要对系统的进程进行监控。今天就来提提进程管理的相关命令。

     1.ps  :将某个时间点的进程运行情况选取下来

                 a         关于当前环境的所有进程,包括其他用户的程序。

               x (-A)      显示所有程序。

                 f          显示程序间的相互关系。

                 e         列出程序时,显示每个程序所使用的环境变量。

                  l          较长教详细的及将该PID的信息列出。

                  u         显示进程的用户信息

                 -a         显示shell前台运行命令的进程,但不包括i函shell本身

          进程观测这里ps指令的操作较多,望诸君亲身操作细细体悟。

以ps  l 为例:

Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)

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    指定显示进程的某些信息

       -o+  想要显示信息, 可以显示指定的信息,如上所示的各个部分
%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

Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)


sort  为了更明了的显示进程信息,我们可以利用“--sort +(-)%cpu(%mem)”按照对cpu或者内存
占有率进行排序。【“+”为正序(由小到大);“-”为倒序(由大到小);%cpu,%mem分别为按照cpu负载和内存负载排序】

为了更加清晰的对进程进行观测,可结合“-o”来进行指定需要的进程信息。
ps ax --sort=-%mem -o %mem.comm,%cpu
Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)

这么多的进程,计算机不可能同时对他们进行操作,所以进程会有优先级之分。
上面提到的NI(nice)表示的就是进程的优先级,nice的值从-20~19,越小进程优先级越高。而且进程的优先级可以调控。
    ps a -o pid,nice,comm
    Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)
 
nice,renice  对进程优先级进行调控。若是:
(1)一开始执行程序就立即给予一个特定的"nice"值:用nice指令;
nice+[-n数]+command
-n:后面接一个数值,数值的范围-20~19。
(2)调整某个已经存在的PID的nice值:用renice指令。
renice+[number]+PID
PID:某个程序的ID
例如上面例子中的vim
renice -5 16564
Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)
注:超级用户可随意调整自己或他人程序的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

Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)

killall -9 vim 以程序名结束进程

Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)

pkill -u studnt -9      结束student用户的所有进程

Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)

top 动态观察程序的变化

Linux菜鸟成长日记(Linux系统进程的管理,ps,jobs,kill,top等命令)

top    的功能非常多!可以用的按键也非常的多,以下只介绍常用的,更多详细的用法请参照"man top"
s    : 修改进程刷新间隔时间
m    : 根据内存占有率进行排序
c    : 根据 cpu 占有率进行排序
u    : 后面输入用户名 , 用来查看该用户发起的所有进程
k    : 后面跟要作用的进程 pid, 和发起的信号(signal) 用来给某个进程发起一信号,也就等同于(kill)
q    : 退出进程查看界面
h    : 显示 top 命令的帮助