linux常用进程管理工具及查看

linux进程查看及管理工具

    我们常用的进程管理工具有:

pstree, ps, pidof, pgrep, top, htop, glance,dstat


linux系统各进程的相关信息都保存于/proc/PID目录下的各文件中:

[root@www ~]# cd /proc/
[root@www proc]# ls
1     1454  1781  23   272  31    6066    buddyinfo    kcore         sched_debug
10    1470  18    24   273  32    6067    bus          keys          schedstat
1001  15    1806  25   274  33    6332    cgroups      key-users     scsi
1002  1507  1820  258  275  34    6388    cmdline      kmsg          self
1003  1509  1834  259  276  357   6394    cpuinfo      kpagecount    slabinfo
1004  1537  1853  26   277  359   6397    crypto       kpageflags    softirqs
1005  154   1855  260  278  376   6417    devices      loadavg       stat
1006  1547  1857  261  279  377   7       diskstats    locks         swaps
1012  1548  1859  262  280  4     79      dma          mdstat        sys
1094  155   1861  263  281  42    8       driver       meminfo       sysrq-trigger
11    156   1863  264  282  43    80      execdomains  misc          sysvipc
12    1592  1868  265  283  45    866     fb           modules       timer_list
13    16    19    266  284  46    9       filesystems  mounts        timer_stats
1332  1601  1935  267  285  463   929     fs           mpt           tty
1362  161   2     268  286  47    930     interrupts   mtd           uptime
14    1617  20    269  287  4753  942     iomem        mtrr          version
1407  162   2052  27   29   5     944     ioports      net           vmallocinfo
1438  1677  21    270  3    5848  acpi    irq          pagetypeinfo  vmstat
1449  17    22    271  30   6     asound  kallsyms     partitions    zoneinfo

/proc/里每个数字目录代表一个进程号,而目录里则为相对进程的进程文件,每一个进程信息都通过/proc/PID/cmdline来获得


pstree:
    pstree -diplay a tree of processes #以树形结构显示进程

这里要注意的是CentOS 6 和CentOS 7 显示不同

[root@www 1]# pstree#CentOS 6的进程信息,显示为init
init─┬─NetworkManager─┬─dhclient
     │                └─{NetworkManager}
     ├─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─automount───4*[{automount}]
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─cupsd
[root@localhost ~]# pstree#CentOS 7则显示为systemd
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─3*[{NetworkManager}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───{at-spi2-registr}
        ├─atd



ps: process state 查看进程状态
    -report a snapshot of the current processes 显示当前进程信息的快照

        常用组合:aux
                    u: 以用户为中心组织进程状态信息显示
                    a: 与终端相关的进程;
                    x: 与终端无关的进程;

[root@www proc]# ps aux#显示所有用户进程的详细情况
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19356  1620 ?        Ss   Sep01   0:01 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Sep01   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Sep01   0:00 [migration/0]
root          4  0.0  0.0      0     0 ?        S    Sep01   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S    Sep01   0:00 [stopper/0]
root          6  0.0  0.0      0     0 ?        S    Sep01   0:00 [watchdog/0]
root          7  0.0  0.0      0     0 ?        S    Sep01   0:37 [events/0]
root          8  0.0  0.0      0     0 ?        S    Sep01   0:00 [cgroup]
root          9  0.0  0.0      0     0 ?        S    Sep01   0:00 [khelper]

以上按序为:

    当前用户,进程号,cpu使用率,内存使用率,虚拟内存大小,常驻内存集,终端,进程状态,启动时间,启动累计时间,运行的命令
    
    VSZ: Virtual memory SiZe,虚拟内存集
                        RSS: ReSident Size, 常驻内存集
                        STAT:进程状态
                            R:running #正在运行
                            S: interruptable sleeping #可中断睡眠
                            D: uninterruptable sleeping#不可中断睡眠
                            T: stopped#运行停止
                            Z: zombie#僵死状态

                            +: 前台进程
                            l: 多线程进程
                            N:低优先级进程
                            <: 高优先级进程
                            s: session leader#领导会话,

root       1861  0.0  0.0   4064   540 tty5     Ss+  Sep01   0:00 /sbin/mingetty /dev/tty5
root       1863  0.0  0.0   4064   540 tty6     Ss+  Sep01   0:00 /sbin/mingetty /dev/tty6
root       1868  0.0  0.3 577708  3188 ?        Sl   Sep01   0:00 /usr/sbin/console-kit-da
root       1935  0.0  0.1 108336  1788 tty1     Ss+  Sep01   0:00 -bash
root       2052  0.0  0.4  52772  4436 ?        S    Sep01   0:01 /usr/libexec/polkit-1/po
root       4753  0.0  0.1 114644  1120 ?        Ss   01:30   0:00 /usr/sbin/abrtd
root       6332  0.0  0.1   9120  1572 ?        S    06:03   0:00 /sbin/dhclient -d -4 -sf
root       6394  0.0  0.4 100448  4408 ?        Rs   06:07   0:00 sshd: root@pts/0
root       6397  0.0  0.1 108340  1784 pts/0    Ss   06:07   0:00 -bash
postfix    6449  0.0  0.3  81408  3832 ?        S    06:20   0:00 pickup -l -t fifo -u
root       6484  0.0  0.0      0     0 ?        S    06:34   0:00 [flush-253:0]
root       6495  0.0  0.1 110240  1120 pts/0    R+   06:39   0:00 ps aux

    常用组合:-ef
                    -e: 显示所有进程
                    -f: 显示完整格式程序信息

[root@www proc]# ps -ef | head#查看所有进程的前十行
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Sep01 ?        00:00:01 /sbin/init
root          2      0  0 Sep01 ?        00:00:00 [kthreadd]
root          3      2  0 Sep01 ?        00:00:00 [migration/0]
root          4      2  0 Sep01 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 Sep01 ?        00:00:00 [stopper/0]
root          6      2  0 Sep01 ?        00:00:00 [watchdog/0]
root          7      2  0 Sep01 ?        00:00:38 [events/0]
root          8      2  0 Sep01 ?        00:00:00 [cgroup]
root          9      2  0 Sep01 ?        00:00:00 [khelper]

    UID:属主
    PID:进程号
    PIDD:副进程号
    C: cpu;运行的cpu编号


              -eFH
                    -F: 显示完整格式的进程信息
                    -H: 以进程层级格式显示进程相关信息

[root@www proc]# ps -eFH | head#显示完成层级机构的进程信息
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          2      0  0     0     0   0 Sep01 ?        00:00:00 [kthreadd]
root          3      2  0     0     0   0 Sep01 ?        00:00:00   [migration/0]
root          4      2  0     0     0   0 Sep01 ?        00:00:00   [ksoftirqd/0]
root          5      2  0     0     0   0 Sep01 ?        00:00:00   [stopper/0]
root          6      2  0     0     0   0 Sep01 ?        00:00:00   [watchdog/0]
root          7      2  0     0     0   0 Sep01 ?        00:00:38   [events/0]
root          8      2  0     0     0   0 Sep01 ?        00:00:00   [cgroup]
root          9      2  0     0     0   0 Sep01 ?        00:00:00   [khelper]
root         10      2  0     0     0   0 Sep01 ?        00:00:00   [netns]

注:PSR:CPU运行核心

    
    -eo, axo  

    o:指明要显示信息的字段

[root@www proc]# ps axo pid,psr,command | head
   PID PSR COMMAND #显示自定义指定信息的字段,PID,PSR,COMMAND
     1   0 /sbin/init
     2   0 [kthreadd]
     3   0 [migration/0]
     4   0 [ksoftirqd/0]
     5   0 [stopper/0]
     6   0 [watchdog/0]
     7   0 [events/0]
     8   0 [cgroup]
     9   0 [khelper]

        pri: priority,优先级
        psr: processor, CPU

[root@www ~]# ps -aux --sort -psr | head#显示cpu信息
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       6724  0.1  0.4 100448  4428 ?        Ss   07:58   0:00 sshd: root@pts/0 
root          1  0.0  0.1  19356  1620 ?        Ss   Sep01   0:01 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Sep01   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Sep01   0:00 [migration/0]
root          4  0.0  0.0      0     0 ?        S    Sep01   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S    Sep01   0:00 [stopper/0]
root          6  0.0  0.0      0     0 ?        S    Sep01   0:00 [watchdog/0]
root          7  0.0  0.0      0     0 ?        S    Sep01   0:40 [events/0]
root          8  0.0  0.0      0     0 ?        S    Sep01   0:00 [cgroup]


pgrep, pkill(pgrep的链接): 杀死系统中指定的进程
        
        pgrep [options] pattern
           pkill [options] pattern

     常用选项:

                 -u uid: effective user有效用户ID

[root@www proc]# pgrep -u root -l# root用户打开的进程
1 init
2 kthreadd
3 migration/0
4 ksoftirqd/0
5 stopper/0
6 watchdog/0
7 events/0
8 cgroup
9 khelper
10 netns

                    -U uid: real user真正的用户ID 与 -u匹配基本相同
                    -t terminal: 与指定终端相关的进程

[root@www proc]# pgrep -t pts/0
6397#显示pts/0终端的进程SSH PID为6397

                    -l: 显示进程名
                       -a: 显示完整格式的进程名
                       -P pid: 显示其父进程为此处指定的进程的进程列表

[root@www proc]# pgrep -P 6394#根据进程PID查找
6397

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


[root@www ~]# pidof sshd #通过sshd进程查看PID号
6724 1677
[root@www ~]# ps -ef | grep ssd
root       6816   6727  0 08:12 pts/0    00:00:00 grep ssd


top: 为一个动态显示过程,通过用户按键来不断刷新当前状态,提供了对当前系统的实时监控不过top已经大势已去,接着由htop取代


htop:
    为linux系统的一个互动的进程查看器,文本模式应用程序,与传统的top相比,htop更加人性化,让用户交互式操作,

        比top有以下优点:

            可以横向或纵向滚动浏览进程列表,比便看到所有进程和命令行
            在启动上,比top更快
            杀进程时不需要输入进程号
            支持鼠标操作


wKiom1XpLvLzUdmwAAUL5hRtSsU958.jpg

注:htop安装时需依赖ncurses-devel


命令行选项(COMMAND-LINE OPTIONS)

-C --no-color        使用一个单色的配色方案

-d --delay=DELAY     设置延迟更新时间,单位秒

-h --help           显示htop 命令帮助信息

-u --user=USERNAME    只显示一个给定的用户的过程

-p --pid=PID,PID…       只显示给定的PIDs

-s --sort-key COLUMN     依此列来排序

-v �Cversion          显示版本信息

交互式命令(INTERACTIVE COMMANDS)

上下键或PgUP, PgDn 选定想要的进程,左右键或Home, End 移动字段,当然也可以直接用鼠标选定进程;

Space    标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程

U    取消标记所有进程

s    选择某一进程,按s:用strace追踪进程的系统调用

l    显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件

I    倒转排序顺序,如果排序是正序的,则反转成倒序的,反之亦然

+, -    When in tree view mode, expand or collapse subtree. When a subtree is collapsed a "+" sign shows to the left of the process name.

a (在有多处理器的机器上)    设置 CPU affinity: 标记一个进程允许使用哪些CPU

u    显示特定用户进程

M    按Memory 使用排序

P    按CPU 使用排序

T    按Time+ 使用排序

F    跟踪进程: 如果排序顺序引起选定的进程在列表上到处移动,让选定条跟随该进程。这对监视一个进程非常有用:通过这种方式,你可以让一个进程在屏幕上一直可见。使用方向键会停止该功能。

K    显示/隐藏内核线程

H    显示/隐藏用户线程

Ctrl-L    刷新

Numbers    PID 查找: 输入PID,光标将移动到相应的进程上



glances :
   

        glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具。 通过 Glances,我们可以监视 CPU,平均负载,内存,网络流量,磁盘 I/O,其他处理器 和 文件系统 空间的利用情况。

主要功能:
    
    CPU 信息 (用户的相关应用, 系统核心程序和空闲程序)
    总内存信息,包括了物理内存,交换空间和空闲内存等等
    之前的 1 分钟、5 分钟和 15 分钟平均的 CPU 负载
    网络链接的下行和上行速度
    处理器总数,以及其活动状态
    硬盘 I/O 相关(读写)速度详情
    当前挂载设备的磁盘使用情况
    高 CPU 和内存使用的进程名,和相关应用的位置
    在底部显示当前日期和时间
    将消耗最高系统资源的进程用红色标出

常用选项:
            -b: 以Byte为单位显示网卡数据速率;
            -d: 关闭磁盘I/O模块;
            -f /path/to/somefile: 设定输入文件位置;
            -o {HTML|CSV}:输出格式;
            -m: 禁用mount模块
            -n: 禁用网络模块
            -t #: 延迟时间            
            -1:每个CPU的相关数据单独显示;

galnces的内建命令:

    
    a �C 对进程自动排序
    c �C 按 CPU 百分比对进程排序
    m �C 按内存百分比对进程排序
    p �C 按进程名字母顺序对进程排序
    i �C 按读写频率(I/O)对进程排序
    d �C 显示/隐藏磁盘 I/O 统计信息
    f �C 显示/隐藏文件系统统计信息
    n �C 显示/隐藏网络接口统计信息
    s �C 显示/隐藏传感器统计信息
    y �C 显示/隐藏硬盘温度统计信息
    l �C 显示/隐藏日志(log)
    b �C 切换网络 I/O 单位(Bytes/bits)
    w �C 删除警告日志
    x �C 删除警告和严重日志
    1 �C 切换全局 CPU 使用情况和每个 CPU 的使用情况
    h �C 显示/隐藏这个帮助画面
    t �C 以组合形式浏览网络 I/O
    u �C 以累计形式浏览网络 I/O
    q �C 退出(‘ESC‘ 和 ‘Ctrl&C‘ 也可以)


使用glances:
    
    直接键入glances即可,如下图:

wKioL1XpMPORucviAANlUQWqLfM968.jpg
    
glances
    
        C/S模式下运行glances命令:
            服务模式:
                glances -s -B IPADDR

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

            客户端模式:
                glances -c IPADDR

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


当 Glances 服务器启动后,到本地执行下面的命令来指定服务器IP地址或主机名以链接。

[root@www proc]# glances -s -P 192.168.0.103




Glances 对于大多用户而言是个在系统资源上提供过多信息的工具。但是如果你是一个想要仅从命令行就能快速获取系统整体状况的系统管理员,那这个工具绝对是你的必备利器。





dstat:
    
    性能监视工具,它完全替代了vmstat, isstat, nfsstat,ifstat..等

    常用参数:

            -c: 显示cpu相关信息;
                -C #,#,...,total
            -d: 显示disk相关信息;
                -D total,sda,sdb,...
            -g:显示page相关统计数据;
            -m: 显示memory相关统计数据;
            -n: 显示network相关统计数据;
            -p: 显示process相关统计数据;
            -r: 显示io请求相关的统计数据;
            -s: 显示swapped相关的统计数据;

            --tcp
            --udp
            --unix
            --raw
            --socket

            --ipc

            --top-cpu:显示最占用CPU的进程;
            --top-io: 显示最占用io的进程;
            --top-mem: 显示最占用内存的进程;
            --top-lantency: 显示延迟最大的进程


直接键入 命令:dstat

                            
wKioL1XpMcqD8FyZAAIPBxeds8I123.jpg





你可能感兴趣的:( , , ,glances,dstat,htop)