zoukankan      html  css  js  c++  java
  • LINUX核心命令实战总结十——进程管理命令

    1.1 命令ps查看进程

    【功能说明】

    命令ps用于列出执行ps命令那个时刻的进程快照,如果要动态地显示进程信息,就需要使用top命令。

    【语法格式】

    ps   [option]  
    ps   [选项]

    【选项说明】

    命令ps参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -a

    显示所有终端下执行的进程

    a

    显示与终端相关进程,包含每个进程的完整路径(*

    x

    显示与终端无关的所有进程(*

    u

    显示进程的用户信息(*

    -u

    显示指定用户相关的进程信息

    -e

    显示所有进程(8

    -f

    额外显示UIDPPIDCSTIME栏位(*

    f

    显示进程树

    -H

    显示进程树

    -l

    以详细的格式来显示进程的状况

    -o

    自定义输出指定的字段,以逗号分隔

    --sort key

    Key表示为指定字段排序,默认升序,+key升序,-key降序

    【使用范例】

    不接任何参数

    [root@A ~]# ps
      PID TTY          TIME CMD
    13069 pts/0    00:00:00 ps
    31982 pts/0    00:00:00 bash

    命令ps常用参数组合(每列的意思百度)

    [root@A ~]# ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 Jan17 ?        00:00:01 /sbin/init
    root         2     0  0 Jan17 ?        00:00:00 [kthreadd]
    root         3     2  0 Jan17 ?        00:00:00 [migration/0]
    root         4     2  0 Jan17 ?        00:00:00 [ksoftirqd/0]
    root         5     2  0 Jan17 ?        00:00:00 [stopper/0]
    root         6     2  0 Jan17 ?        00:00:02 [watchdog/0]
    root         7     2  0 Jan17 ?        00:00:00 [migration/1]
    root         8     2  0 Jan17 ?        00:00:00 [stopper/1]
    root         9     2  0 Jan17 ?        00:00:01 [ksoftirqd/1]
    root        10     2  0 Jan17 ?        00:00:01 [watchdog/1]
    root        11     2  0 Jan17 ?        00:00:00 [migration/2]
    root        12     2  0 Jan17 ?        00:00:00 [stopper/2]
    root        13     2  0 Jan17 ?        00:00:00 [ksoftirqd/2]
    root        14     2  0 Jan17 ?        00:00:01 [watchdog/2]
    [root@A ~]# ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0  19364  1536 ?        Ss   Jan17   0:01 /sbin/init
    root         2  0.0  0.0      0     0 ?        S    Jan17   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S    Jan17   0:00 [migration/0]
    root         4  0.0  0.0      0     0 ?        S    Jan17   0:00 [ksoftirqd/0]
    root         5  0.0  0.0      0     0 ?        S    Jan17   0:00 [stopper/0]
    root         6  0.0  0.0      0     0 ?        S    Jan17   0:02 [watchdog/0]
    root         7  0.0  0.0      0     0 ?        S    Jan17   0:00 [migration/1]
    root         8  0.0  0.0      0     0 ?        S    Jan17   0:00 [stopper/1]
    root         9  0.0  0.0      0     0 ?        S    Jan17   0:01 [ksoftirqd/1]
    root        10  0.0  0.0      0     0 ?        S    Jan17   0:01 [watchdog/1]

    显示指定用户的相关进程信息

    [root@A ~]# ps -u root
      PID TTY          TIME CMD
        1 ?        00:00:01 init
        2 ?        00:00:00 kthreadd
        3 ?        00:00:00 migration/0
        4 ?        00:00:00 ksoftirqd/0
        5 ?        00:00:00 stopper/0
        6 ?        00:00:02 watchdog/0

    以详细的格式显示进程状况

    [root@A ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 R     0 13103 31982  0  80   0 - 27023 -      pts/0    00:00:00 ps
    4 S     0 31982 31979  0  80   0 - 27116 wait   pts/0    00:00:00 bash

    显示进程树

     PID TTY          TIME CMD
    31979 ?        00:00:05     sshd
    31982 pts/0    00:00:00       bash
    13113 pts/0    00:00:00         ps
     2820 pts/1    00:00:00       bash
    29780 pts/1    00:00:00         su
    29782 pts/1    00:00:00           bash
    29812 pts/1    00:00:00             su
    29816 pts/1    00:00:00               bash
    29835 pts/1    00:00:00                 su
    29837 pts/1    00:00:00                   bash
    29862 pts/1    00:00:00                     su
    29866 pts/1    00:00:00                       bash
    30463 pts/1    00:00:00                         su
    30465 pts/1    00:00:00                           bash
    30504 pts/1    00:00:00                             su
    30508 pts/1    00:00:00                               bash
    31734 pts/1    00:00:00                                 su
    31736 pts/1    00:00:00                                   bash
    31796 pts/1    00:00:00                                     su
    31800 pts/1    00:00:00                                       bash
    31828 pts/1    00:00:00                                         su
    31830 pts/1    00:00:00                                           bash
    31861 pts/1    00:00:00                                             su
    31865 pts/1    00:00:00                                               bash
    31886 pts/1    00:00:00                                                 su
    31888 pts/1    00:00:00                                                   bash
     1437 pts/1    00:00:00                                                     su
     1441 pts/1    00:00:00                                                       bash
    [root@A ~]# ps axf
    PID TTY      STAT   TIME COMMAND
    31979 ?        Ss     0:05  \_ sshd: root@pts/0,pts/1
    31982 pts/0    Ss     0:00      \_ -bash
    13116 pts/0    R+     0:00      |   \_ ps axf
     2820 pts/1    Ss     0:00      \_ -bash
    29780 pts/1    S      0:00          \_ su - yhh2
    29782 pts/1    S      0:00              \_ -bash
    29812 pts/1    S      0:00                  \_ su - root
    29816 pts/1    S      0:00                      \_ -bash
    29835 pts/1    S      0:00                          \_ su - yhh2
    29837 pts/1    S      0:00                              \_ -bash
    29862 pts/1    S      0:00                                  \_ su - root
    29866 pts/1    S      0:00                                      \_ -bash
    30463 pts/1    S      0:00                                          \_ su - yhh
    30465 pts/1    S      0:00                                              \_ -bash
    30504 pts/1    S      0:00                                                  \_ su - root  
    View Code

    输出指定的字段

    格式:ps  -eo   “%p%y%x%c”

    查看进程在哪个cpu上运行

    [root@A ~]# ps -eo pid,args,psr
      PID COMMAND                     PSR
        1 /sbin/init                    1
        2 [kthreadd]                    4
        3 [migration/0]                 0
        4 [ksoftirqd/0]                 0
        5 [stopper/0]                   0
        6 [watchdog/0]                  0
        7 [migration/1]                 1
        8 [stopper/1]                   1
        9 [ksoftirqd/1]                 1
       10 [watchdog/1]                  1
       11 [migration/2]                 2
       12 [stopper/2]                   2

    1.2 命令pstree:显示进程状态树

    【功能说明】

    命令pstree以树型结构显示进程和进程之间的关系

    【语法格式】

     pstree [option] [pid|user]
     pstree [选项] [进程号|用户]

    【选项说明】

    命令pstree的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -a

    显示启动每个进程对应的完整指令,包含启动进程的路径、参数等

    -c

    不精简显示进程信息,即显示的进程中包含子进程和父进程

    -h

    对现在执行的程序进行特别标注

    -n

    根据进程PID号来排除输出,默认是以程序名称排序输出的

    -p

    显示进程的PID

    -u

    显示进程对应的用户名称

    【使用范例】

    显示进程树

    [root@web01 data]# pstree
    init─┬─abrtd
         ├─acpid
         ├─atd
         ├─auditd───{auditd}
         ├─automount───4*[{automount}]
         ├─certmonger
         ├─console-kit-dae───63*[{console-kit-da}]
         ├─crond
         ├─cupsd
         ├─dbus-daemon
         ├─hald─┬─hald-runner─┬─hald-addon-acpi
         │      │             └─hald-addon-inpu
         │      └─{hald}
         ├─irqbalance
         ├─login───bash
         ├─master─┬─pickup
         │        └─qmgr
         ├─mcelog
         ├─5*[mingetty]
         ├─rpc.idmapd
         ├─rpc.mountd
         ├─rpc.rquotad
         ├─rpc.statd
         ├─rpcbind
         ├─rsyslogd───3*[{rsyslogd}]
         ├─sshd─┬─sshd───bash
         │      └─sshd─┬─bash───su───bash
         │             └─bash───pstree
         └─udevd───2*[udevd]
    View Code

    显示指定用户的进程

    [root@web01 ~]# pstree yhh
    bash

    显示进程所属的用户

    [root@web01 ~]# pstree -u
    init─┬─abrtd
         ├─acpid
         ├─atd
         ├─auditd───{auditd}
         ├─automount───4*[{automount}]
         ├─certmonger
         ├─console-kit-dae───63*[{console-kit-da}]
         ├─crond
         ├─cupsd
         ├─dbus-daemon(dbus)
         ├─hald(haldaemon)─┬─hald-runner(root)─┬─hald-addon-acpi(haldaemon)
         │                 │                   └─hald-addon-inpu
         │                 └─{hald}
         ├─irqbalance
         ├─login───bash
         ├─master─┬─pickup(postfix)
         │        └─qmgr(postfix)
         ├─mcelog
         ├─5*[mingetty]
         ├─rpc.idmapd
         ├─rpc.mountd
         ├─rpc.rquotad
         ├─rpc.statd(rpcuser)
         ├─rpcbind(rpc)
         ├─rsyslogd───3*[{rsyslogd}]
         ├─sshd─┬─sshd───bash
         │      └─sshd─┬─bash───su───bash(yhh)
         │             └─bash───pstree
         └─udevd───2*[udevd]
    View Code

    1.3 命令pgrep:查找匹配条件的进程

    【功能说明】

    命令pgrep可以查找匹配条件的进程号

    【语法格式】

    pgrep [option] [pattern]
    pgrep [选项] [匹配条件]

    【选型说明】

    命令pgrep的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -u

    显示指定用户的所有进程号

    【使用范例】

    显示指定进程的pid命令

    [root@web01 ~]# pgrep crond
    1887

    显示指定用户的所有进程号

    [root@web01 ~]# pgrep -u root
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ........

    1.4 命令kill:终止进程

    【功能说明】

    命令kill能够终止你希望停止的进程

    【语法格式】

    kill [option] [pid]
    kill [选项] [进程号]

    【选项说明】

    命令kill的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -l

    列出全部的信号名称

    -p

    指定kill命令只打印相关进程的进程号,而不发送任何信息

    -s

    指定要发送的信号(*

    【使用范例】

    列出所有信号的名称

    [root@web01 ~]# kill -l
     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
    [root@web01 ~]# kill -l SIGKILL
    9
    [root@web01 ~]# kill -l 9
    KILL

    对常用信号进行了说明

    信号

    说明

    HUP(1)

    挂起,通常因终端掉线或用户退出而引发

    INT(2)

    中断,通常是按下Ctrl+c组合键来发出这个信号

    QUIT(3)

    退出,通常是按下Ctrl+组合键来发出这个信号

    KILL(9)

    立即结束进程的运行

    TERM(15)

    终止,通常在系统关机时发送

    TSTP(20)

    暂停进程的运行,通常是按下Ctrl+z组合键来发出这个信号

    1.5 命令killall:通过进程名终止进程

    使用kill命令终止进程还需要先获取进程的Pid进程号,这个过程有点繁琐,而使用killall命令就可以直接使用“killall进程名”这种形式终止进程

     【语法格式】

    killall [option] [name]
    killall [选项] [进程名]

    【选项说明】

    命令killall的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -e

    对于很长的名字,要求能够准确匹配,默认情况下,如果一个进程名的长度超过了15个字符,则无法使用整个名字(溢出了)。在这种情况下,killall会终止所有匹配名字前15个字符的所有进程。而-e参数的作用是忽略模糊匹配项目。如果同时指定-v选项,则killall会针对每个忽略的记录打印一条消息

    -I

    不区分大小写

    -g

    终止属于该进程组的进程

    -i

    终止进程之间的询问是否正确

    -l

    列出所有已知的信号名

    -q

    如果没有进程终止则不提示

    -r

    使用正则表达式匹配要终止的进程名

    -s

    用指定的信号代替默认信号

    -u

    终止指定用户的进程(*

    -v

    报告信号是否发送成功

    -w

    等待所有被终止的进程死去,killall每秒都会检查一次被终止的进程是否仍然存在,其仅在都死光后才返回。注意,如果信号被忽略,或者没有起作用,或者进程停留在僵尸状态,那么killall可能会永久等待。(*

    【使用范例】

    终止定时任务服务进程的例子

    [root@web01 ~]# killall crond
    [root@web01 ~]# killall crond
    crond: 没有进程被杀死
    [root@web01 ~]# /etc/init.d/crond start
    正在启动 crond:                                           [确定]
    [root@web01 ~]# killall  -w crond      
    [root@web01 ~]# killall  -w crond
    crond: 没有进程被杀死

    终止指定用户的所有进程

    [root@web01 ~]# killall -u yhh nginx
    nginx: 没有进程被杀死

    1.6 命令pkill:通过进程名终止进程

    【功能说明】

    命令pkill可以通过进程名终止指定的进程,使用killall终止进程需要连续执行几次,而pkill可以杀死指定进程及其所有子进程。

     【语法格式】

    pkill [opion] [name]
    pkill [选项] [进程名 ]

    【选项说明】

    参数选项

    解释说明(带*的为重点)

    -t 终端

    杀死指定终端的进程(*

    -u 用户

    杀死指定用户的进程(*

    【使用范例】

    通过进程名终止进程

    [root@web01 ~]# /etc/init.d/crond status
    crond 已死,但是 subsys 被锁
    [root@web01 ~]# /etc/init.d/crond start
    正在启动 crond:                                           [确定]
    [root@web01 ~]# /etc/init.d/crond status
    crond (pid  10047) 正在运行...
    [root@web01 ~]# pkill crond
    [root@web01 ~]# /etc/init.d/crond status
    crond 已死,但是 subsys 被锁

    通过进程名终止进程

    [root@web01 ~]# w
     16:54:50 up 20 days, 20:28,  4 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty1     -                Thu17    5days  0.00s  0.00s -bash
    root     pts/0    10.16.50.4       Mon16    1.00s  0.19s  0.00s w
    root     pts/1    10.16.50.4       Tue09    4:38m  0.07s  0.07s -bash
    root     pts/2    10.16.50.4       Tue10    1:26   0.02s  0.01s -bash
    [root@web01 ~]# pkill -t tty1

    通过用户名终止进程

    [root@web01 ~]# w
     16:57:25 up 20 days, 20:31,  5 users,  load average: 0.08, 0.02, 0.01
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty1     -                Thu17    5days  0.00s  0.00s -bash
    root     pts/0    10.16.50.4       Mon16    0.00s  0.20s  0.00s w
    root     pts/1    10.16.50.4       Tue09    4:41m  0.07s  0.07s -bash
    root     pts/2    10.16.50.4       Tue10    1:07   0.02s  0.01s -bash
    yhh      pts/3    10.16.50.4       16:57    9.00s  0.00s  0.00s -bash
    [root@web01 ~]# pkill -u yhh

    1.7 命令top:实时显示系统中各个进程的资源占用状况

     【功能说明】

    命令top用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况。该命令可以按照CPU的使用、内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式进行设定显示。

    【语法格式】

    top     [option]
    top     [选项]

    【选项说明】

    命令top的参数及说明

    参数选项

    解释说明(带*的为重点)

    -a

    将进程使用内存排序

    -b

    以批处理的模式显示进程信息,输出结果可以传递给其他程序或写入到文件中。在这种模式下,top命令不会接受任何输入,一直运行直到达到-n选项设置的阈值,或者按Ctrl+C等组合键终止程序

    -c

    显示进程的整个命令路径,而不是只显示命令名称

    -d

    指定每两次屏幕信息刷新之间的时间间隔

    -H

    指定这个可以显示每个线程的情况,否则就是进程的总的状态

    -i

    不显示闲置或者僵尸的进程

    -n

    top输出信息更新的次数,完成后将退出top命令

    -p

    显示指定的进程信息

    交互式命令

    交互式命令

    含义

    H或?

    显示帮助信息,给出交互式命令的一些说明总结

    Z

    全局颜色设置

    B

    全局字体加粗设置

    l

    切换是否显示平均负载和启动时间信息

    t

    切换是否显示进程和CPU状态信息

    m

    切换是否显示内存信息

    l

    数字l,用于多核CPU监控,可监控每个逻辑CPU的状态

    I

    Irix/Solaris模式

    f

    从当前显示列表中添加或删除项目。按“f”键之后会显示列的列表,按“a~z”键即可显示或隐藏对应的列,最后按回车键确认

    o

    改变top输出信息中显示项目的顺序。按小写的“a~z”键可以将相应的列向右移动,而按大写的“A~Z”键可以将相应的列向左移动,最后按回车键确认

    FO

    选择排序的列

    <,>

    移动选择排序的列,“<”选择左邻一列排序,“>”选择右邻一列排序

    R

    切换正常/反转排序

    H

    切换是否显示线程信息

    c

    切换是否显示完整命令行和命令名称信息

    i

    切换是否显示完整命令行和命令名称信息

    S

    切换到累计模式

    x

    以高亮的形式排序对应列,需要结合b/z使用

    y

    高亮运行的进程,需要结合b/z使用

    z

    打开/关闭颜色

    b

    打开/关闭加粗

    u

    显示指定用户相关的进程信息

    n#

    设置显示进程的最大行数

    k

    终止一个进程,系统将提示用户输入一个需要终止进程的PID

    r

    重新设置一个进程的优先级,系统提示用户输入需要改变的进程PID,以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10

    ds

    改变top输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是s。如果是小数,则换算成ms;如果输入0,那么系统输出将会不断刷新,默认刷新时间3s.需要注意的是,如果设置大小的时间,则可能会引起系统不断刷新,无法看清楚输出显示情况,而且系统负载也会加大

    W

    将当前top设置写入“~/.toprc”文件中

    q

    退出top显示

    【使用范例】

    显示进程信息

    [root@bachup ~]# top
    top - 16:40:36 up 53 days,  1:47,  3 users,  load average: 0.00, 0.00, 0.00
    Tasks: 189 total,   1 running, 188 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:  32876344k total,  3043324k used, 29833020k free,   187808k buffers
    Swap:  4128764k total,        0k used,  4128764k free,  2350220k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                     
       34 root      RT   0     0    0    0 S  0.3  0.0   0:06.58 watchdog/7                                                  
    16672 root      20   0 15032 1308  948 R  0.3  0.0   0:00.05 top                                                         
        1 root      20   0 19364 1536 1224 S  0.0  0.0   0:01.78 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.09 migration/0                                                 
        4 root      20   0     0    0    0 S  0.0  0.0   0:02.16 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:09.13 watchdog/0                                                  
        7 root      RT   0     0    0    0 S  0.0  0.0   0:03.37 migration/1                                                 
        8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/1                                                   
        9 root      20   0     0    0    0 S  0.0  0.0   0:00.73 ksoftirqd/1                                                 
       10 root      RT   0     0    0    0 S  0.0  0.0   0:06.74 watchdog/1 
    ...... 
    View Code

    将进程按照使用内存排序

    [root@bachup ~]# top -a
    top - 17:10:45 up 53 days,  2:17,  3 users,  load average: 0.00, 0.00, 0.00
    Tasks: 189 total,   1 running, 188 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:  32876344k total,  3042952k used, 29833392k free,   187808k buffers
    Swap:  4128764k total,        0k used,  4128764k free,  2350236k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                     
     5675 root      20   0  102m 4592 3548 S  0.0  0.0   0:00.07 sshd                                                        
     2043 root      20   0  102m 4572 3516 S  0.0  0.0   0:00.26 sshd                                                        
     8552 root      20   0  249m 4112 1128 S  0.0  0.0   0:05.41 rsyslogd                                                    
     3543 root      20   0  377m 3980 1424 S  0.0  0.0   1:13.51 automount                                                   
     1559 haldaemo  20   0 38088 3836 2884 S  0.0  0.0   0:27.50 hald                                                        
     8877 root      20   0  184m 3580 2504 S  0.0  0.0   0:00.00 cupsd                                                       
     3822 postfix   20   0 81204 3468 2588 S  0.0  0.0   0:03.59 qmgr                                                        
     3819 root      20   0 80956 3464 2556 S  0.0  0.0   0:21.03 master                                                      
     1921 root      20   0 4020m 3460 1996 S  0.0  0.0   0:00.13 console-kit-dae                                             
    16604 postfix   20   0 81036 3428 2548 S  0.0  0.0   0:00.00 pickup                                                      
     1861 root      20   0 79520 2992 2416 S  0.0  0.0   0:00.03 login                                                       
     9058 root      20   0  178m 2372 1552 S  0.0  0.0   0:00.00 abrtd                                                       
     6788 root      20   0  105m 1788 1424 S  0.0  0.0   0:00.07 bash
    View Code

    以批处理模式显示进程信息

    [root@bachup ~]# top -b
    top - 17:14:48 up 53 days,  2:21,  3 users,  load average: 0.00, 0.00, 0.00
    Tasks: 189 total,   1 running, 188 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:  32876344k total,  3042688k used, 29833656k free,   187808k buffers
    Swap:  4128764k total,        0k used,  4128764k free,  2350236k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                     
        1 root      20   0 19364 1536 1224 S  0.0  0.0   0:01.78 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.09 migration/0                                                 
        4 root      20   0     0    0    0 S  0.0  0.0   0:02.16 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:09.13 watchdog/0                                                  
        7 root      RT   0     0    0    0 S  0.0  0.0   0:03.37 migration/1                                                 
        8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/1                                                   
        9 root      20   0     0    0    0 S  0.0  0.0   0:00.73 ksoftirqd/1 

    显示进程的完整路径

    [root@bachup ~]# top -c
    top - 17:17:19 up 53 days,  2:23,  3 users,  load average: 0.00, 0.00, 0.00
    Tasks: 189 total,   1 running, 188 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:  32876344k total,  3042572k used, 29833772k free,   187808k buffers
    Swap:  4128764k total,        0k used,  4128764k free,  2350236k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                     
        1 root      20   0 19364 1536 1224 S  0.0  0.0   0:01.78 /sbin/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.09 [migration/0]                                               
        4 root      20   0     0    0    0 S  0.0  0.0   0:02.16 [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:09.13 [watchdog/0]                                                
        7 root      RT   0     0    0    0 S  0.0  0.0   0:03.37 [migration/1]                                               
        8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 [stopper/1]                                                 
        9 root      20   0     0    0    0 S  0.0  0.0   0:00.73 [ksoftirqd/1]  

    1.8 命令nice:调整程序运行时的优先级

    【功能说明】

    命令nice是一个当程序启动时,修改程序运行优先级的命令

    Linux的优先级范围是从-20(最大优先级) 到19(最小优先级)。优先级越高程序占用CPU的次数越多,反之亦然。

    【语法格式】

    nice [option] [command]
    nice [选项] [命令语句]

    【选项说明】

    参数选项

    解释说明(带*的为重点)

    -n  num

    设置nice增加的数值,num取值从-20~19。不使用-n选项相当于-10的效果说明:

    1、root用户可以随意调整自己活他人程序的nice值,且范围-20~19

    2、普通用户仅可以调整自己程序的nice值,且范围仅0~19(避免普通用户抢占系统资源)

    3、普通用户仅可将nice值往高调,例如nice值原本为5,则原来仅能调整到大于5的值。

    【使用范例】

    单独使用nice命令

    [root@bachup ~]# nice
    0

    默认增加优先级10

    [root@bachup ~]# nice nice
    10
    [root@bachup ~]# nice nice nice
    19

    查看进程优先级

    [root@bachup ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0  6788  2043  0  80   0 - 27089 do_wai pts/2    00:00:00 bash
    4 R     0 20254  6788  0  80   0 - 27036 -      pts/2    00:00:00 ps

    实测:测试PR1N1的关系

    [root@bachup ~]# vi test1 &
    [1] 20256
    [root@bachup ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0  6788  2043  0  80   0 - 27089 do_wai pts/2    00:00:00 bash
    0 T     0 20256  6788  0  80   0 - 28094 do_sig pts/2    00:00:00 vi
    4 R     0 20265  6788  0  80   0 - 27037 -      pts/2    00:00:00 ps
    
    [1]+  Stopped                 vi test1
    [root@bachup ~]# nice -n -10 vim test2 &
    [2] 20267
    [root@bachup ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0  6788  2043  0  80   0 - 27089 do_wai pts/2    00:00:00 bash
    0 T     0 20256  6788  0  80   0 - 28094 do_sig pts/2    00:00:00 vi
    4 T     0 20267  6788  0  70 -10 - 34239 do_sig pts/2    00:00:00 vim
    4 R     0 20268  6788  0  80   0 - 27037 -      pts/2    00:00:00 ps
    
    [2]+  Stopped                 nice -n -10 vim test2

    1.9命令renice:调整运行中的进程的优先级

    【功能说明】

    命令renice修改其优先级,在系统运行中,有时会发生某个不是很重要的进程占用了太多的CPU资源,因此会希望限制这个进程或者是希望某个进程优先运行,这些都是renice命令的使用场景。

    【语法格式】

    renice [option]
    renice [选项]

    【选项说明】

    命令renice的参数及说明

    参数选项

    解释说明(带*的为重点)

    -n num

    设置nice增加的数值,num取值范围从-20~19

               -g

    修改指定用户组的进程的优先级

    -u

    修改指定用户的进程的优先级

    -p

    修改指定pid的进程的优先级

    【使用范围】

    修改指定进程号的优先级

    [root@bachup ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0  6788  2043  0  80   0 - 27089 do_wai pts/2    00:00:00 bash
    0 T     0 20256  6788  0  80   0 - 28094 do_sig pts/2    00:00:00 vi
    4 T     0 20267  6788  0  70 -10 - 34239 do_sig pts/2    00:00:00 vim
    4 R     0 20306  6788  0  80   0 - 27037 -      pts/2    00:00:00 ps
    [root@bachup ~]# renice -n 5 -p 20267
    20267: old priority -10, new priority 5
    [root@bachup ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0  6788  2043  0  80   0 - 27089 do_wai pts/2    00:00:00 bash
    0 T     0 20256  6788  0  80   0 - 28094 do_sig pts/2    00:00:00 vi
    4 T     0 20267  6788  0  85   5 - 34239 do_sig pts/2    00:00:00 vim
    4 R     0 20310  6788  0  80   0 - 27036 -      pts/2    00:00:00 ps

    1.10 命令nohup:用户退出系统进程继续工作

    【功能说明】

    命令nohup可以将程序以忽略挂起信号的方式运行起来,被运行程序的输出信息将不会显示到终端。

    无论是否将nohup命令的输出重定向到终端,输出都将写入到当前目录的nohup.out文件中。如果当前目录的nohup.out文件不可写,则输出重定向到$HOME/nohup.out文件中。

    【语法格式】

    nohup              [option]
    nohup               [选项]

    【使用案例】

    让执行的命令在当前会话终止后继续保持运行

    [root@bachup ~]# nohup ping www.baidu.com
    nohup: 忽略输入并把输出追加到"nohup.out"

    打开另一个窗口

    [root@bachup ~]# ps -ef|grep ping
    root     20625  6788  0 12:14 pts/2    00:00:00 ping www.baidu.com
    root     20650 20627  0 12:15 pts/0    00:00:00 grep ping
    [root@bachup ~]# tail -f nohup.out
    64 bytes from 14.215.177.38: icmp_seq=49 ttl=54 time=46.7 ms
    64 bytes from 14.215.177.38: icmp_seq=50 ttl=54 time=26.8 ms
    64 bytes from 14.215.177.38: icmp_seq=51 ttl=54 time=26.6 ms
    64 bytes from 14.215.177.38: icmp_seq=66 ttl=54 time=26.6 ms
    64 bytes from 14.215.177.38: icmp_seq=67 ttl=54 time=29.0 ms
    64 bytes from 14.215.177.38: icmp_seq=68 ttl=54 time=27.2 ms
    ^C
    [root@bachup ~]# kill 20625

    &配合nohup运行

    [root@bachup ~]# nohup ping www.baidu.com &
    [3] 20706
    [root@bachup ~]# nohup: 忽略输入并把输出追加到"nohup.out"
    [root@bachup ~]# tail -f nohup.out
    64 bytes from 14.215.177.38: icmp_seq=62 ttl=54 time=32.3 ms
    64 bytes from 14.215.177.38: icmp_seq=63 ttl=54 time=26.7 ms
    64 bytes from 14.215.177.38: icmp_seq=64 ttl=54 time=41.0 ms
    64 bytes from 14.215.177.38: icmp_seq=65 ttl=54 time=28.1 ms
    ^C
    [root@bachup ~]# kill 20706

    1.11 命令strace:跟踪进程的系统调用

    【功能说明】

    命令straceLinux环境下的一款程序调试工具,用于检查一个应用程序使用的系统调用以及它所接收的系统信息。Strace会跟踪程序运行时的整个生命周期,输出每一个系统调用的名字、参数、返回值和执行所消耗的时间等,是高级运维和开发人员排查问题的杀手锏。

    【语法格式】

    strace [option]
    strace                [选项]

    【选项说明】

    命令strace的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -c

    统计每一个系统调用所执行的时间,次数和出错的次数等

    -d

    输出strace关于标准错误的调试信息

    -f

    跟踪目标进程,以及目标进程创建的所有子进程(*

    -ff

    如果提供 -o filename,则将所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号。

    -i

    输出系统调用的入口指针

    -q

    禁止输出关于脱离的消息

    -r

    输出每一个系统调用的相对时间

    -t

    在输出中的每一行前加上时间信息,例如16:45:28

    -tt

    在输出中的每一行前加上时间信息,精确到微妙。例如:11:18:59.759546*

    -ttt

    在输出中的每一行加上时间信息,精确到微妙,而且时间表示为UNIX时间戳。例如1628378.3890289

    -T

    显示每次系统调用所花费的时间

    -v

    对于某些相关调用,把完整的环境变量、文件stat结构等打印出来

    -x

    以十六进制形式输出非标准字符串

    -xx

    所有字符串以十六进制形式输出

    -e expr

    输出过滤器,通过表达式,可以过滤掉你不想要的输出(*

    expr是一个表达式,用于控制如何跟踪:[qualifer=][!]value[,value2]

    1、qualifer只能是traceabbrevverboserawsugnalreadwrite其中之一

    2、Value是用来限定的符号或数字

    3、默认qualifertrace

    4、感喊号是否定符号

    例如:

    -e open等价于-e trace=open,表示只跟踪open调用

    -e trace=!open 表示跟踪除了open以外的其他调用

    常见选项:

    -e trace=[set]            只跟踪指定的系统调用

    -e trace=file             只跟踪与文件操作有关的系统调用

    -e trace=process         只跟踪与进程控制有关的系统调用

    -e trace=network        只跟踪与网络有关的系统调用

    -e trace=signal           只跟踪与系统信号有关的系统调用

    -e trace=desc         只跟踪与文件描述符有关的系统调用

    -e trace=ipc           只跟踪与进程通信有关的系统调用

    -e addrev=[set]        设定strace输出的系统调用的结果集

    -e raw=[set]          将指定的系统调用的参数以十六进制显示

    -e signal=[set]        指定跟踪的系统信号

    -e read=[set]         输出从指定文件中读出的数据

    -e write=[set]        输出写入到指定文件的数据

    -o filename

    strace的输出写入文件filename

    -p pid

    指定要跟踪的进程pid,要同时跟踪多个pid,重复多次-p选项即可(8

    -s strsize

    指定输出的字符串的最大长度,默认为32.并没有将文件名视为字符串,默认全部输出

    -u username

    usernameUIDGID执行所跟踪的命令

    【使用范例】

    排查Nginx 403 forbidden 错误

    [root@bachup ~]# strace -tt -f /application/nginx/sbin/nginx

    只跟踪与文件操作有关的系统调用

    [root@bachup ~]# strace -tt -f -e trace=file /application/nginx/sbin/nginx

    通过pid跟踪进程

    [root@bachup ~]# pgrep rsync
    3631
    [root@bachup ~]# strace -tt -f -e trace=file -p 3631
    Process 3631 attached

    1.12 命令ltrace:跟踪进程调用函数库

    【功能说明】

    命令ltrace能够跟踪进程的库函数调用,它会显现调用了那个库函数,而strace则是跟踪进程的每个系统调用。

    【语法格式】

    ltrace [option]
    litrace [选项]

    【选项说明】

    命令ltrace的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -c

    统计库函数每次调用的时间,最后程序退出时打印摘要

    -C

    解码低级别名称(内核级)为用户级名称

    -d

    打印调试信息

    -e expr

    输出过滤器,通过表达式,可以过滤掉你不想要的输出(*

    -e printf 表示只查看printf 函数调用

    -e! printf 表示查看除printf函数以外的所有函数调用

    -f

    跟踪子进程

    -o filename

    ltrace的输出写入文件filename

    -p pid

    指定要跟踪的进程pid*

    -r

    输出每一个调用的相对时间

    -S

    显示系统调用

    -t

    在输出中的每一行前加上时间信息。例如:16:45:28

    -tt

    在输出中的每一行前加上时间信息,精确到微妙。

    -ttt

    在输出的每一行加上时间信息,精确到微妙,而且时间表示为UNIX时间戳

    -T

    显示每次调用所花费的时间

    -u username

    usernameUIDGID执行所跟踪的命令

    【使用范例】

    命令ltrace使用

    [root@bachup ~]# ltrace  /application/nginx/sbin/nginx

    通过pid跟踪进程调用函数库

    [root@bachup ~]# pgrep rsync
    3631
    [root@bachup ~]# ltrace -p 3631
    ^C
    [root@bachup ~]#

    1.13 命令runlevel:输出当前运行级别

    【功能说明】

    命令runlevel用于输出当前linux系统的运行级别

    【语法格式】

    runlevel [option]
    runlevel [选项]

    参数选项

    解释说明(带*的为重点)

    --quit

    不输出结果,用于通过返回值判断的场合

    【使用案例】

    查看当前系统的运行级别

    [root@bachup ~]# runlevel
    N 3

    0: 停机   1:单用户模式   2:无网络的多用户模式   3:多用户模式   4:未使用  5:图形界面模式

    6:重启

    1.14 命令init:初始化linux进程

    【功能说明】

    命令initLinux下的进程初始化工具,init进程是所有linux进程的父进程,它的进程号为1init命令的主要任务是依据配置文件“/etc/inittab”创建linux进程。

    【语法格式】

    init        [option]
    init         [选项]

    【使用范例】

    切换运行级别

    [root@bachup ~]# init 0
    [root@bachup ~]# init 6

    1.15 命令service:管理系统服务

    【功能说明】

    命令service用于对系统进行管理,比如启动(start)、停止(stop)、重启(restart)、重新加载配置(reload)、查看状态(status)等,该命令在centos7里被systemctl取代。

    【选项说明】

    命令service的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    --status-all

    显示所有服务状态

    【使用案例】

    [root@bachup ~]# service --status-all
    abrt-ccpp hook is installed
    abrtd (pid  9058) 正在运行...
    abrt-dump-oops 已停
    acpid (pid  8831) 正在运行...
    automount (pid  3543) 正在运行...
    certmonger (pid  3468) 正在运行...
    表格:filter
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    ACCEPT     all      ::/0                 ::/0                state RELATED,ESTABLISHED 
    2    ACCEPT     icmpv6    ::/0                 ::/0                
    3    ACCEPT     all      ::/0                 ::/0                
    4    ACCEPT     udp      ::/0                 fe80::/64           state NEW udp dpt:546 
    5    ACCEPT     tcp      ::/0                 ::/0                state NEW tcp dpt:22 
    6    REJECT     all      ::/0                 ::/0                reject-with icmp6-adm-prohibited 
    ........

    管理系统服务

    [root@bachup ~]# service crond
    用法:/etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
    [root@bachup ~]# service crond stop
    停止 crond:                                               [确定]
    [root@bachup ~]# service crond start
    正在启动 crond:                                           [确定]
    [root@bachup ~]# service crond restart
    停止 crond:                                               [确定]
    正在启动 crond:                                           [确定]
    [root@bachup ~]# service crond status
    crond (pid  21940) 正在运行...
  • 相关阅读:
    Linux部署之NFS方式安装系统
    VMware Workstation Pro学习探索(Linux,Docker)
    sqlserver最大内存设置太小导致无法启动sql服务
    Docker下安装Sqlserver(mssql)
    docker错误:net/http: TLS handshake timeout;解决方案
    Linux和Docker常用命令
    Linux及Docker学习记录
    .net core视图预编译
    oracle的一些简单语法
    Oracle安装连接常见错误
  • 原文地址:https://www.cnblogs.com/huihuangyan/p/13703962.html
Copyright © 2011-2022 走看看