四大命令助你轻松管理Linux进程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四大命令助你轻松管理Linux进程相关的知识,希望对你有一定的参考价值。

    在Linux操作系统中,进程应该是重中之重。很多攻击的发动、黑客的入侵都是通过进程来实现的,以至于很多软件的BUG、系统的故障、硬件的检测等等,我们都可以通过进程的管理来判断。因为,进程管理对Linux运维工程师来说,至关重要。


1. 进程的相关概念


1.1 进程是什么?    

    进程是运行中的程序的一个副本;存在生命周期,创建开始运行,运行结束退出

    通俗来讲,进程就是运行中的程序


1.2 进程创建

    进程都是由其父进程创建,进程间存在着父子关系

这里以CentOS 6为例,其父进程为 init,我们可以通过pstree命令查看

[[email protected] ~]# pstree
init─┬─abrtd
      ├─acpid
      ├─atd
      ├─auditd───{auditd}
      ├─console-kit-dae───63*[{console-kit-da}]
      ├─crond
      ├─dbus-daemon───{dbus-daemon}
      ├─hald─┬─hald-runner─┬─hald-addon-acpi
      │      │             └─hald-addon-inpu
      │      └─{hald}
      ├─httpd───8*[httpd]
      ├─login───bash───htop
      ├─master─┬─pickup
      │        └─qmgr
      ├─5*[mingetty]
      ├─rsyslogd───3*[{rsyslogd}]
      ├─sshd─┬─sshd───bash───htop
      │      └─sshd───bash───pstree
      ├─udevd───2*[udevd]
      └─xinetd

启动进程的方式:

        系统启动过程中自动启动:与终端无关的进程;

        用户通过终端启动:与终端相关的进程;


1.3 进程优先级

    0-139: 

    1-99:实时优先级;数字越大,优先级越高

        100-139:静态优先级;数字越小,优先级越高;

    可以通过修改一个进程的Nice值来调整进程的静态优先级,仅管理员可以调低静态优先级


1.4 进程类型

    进程类型:

        守护进程 : 在系统引导过程中启动的进程,跟终端无关的进程;

        前台进程:跟终端相关,通过终端启动的进程

注意:也可把在前台启动的进程送往后台,以守护模式运行;


1.5 进程状态

    运行态:running

    就绪态:ready

    睡眠态:

    可中断:interruptable

    不可中断:uninterruptable

    停止态:stopped

    僵死态:zombie



2. ps命令

    ps 用来显示当前系统进程状态

用法:ps [OPTION]

    [OPTION] 有三种风格:

        UNIX风格:带"-" 例: ps -ef

        BSD风格 :不带"-" 例: ps aux

        GNU风格 :长格式 例: ps --user root


2.1 BSD风格的选项

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

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

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

常用组合之一:aux

[[email protected] ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  17128  1316 ?        Ss   Mar22   0:03 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Mar22   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Mar22   0:00 [migration/0]
root          4  0.0  0.0      0     0 ?        S    Mar22   0:03 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S    Mar22   0:00 [stopper/0]
root          6  0.0  0.0      0     0 ?        S    Mar22   0:00 [watchdog/0]
root          7  0.1  0.0      0     0 ?        S    Mar22   2:26 [events/0]
root          8  0.0  0.0      0     0 ?        S    Mar22   0:00 [events/0]
root          9  0.0  0.0      0     0 ?        S

其中首部各字段的含义:

    USER :启动进程的用户

    PID: 进程号

    %CPU :累积CPU使用时间百分比

    %MEM : 内存占用百分比

    VSZ:虚拟内存集;占用的虚拟内存大小

    RSS:Resident Size,常驻内存集;不能放在交换内存上

    TTY:与其相关的终端

    COMMAND: 由那个命令启动此进程

    带[]的进程表示内核线程

    STAT: 状态

    R:running  运行态

        S:interruptable sleeping 可中断睡眠态

        D:uninterruptable sleeping  不可中断睡眠态

        T:Stopped  停止态

        Z:zombie   僵死态

        +:前台进程   运行在终端上

        l:多线程进程

        N:低优先级进程

        <:高优先级进程

        s:session leader  会话引领者


2.2 UNIX风格的选项

    -e:显示所有进程

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

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

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

    -o: 自定义要显示的字段列表

常用组合之二:-ef

常用组合之三:-eFH

常用组合之四:-eo, axo

[[email protected] ~]# ps -eFH
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          2      0  0     0     0   0 Mar22 ?        00:00:00 [kthreadd]
root          3      2  0     0     0   0 Mar22 ?        00:00:00   [migration/0]
root          4      2  0     0     0   0 Mar22 ?        00:00:03   [ksoftirqd/0]
root          5      2  0     0     0   0 Mar22 ?        00:00:00   [stopper/0]
root          6      2  0     0     0   0 Mar22 ?        00:00:00   [watchdog/0]
root          7      2  0     0     0   0 Mar22 ?        00:02:27   [events/0]
root          8      2  0     0     0   0 Mar22 ?        00:00:00   [events/0]
root          9      2  0     0     0   0 Mar22 ?

与 ps aux类似,其中不一样的首部字段信息:

    PPID:父进程的进程号

    STIME:启动时间

    TIME:累计运行时间

    C: cpu utilization  CPU的占用百分比

    PSR:运行于哪颗CPU之上

    CMD: 启动此进程的命令

    SZ=VSZ 虚拟内存集;占用的虚拟内存大小



3. top命令

    top  动态显示Linux系统进程信息


3.1 排序方式

    P:以占据CPU百分比排序;默认为P

    M:以占据内存百分比排序;

    T:累积占用CPU时间排序;


3.2 隐藏/关闭首部信息

    l: uptime信息  也可以在命令行使用uptime命令显示

    t: tasks及cpu信息

    m: 内存信息


3.3 首部字段的含义

[[email protected] ~]# top
top - 20:15:10 up 1 day, 11 min,  3 users,  load average: 0.00, 0.01, 0.00
Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  1.0%sy,  0.0%ni, 90.0%id,  8.7%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1004768k total,   528624k used,   476144k free,   128244k buffers
Swap:  2097148k total,        0k used,  2097148k free,   219320k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                               
  6565 root      20   0  109m 1872 1240 S  0.7  0.2   8:31.44 htop                                   
 17919 root      20   0  110m 2024 1236 S  0.7  0.2   1:20.08 htop                                   
     1 root      20   0 17128 1316 1068 S  0.0  0.1   0:03.08 init                                   
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                               
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                            
     4 root      20   0     0    0    0 S  0.0  0.0   0:03.37 ksoftirqd/0                            
     5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                              
     6 root      RT   0     0    0    0 S  0.0  0.0   0:00.20 watchdog/0

top:

    load average : 平均负载 

Tasks:

    # total 运行有多少个进程

%Cpu:

    us 用户空间进程占用百分比

    sy 内核空间进程占用百分比

    ni nice调整额外占用的百分比

    id 空闲百分比

    wa 等待io完成时间百分比

    hi 处理硬件中断所占用的百分比

    si 处理软件终端所占用的是百分比

    st 被虚拟化程序偷走的时间百分比

KiB Mem:

    total 总空间

    free 空闲空间

    used 已使用空间间

    buff/cache 用于缓存和缓冲的空间

    avail Mem :可用内存空间


3.4 命令选项

    -d #:指定刷新时间间隔,默认为3秒;

    -b:以批次方式显示;

    -n #:显示多少批次;

例:

~]# top -d 5 -b -n 2


3.5 htop命令

技术分享


    top的升级版,可支持鼠标操作

    top的内建命令和选项 htop都可兼容使用

额外的常用选项和子命令

    选项:

            -d #:指定延迟时间间隔;

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

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

        子命令:

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

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

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

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

注:htop不是系统自带的,需要自己额外安装


4. dstat命令

    dstat 多用途工具生成系统资源统计数据(非常强大的一款工具)

技术分享

用法:dstat [-afv] [options..] [delay [count]]


常用选项:

    -c, --cpu:显示cpu相关信息;

    -C #,#,...,total 看那颗CPU信息

    -d, --disk:显示磁盘的相关信息

    -D sda,sdb,...,tobal   某一块磁盘的相关信息

    -g:显示page相关的速率数据;

    -m:Memory的相关统计数据 

    -i: 显示中断的信息

    -l: 显示平均负载

    -n:Interface的相关统计数据; 网络

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

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

    -s:显示swapped的相关统计数据; 交换内存

    -y: 显示system

    -t: 统计当前时间

    --tcp  TCP链接相关数据

    --udp

    --raw 

    --socket 

    --ipc 进程间通信的相关数据

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

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

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

    --top-lantency:延迟最大的进程


5. kill命令


5.1 kill命令

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


每个信号的标识方法有三种:

        1) 信号的数字标识;

    2) 信号的完整名称;

    3) 信号的简写名称;


用法: kill  [-s signal|-SIGNAL]  pid...


显示当前系统可用信号:

         kill -l [signal]


向进程发信号:

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


常用信号:

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

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

    9)SIGKILL:杀死运行中的进程;

    15)SIGTERM:终止运行中的进程;

    18)SIGCONT:继续

    19)SIGSTOP:停止   相当于Ctrl+z

例:杀掉htop进程

[[email protected] ~]# pgrep htop
18099
[[email protected] ~]# kill -9 18099


5.2 killall命令

    killall 根据进程名来杀掉进程


用法:killall  [-SIGNAL]  program


例:杀掉htop进程

[[email protected] ~]# killall htop


本文出自 “Linux运维之路” 博客,请务必保留此出处http://ch666.blog.51cto.com/10870222/1755010

以上是关于四大命令助你轻松管理Linux进程的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )

linux进程管理总结

Linux进程管理之“四大名捕”

Linux进程管理

Linux基础21 进程介绍, 进程监控状态ps, 进程相关命令pstree,pgrep,pidof, 动态进程监控top, 进程中断概念, kill停止进程信号介绍pkill, killall

Linux任务管理与守护进程