Linux进程及作业管理相关命令

 

作为初学者,Linux永远是那么神秘,高大上的内容我也不会,所以在这里只能整理一下与管理相关的命令了,如果有不对的或不准确的地方,请指正。

可参考:Linux内核--进程管理与调度http://www.linuxidc.com/Linux/2014-08/105366.htm

 

pstree:显示进程状态树

作用:列出当前的进程,以及它们的树状结构

用法:pstree [选项]

  • -a: 显示执行程序的命令与完整参数

 

ps:查看系统中进程的状态

在/proc/目录中包含了进程和内核模拟生成的伪文件,该路径下每个进程用自己的PID命名目录,目录里面包含了这个进程运行的各个参数。

内核参数在/proc/sys/目录中,可设置其值动态调整内核运行的特性。

用法:ps [选项]

选项有三种风格

1   UNIX options, which may be grouped and must be preceded by a dash.

2   BSD options, which may be grouped and must not be used with a dash.

3   GNU long options, which are preceded by two dashes.

常用选项组合之一:

# pstree aux

  • a:所有与终端相关的进程

  • x:所有与终端无关的进程

  • u:以用户为中心组织进程状态信息显示

显示字段含义:

USER 表示此进程以哪个用户身份运行

PID 表示进程号

%CPU 表示占用cpu利用率百分比

%MEM 表示占用物理内存百分比

VSZ 表示虚拟内存集大小,包含共享的数据空间

RSS 表示常驻内存集大小,位于物理内存,并不能被交换出去

TTY 表示此进程从哪个终端启动,问号?表示与终端无关的进程

STAT 表示进程状态

R:running

S:interruptable sleeping

D:uninterruptable sleeping

T:Stopped

Z:zombie

+:前台进程

l:多线程进程

N:低优先级进程,一般表示该进程优先级别数值是负数

<:高优先级进程

s:session leader

START 表示进程起始时间

TIME  表示累计占用cpu的时间

COMMAND 表示由哪个命令启动,带中括号的是内核线程

 

常用选项组合之二:

# pstree �Cef

  • -e : 显示所有进程

  • -f : 显示完整格式的进程信息

部分字段含义:

PPID 表示此进程的父进程号

C 表示cpu的占用百分比

常用选项组合之三:

# ps �CeFH

  • -F:显示完整格式的进程信息

  • -H:以层级结构显示进程的相关信息

部分字段含义:

SZ 表示虚拟内存集大小,包含共享的数据空间

PSR 表示此进程运行在哪颗cpu上

常用选项组合之四:

# ps �Ceo <FIELD1,FIELD2,…>

# ps axo <FIELD1,FIELD2,…>

  • o FIELD1,FIELD2,… : 自定义要显示的字段列表,以逗号分隔

常用的FIELD:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio

ni : nice值

pri : priority 优先级

rtprio : real time priority,实时优先级

pcpu : cpu的利用率

pgrep:查找匹配条件的进程

用法:pgrep [options] pattern

  • -u uid:effective user

  • -U uid:read user

  • -t  TERMINAL:与指定的终端相关的进程

  • -l:显示进程名

  • -a:显示完整格式的进程名

  • -P pid:显示此进程的子进程

pidof:根据进程名,取其pid

[root@localhost ~]# pidof sshd  
3987 2368 1062

uptime:显示系统时间、用户登录数、运行时长及平均负载

[root@localhost ~]# uptime  
00:06:21 up  7:12,  2 users,  load average: 0.00, 0.01, 0.05    

load average:等待运行的进程队列的长度在过去1分钟、5分钟和15分钟的平均负载

top:显示系统当前进程状态

用法:

# top -d 2 :指定2秒延迟时长刷新显示,单位是秒

# top -b :批模式

# top -bn 2 :在批模式下,共显示2批

 

显示含义:

第一行信息是uptime命令的显示内容

第二行显示的是所有启动的、目前运行的、挂起( Sleeping )的和无用( Zombie )的进程数量

第三号显示的是目前CPU的使用情况,依次为

us用户使用比例

sy系统占用的比列

ni调整以后额外占用的时间百分比

id闲置( Idle)比例

wa等待IO完成占用的百分比

hi处理硬件中断消耗的百分比

si处理软件中断消耗的百分比

st被当前主机上虚拟化技术所分走的百分比

第四行显示物理内存的使用情况,包括总的可以使用内存、空闲内存、已用内存、buff/cache占用的内存

buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件时,会首先在buffers与cached内存区查找,如果找到,直接读出传送给应用程序,如果没有找到需要数据,才从磁盘读取。    
buffers是用来缓冲块设备做的,它只记录文件系统的元数据(metadata)以及tracking in-flightpages,而cached是用来给文件做缓冲。更通俗一点说:buffers主要用来存放目录里面有什么内容,文件的属性以及权限等等。而cached直接用来记忆我们打开过的文件和程序。

第五行显示交换分区的使用情况,包括总的、空闲的、已用的和可用的内存空间大小吐舌鬼脸

第六行显示项目如下:


PID : 进程号

USER : 进程所有者

PR : 进程的优先级别

NI : nice值眨眼

VIRT : 进程占用的虚拟内存值

RES : 进程占用的物理内存值

SHR : 进程占用的共享内存值

S : 进程的状态,参见ps命令

%CPU : 该进程占用的CPU使用率

%MEM : 该进程占用的物理内存的百分比

TIME+ : 进程启动后在CPU上运行的时长

COMMAND : 进程启动的启动命令


在top命令使用的过程中,还可以使用一些交互式的命令来完成其他功能,可用以下快捷键:

M: 根据驻留内存大小进行排序

P: 根据cpu使用百分比进行排序

T: 根据累计时间进行排序

l: 是否显示平均负载和启动时间

t: 是否显示进程和cpu状态相关信息

m: 是否显示内存相关信息

c: 是否显示完整的命令行信息

s:修改刷新时间间隔

<空格键>:立即刷新

k:终止指定的进程

q: 退出top

htop:系统状态显示

htop是top命令在功能上的一个升级命令,因此两者的显示和使用习惯比较相似,但是htop命令需要手动安装,并且在发行版光盘上没有它的安装包,需要通过其他途径获得,建议用yum指向的epel源安装乌龟

htop的功能很强大,还能支持鼠标操作,显示项目内容和top命令类似,这里只说一下它的交互命令


u: 仅显示指定用户的进程

s: 以指定字段显示

l: 显示选定的进程打开的文件列表

s: 跟踪选定的进程的系统调用

t: 以层级关系显示各进程状态

a: 将选定的进程绑定至某指定的CPU核心

更多帮助按F1键获得

vmstat:报告虚拟内存统计信息

用法:vmstat [options] [delay [count]]

# vmstat 2 5  //表示每5秒采集一次,共采集5次

  • -s : 显示内存相关统计信息

  • -d : 显示磁盘相关统计信息

  • -S : Switches outputs between 1000  (k),  1024  (K),  1000000  (m),  or 1048576  (M) bytes.  Note this does not change the swap (si/so) or block (bi/bo) fields.

显示字段含义:

------procs------

r:等待运行的进程的个数;CPU上等待运行的任务的队列长度  
b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度


------memory------    
swpd:交换内存使用总量;    
free:空闲的物理内存总量;    
buffer:用于buffer的内存总量;    
cache:用于cache的内存总量;    

------swap------  
si:数据进入swap中的数据速率(kb/s)    
so:数据离开swap的速率(kb/s)


------io------    
bi:从块设备读入数据到系统的速度(kb/s)    
bo:保存数据至块设备的速率(kb/s)

 

------system------  
in:interrupts,中断速率    
cs:context switch, 上下文 切换的速率


------cpu------

us: user space  
sy:system    
id:idle    
wa:wait    
st: stolen

如果bi和bo长期不等于0,则表示物理内存太小

pmap 报告进程内存映射表

用法:pmap [options] pid [...]  
-x:显示详细格式的信息    
   
另一种查看方式:cat  /proc/PID/maps

 

kill

-terminate a process

作用:用于向进程发送信号,以实现对进程的管理

显示当前系统可用信号:

# kill �Cl

每个信号的标识方法有三种:  
1) 信号的数字标识    
2) 信号的完整名称    
3) 信号的简写名称

向进程发信号:

# kill  [-s signal|-SIGNAL]  pid...

常用信号:  
1) SIGHUP:无须关闭进程而让其重读配置文件    
2)SIGINT:终止正在运行的进程,相当于Ctrl+c    
9)SIGKILL:杀死运行中的进程    
15)SIGTERM:终止运行中的进程    
18)SIGCONT    
19)SIGSTOP

killall

-kill processes by name

# killall  [-SIGNAL]  program

 

jobs


前台作业(foregroud):通过终端启动,且启动后会一直占据终端    
后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端)    
           
如何让作业运行于后台?    
(1) 运行中的作业    
Ctrl+z

注意:送往后台后,作业会转为停止态;  
(2) 尚未启动的作业    
# COMMAND &    
   
注意:此类作业虽然被送往后台,但其依然与终端相关;如果希望把送往后台的作业剥离与终端的关系:    
# nohup  COMMAND  &    
   
查看所有的作业:    
# jobs    
   
可实现作业控制的常用命令:    
# fg  [[%]JOB_NUM]:把指定的作业调回前台    
# bg  [[%]JOB_NUM]:让送往后台的作业在后台继续运行    
# kill  %JOB_NUM:终止指定的作业    


nice:改变优先权等级

0-139 种优先级,数字越小,优先级越高

100-139 :用户可控制

0-99: 内核调整的


优先级高可以:

1、获得更多的CPU运行时间

2、更优先获得运行的机会


可通过nice值调整的优先级范围:100-139

其nice值分别对应于:-20, 19


进程启动时,其nice值默认为0,其优先级是120

nice 值:数值越小,优先级调高

普通用户只能调大自己进程的nice值

仅管理员可调低nice值

 

以指定的nice值启动并运行命令  
# nice  [OPTION]  [COMMAND [ARGU]...]    
选项:-n NICE    
# nice �Cn 1 ls > 1.txt

renice

允许用户修改一个正在运行的进程的优先级

# renice  [-n]  NICE  PID...  
            
查看Nice值和优先级:    
# ps  axo  pid, ni, priority, comm 

你可能感兴趣的:(linux,top,PS,pgrep,pidof)