进程管理之常用的进程管理命令

常用的进程管理命令

  • 系统监控工具:
    • glances命令
    • dstat命令
  • 显示/查找系统进程
    • pstree:将所有进程以树状图显示
    • ps:显示进程的当前状态
    • pgrep命令:查询/匹配进程
    • pidof:查找指定名称的进程
    • pmap:进程对应的内存映射
  • top系列命令:
    • top命令:监控系统中的系统状态信息
    • htop命令:
    • iftop命令:监视主机:端口的流量占用信息
    • iotop命令:监视进程的磁盘i/o使用状况。
  • nethogs:实时统计进程的网络带宽利用率
  • 调整进程优先级
    • nice
    • renice
  • 杀死进程:
    • kill
    • pkill
    • killall

Linux系统状态的查看及管理工具:pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup;

进程命令分类:网络,磁盘,内存,CPU

系统监控工具:

glances命令

来源:epel源,使用python语言写的一个监控工具。
C/S模式下运行glances命令。
格式:
参数:

-B @IP|host:绑定服务器端 IP 地址或者主机名称
-s:设置 glances 运行模式为服务器
-c @IP|host:连接 glances 服务器端
-C file:设置配置文件默认是 /etc/glances/glances.conf 
-f file:设置输出文件(格式是 HTML 或者 CSV)
-p PORT:设置运行端口默认是 61209 
-P password:设置客户端 / 服务器密码
-t sec:设置屏幕刷新的时间间隔,单位为秒,默认值为 2 秒,数值许可范围:1~32767 

快捷键:

h:显示帮助信息
q:离开程序退出
c:按照 CPU 实时负载对系统进程进行排序
m:按照内存使用状况对系统进程排序
i:按照 I/O 使用状况对系统进程排序
p:按照进程名称排序
d:显示磁盘读写状况 
w:删除日志文件
l:显示日志
s:显示传感器信息
f:显示系统信息

练习:

服务器模式:
#glances  -s  -B  IPADDR   
	IPADDR:指明监听的本机的哪个地址。
客户端模式:
#glances  -c  IPADDR
	IPADDR:要连入监听的服务器端地址
练习:
在本机的192.168.1.129开启两个终端,用来监听自己本机。
服务器端/终端1:
#glances -s -B 192.168.1.129  & //不加-B IPADDR指明本机地址,则默认
[1] 1290
[root@centos7 ~]#Glances server is running on 192.168.1.129:61209
^C
客户端/终端2:
#glances  -c 192.168.1.129

如图:
进程管理之常用的进程管理命令_第1张图片

dstat命令

dstat命令:系统资源统计,是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。
网站链接


显示/查找系统进程

pstree:将所有进程以树状图显示

作用:pstree命令将所有进程以树状图显示,树状图将会以 pid (如果有指定-p) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的进程。
pstree命令显示下,其中{}中的是线程;
[option]
-A: 各进程树之间的连接以ASCII码字符来连接
-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误(系统默认是以utf8字符来连接)
-p:同时列出每个进程的PID
-u: 同时列出每个进程的所属账号名称
练习:

[root@centos7 ~]#pstree  //将所有进程以树状图显示,默认是utf8字符来连接
systemd─┬─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─abrt-watch-log
        ├─abrtd
[root@centos7 ~]#pstree -U  //进程树之间的连接以utf8字符来连接
systemd─┬─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─abrt-watch-log
        ├─abrtd
[root@centos7 ~]#pstree -A  //进程树之间的连接以ASCII码字符来连接
systemd-+-NetworkManager-+-dhclient
        |                `-2*[{NetworkManager}]
        |-VGAuthService
        |-abrt-watch-log
        |-abrtd

[root@centos7 ~]#pstree -p  //将所有进程以树状图显示,同时显示进程pid
systemd(1)─┬─NetworkManager(618)─┬─dhclient(701)
           │                     ├─{NetworkManager}(658)
           │                     └─{NetworkManager}(660)
           ├─VGAuthService(619)
           ├─abrt-watch-log(625)
           ├─abrtd(599)
           ├─agetty(639)
           ├─atd(631)
           ├─auditd(576)───{auditd}(577)
           ├─chronyd(634)
           ├─crond(635)
           ├─dbus-daemon(607)

[root@centos7 ~]#pstree -pu  //将所有进程以树状图显示,同时显示进程pid和进程所属用户
systemd(1)─┬─NetworkManager(618)─┬─dhclient(701)
           │                     ├─{NetworkManager}(658)
           │                     └─{NetworkManager}(660)
           ├─VGAuthService(619)
           ├─abrt-watch-log(625)
           ├─abrtd(599)
           ├─agetty(639)
           ├─atd(631)
           ├─auditd(576)───{auditd}(577)
           ├─chronyd(634,chrony)
           ├─crond(635)
           ├─dbus-daemon(607,dbus)

[root@centos7 ~]#pstree -p app //以树状图显示用户app所在终端正在运行的进程名及其pid
(图中所示:用户app开启着两个终端,分别运行着脚本a.sh和b.sh,2483->用户app终端1,a.sh->2684,sleep->a.sh中正在运行sleep命令)
bash(2483)───bash(2684)───sleep(2685)

bash(2646)───bash(2682)───sleep(2683)

ps:显示进程的当前状态

ps:显示进程的当前状态,不加参数的ps命令显示的信息太少(默认显示当前终端下的进程,即当前用户在当前终端界面下运行的相关进程)
格式:#ps [options]…
ps命令支持三种选项风格:

  • UNIX选项风格:如#ps -a
  • BSD选项风格:如#ps a(即不加-)
  • GNU选项风格:如’- -help’

能够混用这几种风格,但是可能会发生冲突。较多使用 UNIX 风格的ps命令。
[options]
常用组合:#ps aux
a:选项包括所有终端中的进程。
x:选项包括未链接终端的进程。
u:选项显示进程所有者的信息。
f:选项显示进程树,相当于 ‘–forest’(进程/子进程必须在目录树下的某个树枝上,不在目录树下的进程可以理解为僵尸进程,可以理解为无家可归。)
o 属性…:选项显示定制的信息,如pid,cmd,%cpu,%mem。
L:显示支持的属性列表。
k|–sort=属性:对指定的属性排序,属性前加-,表示倒序。
UNIX选项风格:必须带-
[options]:
常用组合:#ps -ef
-e:显示所有进程,相当于-A。
-f:显示完整格式程序信息。
U 用户:显示某用户的进程
-F:显示更完整格式的进程信息。#ps -eF=#ps aux。
-H:以进程层级格式显示进程相关信息。
-p pid:显示指定pid的进程。
–ppid pid:显示属于pid的子进程。
-M:显示SELinux信息,相当于Z。
相关列表属性解释:
在这里插入图片描述
TTY列中:?是表示与当前终端无关的进程,可以理解为系统进程,开机自启
VSZ:虚拟内存,操作系统承诺给与该程序多少内存(物理内存+swap内存)
RSS:真正的物理内存,即系统实际给与该进程的内存大小
START:进程的启动时间
TIME:时间片的累计值,系统给该进程分配的越多,相对于占用的时间片,cpu越多,占资源。

STAT:进程状态

  • D :不可中断,(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生,通常 IO 的进程);
  • R :正在运行,(正在运行或在运行队列中等待,在可中断队列中);
  • S :中断,(休眠中, 受阻, 在等待某个条件的形成或接受到信号) ;
  • s :进程的领导者(在它之下有子进程);
  • T :停止,(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ;
  • Z :僵死,(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) ;
  • W :进入内存交换(从内核2.6开始无效);
  • X :死掉的进程;
  • W::没有足够的记忆体分页可分配;
  • WCHAN:正在等待的进程资源;
  • <: 高优先级进程
  • N:低优先序进程
  • L:有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存
  • l: 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
  • +:位于后台的进程组;

实例:

[root@centos7 data]#ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem|head  //查找占用最多内存的进程
   PID   PPID CMD                         %MEM %CPU
   892      1 /usr/bin/python -Es /usr/sb  1.2  0.1
  1020      1 /usr/sbin/smbd --foreground  0.8  0.0
   605      1 /usr/lib/polkit-1/polkitd -  0.7  0.0
   620      1 /usr/sbin/NetworkManager --  0.6  0.0
   895      1 /usr/sbin/nmbd --foreground  0.4  0.0
   622      1 /usr/bin/VGAuthService -s    0.4  0.0
   623      1 /usr/bin/vmtoolsd            0.4  0.1
  1169    894 sshd: root@pts/0             0.4  0.0
   604      1 /usr/sbin/abrtd -d -s        0.3  0.0

[root@centos7 data]#ps axo pid,ppid,cmd,%mem,%cpu --sort=-%cpu|head  //查找占用最多cpu的进程
   PID   PPID CMD                         %MEM %CPU
     1      0 /usr/lib/systemd/systemd --  0.2  0.4
   397      1 /usr/lib/systemd/systemd-ud  0.1  0.2
     9      2 [rcu_sched]                  0.0  0.1
    49      2 [kworker/0:2]                0.0  0.1
   225      2 [kworker/1:2]                0.0  0.1
   623      1 /usr/bin/vmtoolsd            0.4  0.1
   892      1 /usr/bin/python -Es /usr/sb  1.2  0.1
     2      0 [kthreadd]                   0.0  0.0
     3      2 [ksoftirqd/0]                0.0  0.0

[root@centos7 data]#watch -n4 'ps axo pid,ppid,cmd,%mem,%cpu --sort=-%cpu|head' //使用watch实用程序执行重复的输出以实现对进程进行实时的监视,如下:每4秒刷新一次监视。
Every 4.0s: ps axo pid,ppid,cmd,%mem,%cpu --sort=-%cpu|head                 Tue Apr 14 16:26:49 2020

   PID   PPID CMD                         %MEM %CPU
     1      0 /usr/lib/systemd/systemd --  0.2  0.3
     9      2 [rcu_sched]                  0.0  0.1
    49      2 [kworker/0:2]                0.0  0.1
   225      2 [kworker/1:2]                0.0  0.1
   397      1 /usr/lib/systemd/systemd-ud  0.1  0.1
   623      1 /usr/bin/vmtoolsd            0.4  0.1
  1169    894 sshd: root@pts/0             0.4  0.1
     2      0 [kthreadd]                   0.0  0.0
     3      2 [ksoftirqd/0]                0.0  0.0


pgrep命令:查询/匹配进程

作用:通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了;
pgrep命令用来查找进程的信息,通常会和kill命令来连用,在指定条件下kill问题进程。
格式:#pgrep [options] < pattern >…
[options]:
-l:显示进程名和pid。
-a:显示进程名和完整的命令行。
-o:当匹配多个进程时,显示进程号(pid)最小的进程。
-n:当匹配多个进程时,显示进程号(pid)最大的进程。
-t terminal:显示与指定终端相关的进程。
-p:显示指定进程的子进程。
< pattern >:支持正则表达式,该命令默认是通过匹配系统中所有进程名进行搜索后,找到预期值。也可以通过-t参数,指定终端查找进程。
实例:

[root@centos7 data]#pgrep -l cron  //显示cron进程的进程名和pid
647 crond

[root@centos7 data]#pgrep -a cron  //显示cron进程的进程名和完整 命令行
647 /usr/sbin/crond -n

[root@centos7 data]#pgrep -lt pts/1  //在pts/1终端root切换到app用户,执行a.sh脚本
1704 bash
1743 su
1744 bash
1781 bash
1782 sleep

[root@centos7 data]#pgrep -lnt pts/1  //显示pts/1终端的最大进程号
1782 sleep
[root@centos7 data]#pgrep -lP 1704  //显示pid为1704的子进程pid和进程名
1743 su
[root@centos7 data]#pgrep -P 1743  //显示pid为1704的子进程pid
1744

[root@centos7 data]#pgrep -l "cr+"  //匹配以cr开头的进程,并显示出进程名和pid
35 crypto
647 crond

//通过pgrep命令可以判断某进程是否启动/是否挂掉。
[root@centos7 data]#pgrep  httpd
[root@centos7 data]#echo $?  //httpd服务未启动(非0)
1
[root@centos7 data]#pgrep  crond
647
[root@centos7 data]#echo $?  //crond服务启动
0
//在判断进程是否启动,pgrep和pidof有相似的用法,同时都最好是精确的进程名,防止出现多匹配或匹配错误。
[root@centos7 data]#pidof httpd
[root@centos7 data]#echo $?
1
[root@centos7 data]#pidof crond  
647
[root@centos7 data]#echo $?
0


pidof:查找指定名称的进程

作用:用于查找正则运行的指定名称的进程的进程号pid号(包括子进程)。
在这里插入图片描述
格式:#pidof (选项) (参数)
选项:
-s:仅返回一个pid进程号;
-c:仅显示当前正在运行且具有相同根目录的进程,该选项仅适用于以root或sudo用户身份运行的pidof,#pidof -c pid 程序名称。
-x:返回指定运行脚本的shell进程PID。
-o:在程序显示输出的pid中,排除指定的pid,可以有多个pid。
参数:
进程名称:指定要查找的进程名称。
实例:

[root@centos7 data]#pidof sshd
1702 1169 894
[root@centos7 data]#pidof -s sshd  //只显示父进程pid
1702

pmap:进程对应的内存映射

进程管理之常用的进程管理命令_第2张图片
额外:
进程管理之常用的进程管理命令_第3张图片
内存可能存在内存泄漏情况,即进程除了使用固定的大小外,还存在一直消耗剩余内存的情况,直到系统内存满,系统崩溃。有此种情况,需要联系开发人员修改代码。
而/proc/PID/fd目录下的文件或目录也应该是由数量限制的,不可能会一直增加,若是一直增加,则进程也有问题,需要修改。
因为,一个进程/程序占用的资源是有限的,不可能无限制的增长。


top系列命令:

top命令:监控系统中的系统状态信息

作用:实时监控系统中的系统状态信息,%CPU,%memory,PID、进程属主、优先级等信息。
如图:#top
进程管理之常用的进程管理命令_第4张图片
信息显示:

  • 第一行:当前系统时间;系统已运行时间;当前有几个用户再登录系统;负载情况(load average 数据是每隔5秒钟检查一次运行队列中活跃的平均进程数,通常每个CPU内核额当前活动进程数不大于3,那么系统性能良好,若每个CPU内核数大于5,则该主机的性能有严重问题。例:一个双核CPU,当Load average为6时,则说明主机已被充分利用。)

  • 第二行:总进程数;运行进程数;休眠进程数;停止进程数;僵尸进程数;

  • 第三行:us用户空间占用CPU的百分比;;sy系统内核空间占用CPU的百分比;;ni改变过优先级的进程占用CPU的百分比;;id空闲CPU百分比;;wa:IO等待占用CPU的百分比;;hi:硬中断(Hardware IRQ)占用CPU的百分比;;si:软中断(Software Interrupts)占用CPU的百分比;;

  • 第四行: 物理内存总量;;空闲内存总量;;使用中的内存总量,即现在系统内核控制的内存数;;缓存的内存量;;

  • 第五行: swap交换分区;交换区总量;空闲交换区总量;使用的交换区总量;缓冲的交换区总量;;
    对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

  • 第六行:空行

  • 第七行:各进程(任务)的状态监控

    • PID — 进程id
    • USER — 进程所有者
    • PR — 进程优先级
    • NI — nice值。负值表示高优先级,正值表示低优先级
    • VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    • RES — 进程使用的、未被换出的物理内存大小,单位kb,RES=CODE+DATA
    • SHR — 共享内存大小,单位kb
    • S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    • %CPU — 上次更新到现在的CPU时间占用百分比
    • %MEM — 进程使用的物理内存百分比
    • TIME+ — 进程使用的CPU时间总计,单位1/100秒
    • COMMAND — 进程名称(命令名/命令行)

top命令快捷键:
排序

  • 根据CPU的使用率排序:P
  • 根据内存大小排序:M
  • 累计占据CPU时长排序,TIME+:T

首部信息显示:

  • 切换显示内存信息:m
  • 切换显示进程Tasks和CPU状态信息:t
  • 显示或隐藏cpu内核个数:1
  • uptime信息显示:l

其他:

  • 切换显示命令名称和完整命令行:c
  • 改变两次刷新之间的延迟时间:s , 默认是5s
  • 终止指定进程:k (默认杀消耗cpu最多的进程,可以指定pid)
  • 退出命令:q
  • 保存文件:W

htop命令:

htop与top很类似,但是htop是交互式的文本模式的进程查看器。它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。使用上下光标键选择进程,F7和F8改变优先级,F9杀死进程。Htop不是系统默认安装的,所以需要额外安装。
如图:
进程管理之常用的进程管理命令_第5张图片

iftop命令:监视主机:端口的流量占用信息

iftop命令作用:显示主机:端口的流量占用信息,可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。epel源。
命令说明:
iftop是类似于top的实时流量监控工具。
主要作用:显示主机:端口的流量占用信息,
可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。
包名:iftop-1.0-0.21.pre4.el7.x86_64.rpm
#iftop
进程管理之常用的进程管理命令_第6张图片
格式:
#iftop [options]
[options]:
-i:设定监测的网卡,eg#iftop -i eth0。
-B:以bytes为单位显示流量(默认是bits)。
-n:使host信息默认直接都显示IP。
-N:使端口信息默认直接都显示端口号。
-F:显示特定网段的进出流量,eg#iftop -F 172.30.1.0/24。
-P:使host信息及端口信息默认就都显示。
进入iftop画面后的一些快捷键:
h:切换是否显示帮助。
进程管理之常用的进程管理命令_第7张图片
n:切换域名系统解析服务。
s:切换显示源主机。
d:切换显示目标主机。
N:切换服务的分辨率。
S:切换显示源端口。
D:切换显示目标端口。
p:切换显示端口。
’ < ':根据左边的本机名或IP排序;
’ > ':根据远端目标主机的主机名或IP排序;
q:退出iftop。

注意:
注意:iftop的流量显示单位是Mb,这个b是bit,是位,不是字节,而ifstat的KB,这个B就是字节了,byte是bit的8倍。初学者容易被误导。
常用操作流程:
iftop 进入界面,先按小写的t , p , 来往的数据合并成一行(t),显示来往双方端口号(p)
再让左边的机器名与端口号服务名,,解析一下 按大小写n
屏蔽中间的IP,端口号,这样会让左边的端口号去重。按大小写D
如果这么多个端口号,都看不到你想看的那个端口,证明你想看的端口,实在没啥流量(98%的场景应该是这样),那么你搞个抓包的吧。。这样更实际点。


iotop命令:监视进程的磁盘i/o使用状况。

iotop:用来监视磁盘I/O使用状况的 top 类工具,可监测到哪一个程序使用的磁盘IO的信息。base源。
rpm包名:iotop-0.6-4.el7.noarch.rpm
#iotop
进程管理之常用的进程管理命令_第8张图片
#iotop [options]
[options]:
-n NUM,–iter=NUM:设置监测的次数,默认无限。在非交互模式下很有用。
-d SEC, --delay=SEC:设置每次监测的间隔,默认1秒,接受非整形数据例如1.1。
-p PID, --pid=PID:指定监测的进程/线程。
-u USER, --user=USER:指定监测某个用户产生的I/O。
-a, --accumulated:显示累积的I/O,而不是带宽。
-b, --batch:非交互模式,一般用来记录日志。
-o, --only:只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。
-t, --time :加上时间戳,非交互非模式。
-q, --quiet :禁止头几行,非交互模式。有三种指定方式。

  • -q 只在第一次监测时显示列名
  • -qq 永远不显示列名。
  • -qqq 永远不显示I/O汇总。
    快捷键:
    左右方向键:可以选择下图的指定列(指定后会有>/<),然后使用r对指定列进行排序(>倒序,<正序)。
    在这里插入图片描述
练习:
1.非交互式,输出5次,间隔2秒,输出到屏幕,也可输出到日志文本,用于监控某时间段的io信息。
[root@centos7 ~]#iotop  -botq  -d 2  -n 5
18:13:42 Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
18:13:42 Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
    TIME   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
18:13:44 Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
18:13:44 Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
18:13:44   1653 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [kworker/0:2]
18:13:46 Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
18:13:46 Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
18:13:46   1653 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [kworker/0:2]
18:13:48 Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
18:13:48 Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
18:13:48   1653 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [kworker/0:2]
18:13:50 Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
18:13:50 Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
18:13:50   1653 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [kworker/0:2]

2.监测PID为1的进程磁盘I/O。
#iotio  -p 1
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                             
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-~em --deserialize 22

3.只显示正在产生I/O的进程或线程。
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                             
  1653 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [kworker/0:2]


nethogs:实时统计进程的网络带宽利用率

作用:有很多适用于Linux系统的开源网络监视工具。比如说,你可以用命令iftop来检查带宽使用情况。netstat用来查看接口统计报告,还有top监控系统当前运行进程,但是如果你想要找一个能够按进程实时统计网络带宽利用率的工具,那么NetHogs值得一看。
NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照进程进行带宽分组.NetHogs不需要依赖载入某个特殊的内核模块. 如果发生了网络阻塞你可以启动NetHogs立即看到哪个PID造成的这种状况.这样就很容易找出哪个程序跑飞了然后突然占用你的带宽.
简单地说,可以通过nethogs查看linux下进程的流量。
属于epel源;目前无依赖包。
包名:nethogs-0.8.5-1.el7.x86_64.rpm
#nethogs
进程管理之常用的进程管理命令_第9张图片
格式:#nethogs [options] [dev]
[options]:
-d:更新刷新率的延迟时间(秒)。默认值为1
-c:更新次数。默认值为0(无限制)
[dev]:要监控的设备。默认情况下,不加网卡接口,除环回接口外,所有接口都正常运行监控。

交互命令:
以下是NetHogs的一些交互命令(键盘快捷键)
m : 修改单位,在(千字节、字节、兆字节)和千字节/秒模式之间切换。
r : 按RECEIVE流量排序。
s : 按SENT流量排序。
q : 退出命令提示符。


调整进程优先级

nice

通过nice命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。
默认情况下,进程以0的优先级启动。进程优先级可以通过top命令显示的NI(nice value)列查看。
进程优先级值的范围从-20到19。值越低,优先级越高。
nice <优先值> <进程名> - 通过给定的优先值启动一个程序

renice

renice命令类似nice命令。使用这个命令可以改变正在运行的进程优先值。
注意,用户只能改变属于他们自己的进程的优先值。
renice -n -p - 改变指定进程的优先值
renice -u -g - 通过指定用户和组来改变进程优先值

杀死进程:

kill

作用:当你执行一个"kill"命令,你实际上发送了一个信号给系统,让它去终结不正常的应用。总共有60个你可以使用的信号,但是基本上你只需要知道SIGTERM(15)和SIGKILL(9)。

  • SIGTERM :
    此信号请求一个进程停止运行。此信号是可以被忽略的。进程可以用一段时间来正常关闭,一个程序的正常关闭一般需要一段时间来保存进度并释放资源。换句话说,它不是强制停止。
  • SIGKILL : 此信号强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。
    使用语法:#kill 信号 PID(可以同时kill多个进程,空格隔开)
    练习:
[root@centos7 ~]#kill -l  //查看kill信号
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

#kill -9 PID //等于#kill SIGKILL PID

pkill

作用:“pkill” 命令是 “按名字” 杀掉进程。允许使用扩展的正则表达式和其它匹配方式。你现在可以使用应用的进程名kill掉它们,而不是使用PID。例如,要 kill 掉 Firefox 浏览器,只需要运行命令:pkill firefox 。

killall

作用:killall 同样使用 进程名 替代 PID,并且它会 kill 掉所有的同名进程。( killall 和 pkill 是相似的,不过如果给出的进程名不完整,killall 会报错。pkill 不需要完整的进程名就行)

你可能感兴趣的:(进程管理之常用的进程管理命令)