linux进程管理的相关命令:

1、pstree  --以树状形式显示当前系统进程,和命令tree相似。

2、ps命令

命令格式:ps [options]

常用组合:aux

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

a:与终端相关的进程

x:与终端无关的进程

 

#ps aux

USER : 用户名    

PID : 进程号

%CPU :占用的cpu百分比

%MEM  :内存的使用率

VSZ :  virtual memory size ,虚拟内存集

RSS : resident size ,常驻内存集

TTY : 终端,?表示与终端无关

STAT 进程状态

    R:running 正在运行的

Sinterruptable sleeping 处于休眠状态,可中断的休眠状态,称为软中断

D:uninterruptable sleeping 无法中断的休眠状态

T:stopped 

Zzombie 僵死状态

P:等待页面交换


+ :前台进程

l:多线程进程

N:低优先级进程

< :高优先级进程

s: session leader 进程的领导者(如果一个进程为s态,表示它可能会创建其他的进程,本进程终止,其创建的子进程有将被终止)

START 启动时间

TIME 累计时间

COMMAND 命令

[]表示由内核启动进程

 

常用组合:

-ef

-e :显示所有进程

-f:显示完整格式程序信息

-eFH

-e:显示所有进程

-F:显示更完整格式的程序信息

-H :以进程层级格式显示进程相关信息

-eo axo 

-e 显示所有进程

-o:可以自定义显示格式

-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm

axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm


ni: nice

pri: priority,优先级

psr: processor, CPU

rtprio: 实时优先级

 

3pgreppkill命令:look  up or signal processes based onname and other attributes杀死进程的

pgrep来获得正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程

             pgrep [options] pattern

             pkill [options] pattern

       -u uid: effective user

       -U uid: real user

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

       -l: 显示进程名

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

       -P pid: 显示其父进程为此处指定的进程的进程列表

 

4、pidof:根据进程名获取其PID

       pidof  进程名

 

以上是按照进程的快照显示的静态状态信息。

 

5、top命令。可实时显示系统的状态信息。

wKiom1YMm6Gyfc2CAAO1adbbh6s596.jpg 

top基本视图解析:

第一行分别表示:当前系统时间,系统运行了多长时间,当前有几个用户登录系统,load average后面三个数分别是1分钟,5分钟,15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。

第二行:Tasks: 106 total当前系统进程的总数,1个处于运行中,105处理睡眠状态,0个处于stoped 0个处于僵死状态。

第三行:CPUs: 

us:用户空间占用cpu的百分比。

sy:内核空间占用CPU的百分比

ni:改变过优先级的进程占用CPU的百分比

id:空闲CPU百分比

waIO等待占用CPU的百分比

hi:硬中断占用CPU的百分比

si:软中断占用的CPU的百分比

st:被偷走的时间,指的是被虚拟化技术用去的时间占据的比例

第四行:Mem

total:物理内存总量

used:使用的内存总量

free:空闲的内存总量

buffers:缓存的内存总量

第五行:Swap

total:交换分区总量

used:使用交换区总量

free:空闲交换区总量

cached:缓冲交换区总量

一台计算机的可用内存为:第四行的free+第四行的buffer+第五行的cached

统计区域各列的含义:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

PID:进程id

PPID:父进程id

USERReal username

PR:优先级

NINice

VIRT:进程使用的虚拟内存总量,单位kbVIRT=SWAP+RES

SWAP:使用的虚拟内存中被换出的大小,单位kb

RES:常驻内存集进程使用的,未被换出的物理内存的大小,单位kb.

RES=CODE+DATA

CODE:可执行代码占用的物理内存大小,单位kb

DATA:可执行代码使用的数据(数据段+栈)占用的物理内存大小,单位kb

SHRshared,共享内存大小,单位kb

%CPU:上次更新到现在的CPU时间占用百分比

%MEM:进程使用物理内存百分比

TIME+:进程使用的CPU时间总计,单位为1/100

COMMAND:命令名

默认情况下:进入Top之后,各个进程是按CPU的占有量来排序的。

1.进去top之后,按b键,打开或关闭加亮效果。通过按y键关闭或打开运行态的进程。

2.x键,打开或关闭排序列的加亮效果,再按shift+>shift+< 可以左右移动加亮排序列

3.f键,top会进入另一个视图,可编辑基本视图显示的字段。如:

 

wKioL1YMm9azLeDXAAZ3hvYskcs843.jpg 

可根据上面的提示自行选择要输出哪些信息。

另外,top还支持一些内置命令:

        排序:

P :以占据的cpu百分比排序

:以占据内存百分比

T :累计占据CPU时长

 

首部信息显示:

uptime信息:l命令  (可以使用uptime显示同样的内容)

cputask信息:t命令

cpu分别显示:1(数字)

memorym命令

退出q

修改数剧显时间间隔:s

终止指定进程:k

 

而且top还支持带参数显示:常用的参数有

        -d # :指定刷新进程的系统调用

-b :以批次方式,显示多少批次

-n :显示第几批次的状态

 

6、htop命令

   htopLinux系统中的一个互动的进程查看器,一个文本模式的应用程序 ,与Linux传统的top命令相比,htop更人性化,他可以让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,支持鼠标操作。

可以从Fedora-EPEL源下载htop命令,也可以源码安装。

htop界面:

wKiom1YMm-SQ72i8AAJWmLxZ2xc261.jpg 

htop常用选项:

-d #:指定延时时间

-u UserName:只显示指定用户的进程

-s COLOMN:以指定字段进行排序

htop启动之后的交互式命令:

wKioL1YMnAfjKff-AAVh6V3wxa8919.jpg 

空格键:标记/取消标记一个进程。使用其他命令可以作用多个进程,例如kill。可以杀死所标记的进程。

U:取消所有标记的进程

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

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

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

t:显示进程树

由于htop命令启动之后的界面上的参数和top命令的相似,在这就不在介绍。

查看一下F1~F10的功能和对应的字母快捷键

F1---h,? ---->查看htop的使用说明

F2---S------->htop设定

F3---/ -------->搜索进程

F4---\ -------->增量进程过滤器

F5---t------->显示树形结构

F6---<,>----->选择排序方式

F7---[-------->可减少nice的值,提高对应进程的优先级

F8---]-------->可增加nice的值,减低对应进程的优先级

F9---k------->kill a process

F10---q---->退出htop

 

查看内存相关的命令:

 

1.vmstat命令:

 vmstat - Report virtual memory statistics

vmstat命令可以看到整个机器的CPU,内存,IO等使用情况。此命令不是动态显示的,需要手动进行刷新。

 vmstat [options] [delay [count]]

 

vmstat #:相隔#秒刷新。

直接执行vmstat命令的结果为:

wKioL1YMnCOBgQq3AADhlYQX2lM006.jpg 

各个字段的含义:

procs

r:等待运行的进程的个数

b:处于等待资源的进程数,比如正在等待IO或者内存交换等

memory

swpd:交换内存的使用总量,单位KB。如果swpd的值不为0或者比较大,而si,so的值长期为0,这种情况不必担心,不会影响系统性能。

free:当前空闲的物理内存数量,单位KB

buffbuffer cache的内存数量,一般对块设备的读写才需要缓冲

cache:表示 page cache的内存数量,一般作文件系统的cached,频繁访问的文件都会被cached。如果cached值较大,说明cached文件数较多。如果此时IObi较小时,说明文件系统效率较好。

swap:

si:数据进入swap中的数据速率(kb/s),由磁盘点入内存

so:数据离开swap中的数据速率(kb/s),由内存调入磁盘

IO

bi:从块设备读入数据到系统的速率(kb/s)(读磁盘)

bo:保存数据至块设备的速率:(写磁盘)

这里设置的bi+bo的参考值为1000,如果值大于1000,而且wa值比较大,则表示系统磁盘IO性能瓶颈。

stytem

ininterrupt,中断速率

cscontext switch,上下文切换速率,进程切换速率。

CPU

us:用户空间消耗的CPU的时间百分比

sy:内核空间消耗的CPU的时间百分比

idCPU处于空闲状态的时间百分比

waIO等待所占的CPU时间的百分比

常用选项:

-f:显示从系统启动至今的fork数量

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

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

-p 分区:显示磁盘分区统计信息

2.pmap命令:

pmap - report memory map of a process

pmap -x pids...

-x:显示详细格式信息。

另一种实现:cat /proc/PID/maps

3.glances命令:

glance使用一款用户Linux命令行系统监视工具,使用Python开发,能够监视CPU,负载,内存,磁盘IO,网络流量,文件系统等信息。

glances - A cross-platform curses-based monitoring tool

常用选项:

-b:以byte为单位显示网卡数据速率

-d:关闭磁盘I/O模块

-f/path/to/somefile:设定输入文件

-o{HTML|CSV}:输出格式

-m:禁用mount模块

-n:禁用网络模块

-t #:延迟时间间隔

-l:每隔CPU的相关数据单独显示

glances界面:

wKioL1YMnDvDVl4CAANBWgBevzY553.jpg 

glances界面分别显示了CPULoadMemSwapNetworkTasksDiskI/O信息。

进入glances界面之后有一些内建命令:

h:显示帮助信息

q:离开glances

c:按照CPU实时负载对系统进程进行排序

m:按内存使用状况对系统进程进行排序

i:按照I/O使用状况对系统进程进行排序

p:按照进程名称进行排序

d:显示磁盘读写状况

w:删除日志文件

l:显示日志

s:显示传感器信息

f:显示系统信息

 

glances可以运行在c/s模式下查看系统状态

服务模式:

glances -s -B IPADDR

 

IPADDR: 指明监听于本机哪个地址

 

客户端模式:

glances -c IPADDR

 

IPADDR:要连入的服务器端地址

 

4.dstat命令:

dstat:多功能系统资源统计生成工具。

 dstat [-afv] [options..] [delay [count]]

常用选项:

-c:显示CPU的相关信息

-C 0,1,total

-d:显示disk相关信息

-D total,sda,sdb,sdc...

wKiom1YMnFDA2A6dAABm-F7IRw4396.jpg 

-g:显示page相关统计数据

-m:显示memory相关统计数据

-n:显示network相关统计数据;

-N eth1,total  统计eth1接口汇总流量

-p:显示process相关统计数据;

-r:显示io请求相关的统计数据;

-s:显示swapped相关的统计数据;

 

--tcp:和tcp相关的统计数据

--udp:和udp相关的统计数据

--unix:和unix相关的统计数据

--raw:和raw相关的统计数据

--socket:和socket相关的统计数据

--ipc:和ipc(进程间通信)相关的统计数据

wKioL1YMnMGi6k8TAAF2888nt8U706.jpg 

--top-cpu:显示最占用CPU的进程

--top-io:显示最占用io的进程

--top-mem:显示最占用内存的进程

--top-latency:显示延迟最大的进程

wKiom1YMnNCDpmCuAAIuK3pE_yw258.jpg 

由此可以看出dstat的功能强大之处了把,dstat还支持获取MySQL5的相关信息:

--mysql5-cmds|conn|io|keys ) 获取mysql5相关信息

 

5.kill命令:

kill命令向进程发送控制信号,以实现对进程管理:

显示当前系统可用信号:

kill -l

man 7 signal

常用的信号:

1) SIGHUP: 无须关闭进程而让其重读配置文件;

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c

9) SIGKILL: 杀死正在运行的进程;该信号不能被阻塞,处理和忽略

15) SIGTERM:终止正在运行的进程;该信号可以被阻塞处理,要求正常杀死进程时,允许进程释放资源之后kill

18) SIGCONT:让停止的进程继续执行

19) SIGSTOP:停止进程的执行

制定信号的方法:

1.信号的数字标识:1,2,9,15,18,19

2.信号完整的名称:SIGHP,SIGINT,SIGKILL

3.信号的简写名称:HUPINTKILL

向进程发送信号:

kill [-signal] PID ...

终止“名称“之下的所有进程

killall [signal] program

 

6.Linux的作业控制:

前台作业:通过终端启动,且启动后一直占据终端;

后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端);

如何让作业运行于后台?

(1) 运行中的作业

Ctrl+z

(2) 尚未启动的作业

# COMMAND &

此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,剥离与终端的关系:

# nohup COMMAND &

查看所有作业:

# jobs

作业控制:

# fg [[%]JOB_NUM]:把指定的后台作业调回前台;

# bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行;

# kill [%JOB_NUM]:终止指定的作业;

7.进程优先级的调整:

进程优先级的调整,是调整静态优先级:100-139

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

如:我们运行top命令,来查看其的优先级:

wKioL1YMnWfgoPVOAADMGHrC2Mo645.jpg 

       nice命令:

nice [OPTION] [COMMAND [ARG]...]

renice命令:

renice [-n] priority pid...

wKiom1YMnX7SlNhcAABVRl_rYPw893.jpg 

wKioL1YMnaCS1hGPAABVRl_rYPw489.jpg