linux 查看系统资源使用信息的一些命令集合

痴心易碎 提交于 2020-02-20 10:47:19

linux上的进程查看及管理工具:

pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall。。。

linux开机时,会启动第一个进程,由这个进程去启动别的进程,这个第一个进程在centos5,6,7上实现的都不一样。

  • centos5:Sysv init:串行通过脚本去启动别的进程,速度慢
  • centos6:upstart:参考ubuntu的upstart,并行启动脚本,速度快
  • centos7:systemd:参考mac启动的过程,速度更快

这个第一个进程:/sbin/init

在centos7上执行pstree:可以看到父进程是systemd

# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─2*[VBoxClient───VBoxClient]
        ├─2*[VBoxClient───VBoxClient───{VBoxClient}]
        ├─VBoxClient───VBoxClient───2*[{VBoxClient}]
        ├─VBoxService───7*[{VBoxService}]
        ├─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───2*[{at-spi2-registr}]

ps命令:显示当前时间点进程的状态

ps命令为什么能知道所有进程的状态呢?我们知道进程是由内核管理的。每个进程对应内核来说,就是某个变量,内核把这个变量的信息存放在/proc/进程ip/目录下,ps命令就是读这些目录下的文件,来取得所有进程的状态的。

内核参数:linux哲学是一切皆文件,所以内核参数也是文件。

  • 可设置其参数值,而改变内核的允许特性的参数存放在:/proc/sys目录下。
  • 状态变量:用于保存内核中的所有进程的信息,仅用于查看,存放在:/proc/进程id目录下。

查看/proc/1下的文件(也就是1号进程,也就是systemd进程),每个文件存放的是内核参数的值

# pwd
/proc/1
# ls
attr        cmdline          environ  io         mem         ns             pagemap      sched      stack    task
autogroup   comm             exe      limits     mountinfo   numa_maps      patch_state  schedstat  stat     timers
auxv        coredump_filter  fd       loginuid   mounts      oom_adj        personality  sessionid  statm    uid_map
cgroup      cpuset           fdinfo   map_files  mountstats  oom_score      projid_map   setgroups  status   wchan
clear_refs  cwd              gid_map  maps       net         oom_score_adj  root         smaps      syscall

查看文件comm的内容:发现是启动1号进程的命令。

# cat comm
systemd

查看文件maps的内容:

此进程使用的堆(heap)所占用的内容空间是:55f9ef4c6000-55f9ef643000

此进程使用的栈(stack)所占用的内容空间是:7ffd27f9e000-7ffd27fbf000

此进程使用的动态库(/usr/lib64/ld-2.17.so)所占用的内容空间是:7f13ece84000-7f13ece85000

# cat maps
55f9ed91b000-55f9eda7c000 r-xp 00000000 fd:00 67757678             /usr/lib/systemd/systemd
55f9ef4c6000-55f9ef643000 rw-p 00000000 00:00 0                    [heap]
7f13ea4ac000-7f13ea4b0000 r-xp 00000000 fd:00 33700674             /usr/lib64/libuuid.so.1.3.0
7f13ece84000-7f13ece85000 rw-p 00022000 fd:00 33637191             /usr/lib64/ld-2.17.so
7ffd27f9e000-7ffd27fbf000 rw-p 00000000 00:00 0                    [stack]

直接用cat等命令去看文件里的内容太累了,所以有了各种各样的工具来帮助人去查看这些信息,ps就是其中的一个。

进程启动的方式:

  • 系统启动时,自动启动的:与终端无关
  • 用户通过终端启动:与终端有关

ps常用选项:

  • 查看与终端有关的进程:a

    TTY:终端设备号

    TIME:占用cpu的时间总和

    # ps a
      PID TTY      STAT   TIME COMMAND
     5705 pts/0    Ss+    0:00 bash
     5901 pts/1    Ss+    0:00 bash
     5961 pts/2    Ss     0:00 bash
     6062 pts/2    S      0:00 su - root
     6073 pts/2    S+     0:00 -bash
     6171 pts/3    Ss     0:00 -bash
    14173 pts/3    R+     0:00 ps a
  • 查看与终端无关的进程:x

    由于与终端无关,所以TTY出没有终端设备号

    COMMAND:这个进程是由那个程序启动的。由中括号的,是内核启动的线程

    # ps x
      PID TTY      STAT   TIME COMMAND
        2 ?        S      0:00 [kthreadd]
        3 ?        S      0:00 [ksoftirqd/0]
        5 ?        S<     0:00 [kworker/0:0H]
     3793 ?        Ssl    0:00 /usr/sbin/libvirtd  

    显示所有进程:ps ax

  • 以用户的角度显示进程的信息:u

    所有aux经常一起使用,显示的结果是以列PID排序的

    USER:启动进程的user

    PID:进程号

    %CPU:累计cpu使用时间

    %MEM:使用内存比率

    VSZ:占用的虚拟内存大小

    RSS:常驻内存大小(不能放到swap和磁盘上的关键内容)

    STAT:进程的状态

    • R:running(运行中)

    • S:interruptable sleeping(休眠中,但可以被唤醒)

    • D:unterruptable sleeping(休眠中,但不可以被唤醒)

    • T:Stoped(停止了)

    • Z:zombie(僵尸进程,父亲进程没有回收它)。

    • +:前台进程

    • l:启动了多线程的进程

    • N:低优先级进程

    • <:高优先级进程

    • s:session leader:在bash里运行了很多别的线程,所有bash就成了session leader;所以只要结束了session leader进程,则在它里面启动的进程就全被结束掉。

      Ss   08:05   0:00 -bash

    START:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.1 128272  6928 ?        Ss   08:00   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root         2  0.0  0.0      0     0 ?        S    08:00   0:00 [kthreadd]
    root        13  0.0  0.0      0     0 ?        S    08:00   0:00 [kdevtmpfs]
    root        14  0.0  0.0      0     0 ?        S<   08:00   0:00 [netns]
    root        15  0.0  0.0      0     0 ?        S    08:00   0:00 [khungtaskd]
    dbus      3048  0.0  0.1  70204  4328 ?        Ssl  08:00   0:05 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
    rpc       3049  0.0  0.0  73648  1380 ?        Ss   08:00   0:00 /sbin/rpcbind -w
    avahi     3068  0.0  0.0  62144   400 ?        S    08:00   0:00 avahi-daemon: chroot helper
    libstor+  3069  0.0  0.0   8576   824 ?        Ss   08:00   0:00 /usr/bin/lsmd -d
    ys        4771  0.0  0.0 317316  3880 ?        Sl   08:01   0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
    gdm       4779  0.0  0.1 452196  4236 ?        Sl   08:01   0:00 ibus-daemon --xim --panel disable
    gdm       4782  0.0  0.0 375868  3524 ?        Sl   08:01   0:00 /usr/libexec/ibus-dconf
    ys        4788  0.0  0.2 818940  9444 ?        Ssl  08:01   0:00 /usr/libexec/gnome-session-binary --session gnome-classic
    gdm       4789  0.0  0.3 464772 13420 ?        Sl   08:01   0:00 /usr/libexec/ibus-x11 --kill-daemon
    ys        4804  0.0  0.0  59024   968 ?        S    08:01   0:00 dbus-launch --sh-syntax --exit-with-session
  • 显示所有进程:-e

    带-的是BSD风格的选项,不带-的是UNIX的风格。

    # ps -e
      PID TTY          TIME CMD
        1 ?        00:00:03 systemd
        2 ?        00:00:00 kthreadd
        3 ?        00:00:00 ksoftirqd/0
        5 ?        00:00:00 kworker/0:0H
        7 ?        00:00:00 migration/0

    和-e一起使用的还有-f:显示详细信息

    PPID:父进程

    C:CPU占用的百分比

    STIME:运行启动的时间

    TIME:累计CPU运行时间

    # ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 08:00 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root         2     0  0 08:00 ?        00:00:00 [kthreadd]

    还有个-F和-f类似

    PSR:运行在那个cpu核心上。

    # ps -eF
    UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
    root         1     0  0 32068  6928   0 08:00 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize
    root         2     0  0     0     0   0 08:00 ?        00:00:00 [kthreadd]
    root         3     2  0     0     0   0 08:00 ?        00:00:00 [ksoftirqd/0]

    按父,子进程层级方式显示:-H

    # ps -eFH
    UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
    gdm       4779     1  0 113049 4236   0 08:01 ?        00:00:00   ibus-daemon --xim --panel disable
    gdm       4782  4779  0 93967  3524   0 08:01 ?        00:00:00     /usr/libexec/ibus-dconf
  • 自定义要显示的列。列于列之间用逗号分隔:o

    # ps axo pid,command
      PID COMMAND
        1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

    BSD风格:ps -eo

    # ps -eo pid,command | head -3
      PID COMMAND
        1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
        2 [kthreadd]

    常用列:pid,ni(nice),priority(优先级),psr(运行在哪个核心上),pcpu(cpu的利用率),stat(状态),comm(启动的程序),tty(跟哪个终端相关),ppid(父进程id),rtprio(实时优先级)

    nice:取值是-20到19,值越小优先级越高。作用是把自己的优先级降低(普通用户不能提高自己的优先级),让别的进程先执行,很礼让,所有叫nice。但管理员可以提高进程的优先级。

pgrep,pkill命令

pgrep:根据进程的各个列的值,挑选出想查看哪些进程的信息。

pkill:根据进程的各个列的值,挑选出想给哪些进程发信号。

常用选项:

  • 根据effictive user去查看进程:-u uid(或者用户名)

  • 根据实际user去查看进程:-U uid(或者用户名)

    # pgrep -U postfix
    4322
    14862
    # id postfix
    uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)
    # pgrep -U 89
    4322
    14862
    # pgrep -u postfix
    4322
    14862
    [root@localhost 1]# pgrep -u 89
    4322
    14862
  • 根据terminal查看进程:-t

  • 显示进程名:-l

    # pgrep -lU postfix
    4322 qmgr
    14862 pickup
  • 显示完整格式的进程名:-a

    # pgrep -aU postfix
    4322 qmgr -l -t unix -u
    14862 pickup -l -t unix -u
  • 显示其进程号下面的子进程:-P

    root      3781     1  0 28189  4312   0 08:01 ?        00:00:00   /usr/sbin/sshd -D
    root      6163  3781  0 41301  6116   0 08:05 ?        00:00:00     sshd: root@pts/3
    # pgrep -aP 3781
    6163 sshd: root@pts/3
  • 根据字符串去查看ps出来的结果:ps key

    查看有【ssh】字样的进程。

    # pgrep ssh -a
    3781 /usr/sbin/sshd -D
    5023 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
    6163 sshd: root@pts/3
    

    ps nginxps httpd

pidof命令

根据进程名字,找到pid。

# pidof sshd
6163 3781

top命令

类似windows的任务查看器,动态变化。

不带参数top,是按CPU列逆序排序,占用cpu最高的进程在最上面。

# top
top - 15:55:33(当前时间) up  7:54(运行时长),  5 users(登录的用户数),  load average(平均负载,等待运行的队列长度): 0.00(1分钟), 0.01(5分钟), 0.05(15分钟)
Tasks(多少个进程): 231 total,   3 running, 228 sleeping,   0 stopped,   0 zombie
%Cpu(s)(cpu占用百分比):  0.3 us(用户空间的进程占cpu的百分比),  0.7 sy(内核空间的进程占cpu的百分比),  0.0 ni(调整nice的百分比), 99.0 id(空闲百分比),  0.0 wa(等待io的百分比),  0.0 hi(处理硬件终端的百分比),  0.0 si(处理软件终端的百分比),  0.0 st(被虚拟化软件进程偷走的百分比)
KiB Mem(物理内存) :  3880620 total,  2183580 free,   737500 used,   959540 buff/cache(缓冲/缓存)
KiB Swap(交换分区):  4063228 total,  4063228 free,        0 used.  2813008 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 5078 ys        20   0 3025948 199132  68308 R  1.7  5.1  10:32.60 gnome-shell
 1524 root      20   0       0      0      0 S  0.3  0.0   0:10.56 xfsaild/dm-0

uptime命令能显示top命令结果的第一行:

# uptime
 16:38:27 up  8:37,  5 users,  load average: 0.07, 0.04, 0.05

VIRT:虚拟内存集;RES:常驻内存集;SHR:共享内存空间;S:当前状态;TIME+:运行时长

默认是按照%CPU列逆序排序的,可以改变排序的列:

  • 按内存排序:交互输入M
  • 按CPU排序:交互输入T
  • 按执行时长排序:交互输入T

在TOP执行时,可以交互输入的命令列表:

h:显示帮助

l,t,m :显示/非显示第一行,第二行,第三行

d or s:调整刷新间隔

k:杀死指定的进程

q:退出top

  Z,B,E,e   Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
  l,t,m     Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info
  0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode
  f,F,X     Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width

  L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
  R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify
  c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
  x,y     . Toggle highlights: 'x' sort field; 'y' running tasks
  z,b     . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
  u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
  n,#,^O  . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
  C,...   . Toggle scroll coordinates msg for: up,down,left,right,home,end

  k,r       Manipulate tasks: 'k' kill; 'r' renice
  d or s    Set update interval
  W,Y       Write configuration file 'W'; Inspect other output 'Y'
  q         Quit

top命令的常用选项:

  • 指定刷新时间的间隔:-d #
  • 以批次方式显示:-b
  • 显示多少批次后就退出top命令:-n #

以批次方式显示,显示2批次后,自动退出top,刷新间隔是1秒。

# top -b -n 2 -d 1

htop命令

top命令的升级版,在默认repo里没有,在epel里。

  • 选项和top基本相同。

  • 子命令:大部分和top相同,下面几个是htop独有的。

    F1获取子命令的帮助信息。

    • 查看某个进程打开的所有文件:l(小写L)
    • 查看某个进程发起的系统调用都有哪些:s
    • 此父子层级方式显示:t或F5
    • 将选定的进程绑定到某几个cpu核心上:a。(进程默认是可以运行在任意核心上的)

vmstat命令

vmstat [options][delay [count]]

查看内存的统计数据

delay:控制每几秒种显示一次

count:显示几次

每2秒种显示一次,一共显示3次:

# vmstat 2 3

查看一次就退出:

# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2254396   3148 954228    0    0   145    16   88   90  1  1 98  0  0

procs:进程个数

  • r:等待运行的进程个数;cpu上等待运行的任务队列的长度
  • b:处于不可中断睡眠状态的进程的个数;被阻塞的任务队列的长度。

memory:

  • swpd:交换内存的使用量。这里如果是0,说明物理内存够用,说明处于健康状态;如果这里的值过大,就说明物理内存严重不足。spwd是利用磁盘模拟内存,所以速度非常慢。
  • free:空闲的物理内存总量。
  • buff:用于buffer的内存总量
  • cache:用于cache的内存总量

swap:

  • si:数据从物理内存进入swap的速率(单位:kb/s)
  • so:数据从swap离开,返回到物理内存的速率(单位:kb/s)

可以通过swpd和swap的so来判断当前物理内存是否够用:如果swpd里有值,而且so的值很大,则说明物理内存不够,频繁需要从swap换进换出;如果swpd里有值,而so的值不大,则还可以忍受。

io:

  • bi:从块设备读入系统的速率(单位:kb/s)
  • bo:保存数据到块设备的速率(单位:kb/s)

system:

  • in:interrupts,中断产生的速率(每秒产生多少个中断)
  • cs:context switch:进程来回切换的速率。如果此值过万,则说明要运行的进程过多,cpu处理不过来了,需要加cpu。

cpu:

  • us(user space):用户空间的进程使用cpu的百分比
  • sy(system): 内核空间的进程使用cpu的百分比
  • id(idle): cpu处于空闲时间的百分比
  • wa(wait): 等待io完成的cpu百分比
  • st(stolen):被虚拟化技术偷走的时间百分比

常用选项:

  • 查看内存使用的汇总信息:-s

    # vmstat -s
          3880164 K total memory
           707772 K used memory
           861212 K active memory
           523236 K inactive memory
          2164936 K free memory
             3148 K buffer memory
          1004308 K swap cache
          4063228 K total swap
                0 K used swap
          4063228 K free swap
             4633 non-nice user cpu ticks
             3335 nice user cpu ticks
             4878 system cpu ticks
          1343696 idle cpu ticks
              576 IO-wait cpu ticks
                0 IRQ cpu ticks
              353 softirq cpu ticks
                0 stolen cpu ticks
           941197 pages paged in
           112819 pages paged out
                0 pages swapped in
                0 pages swapped out
           763048 interrupts
           860345 CPU context switches
       1582090142 boot time
            17373 forks

pmap命令

显示指定进程的内存映射表

pmap [options] pid [...]

pmap pid=cat /proc/pid/maps

常用选项:

  • 显示详细信息:-x

    RSS:常驻内存大小

    Dirty:脏数据大小

    Mode:读,写,执行的权限

    # pmap -x 1
    1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    Address           Kbytes     RSS   Dirty Mode  Mapping
    000055bb2ebd1000    1412    1168       0 r-x-- systemd
    000055bb2ef31000     140     132     132 r---- systemd
    000055bb2ef54000       4       4       4 rw--- systemd
    000055bb2f8fb000    1520    1464    1464 rw---   [ anon ]
    00007f173c000000     164      12      12 rw---   [ anon ]
    00007f173c029000   65372       0       0 -----   [ anon ]
    00007f1744000000     164      12      12 rw---   [ anon ]
    00007f1744029000   65372       0       0 -----   [ anon ]
    00007f174aeb2000       4       0       0 -----   [ anon ]
    00007f174aeb3000    8192       8       8 rw---   [ anon ]
    00007f174b6b3000       4       0       0 -----   [ anon ]
    00007f174b6b4000    9024     840     840 rw---   [ anon ]
    00007f174c11c000      16       8       0 r-x-- libuuid.so.1.3.0
    00007f174c120000    2044       0       0 ----- libuuid.so.1.3.0

glances命令

用python研发的命令,在base仓库里没有,在epel里。

和top和htop差不多。

特点是支持c/s模式:可以在没有server的登录用户时,使用这种方式,监视server的各种信息。

server端:glances -s -B 本机某个网卡的ip地址

client端:glances -c 服务器的ip地址

dstat命令

需要安装,在base仓库里。

功能很强大,上面命令能查看的,dstat基本都能查看。

# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--

不使用任何参数就是使用:-cdngy

c:total-cpu-usage;d:dsk/total;n:net/total;g:paging;y:system

  • 查看tcp各种状态下的连接的数量:

    # dstat --tcp
    ----tcp-sockets----
    lis act syn tim clo
     13   1   0   0   0
  • 查看最消耗cpu的进程是谁:--top-cpu

    # dstat --top-cpu
    -most-expensive-
      cpu process
    VBoxClient   0.0
    VBoxlient   0.2
  • 查看最消耗磁盘io的进程是谁:--top-bio

    # dstat --top-bio
    ----most-expensive----
      block i/o process
    systemd      36k   18k
  • 查看最消耗内存的进程是谁:--top-mem

    # dstat --top-mem
    --most-expensive-
      memory process
    gnome-shell  192M
  • 延迟最大的进程是谁:--top-latency

    # dstat --top-latency
    --highest-total--
     latency process
    rcu_sched     292
    ksoftirqd/2  9115
  • 还有很多类似--top-xxx的选项

  • --tcp,--udp,--raw,--socket,--ipc

kill命令

给进程发送信号。

有3种办法标识信号:

​ 1,信号的数字标识

​ 2,信号的完整名称:SIGHUP

​ 3,信号的简写名称:HUP

  • 查看有哪些信号:-l

    # 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
    # kill -l 1
    HUP
    # kill -l 2
    INT
  • 发送信号方法:

    # kill -1 pid
    # kill -SIGHUP pid
    # kill -HUP pid
  • 常用信号解释:

    1)SIGHUP:无需关闭进程,让其从新读配置文件

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

    9)SIGKILL:立即无条件终止正在运行的进程

    15)SIGTERM:终止正在运行的进程。(进程打开的文件描述符等,关闭后,在结束自己)

    18)SIGCONT:让后台运行的进程,回到前台运行。

    19)SIGSTOP:让前台的进程去后台运行。

killall命令

根据进程的名字,终止进程,所以符合名字的进程都会被终止。

# killall httpd

调整进程运行的优先级

通过调整进程的nice值调整进程的优先级。只要管理员能调低nice值。

nice:取值是-20到19,值越小优先级越高。

用户空间的进程的优先级范围是:100~139,对应nice值-20~19。也就是说nice为-20的进程的优先级是100。优先级数字越小则越优先,niec值越小则越优先。

进程启动时,nice值是0,所以优先级是120.可以在启动时修改进程的nice值:

显示的15,其实是115,把前面的1省略了。

# nice -n -5 htop
# ps axo pid,priority,ni,comm | grep 344
  344  15  -5 htop

进程启动后,也可以修改其nice:renice -n NICE pid ...

显示的20,其实是120,把前面的1省略了。

# ps axo pid,priority,ni,comm | grep 344
  344  15  -5 htop
# renice -n 0 344
344 (process ID) old priority -5, new priority 0
# ps axo pid,priority,ni,comm | grep 344
  344  20   0 htop

Linux 系统作业控制

系统作业也叫job。

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

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

那么如何让作业,转入后台呢?

  • 运行中的作业:输入ctrl+z之后,作业转入后台,但不是运行状态,而是停止状态。

  • 尚未启动的作业:command &

    这种方法虽然能让作业进入后台运行,但依然依附于终端,一旦终端被终止,它也被终止了。

  • 尚未启动的作业:nohup command &

    让作业进入后台运行,且脱离终端。即使终端被终止,它也不会被终止。

查看后台的所有作业:jobs

那么如何让转入后台的作业,返回到前台终端呢?

fg 作业号,就让指定的作业号的作业恢复到前台运行。

直接执行fg,则是让有加号的作业恢复到前台执行

# jobs
[1]   Stopped                 htop
[2]-  Stopped                 top
[3]+  Stopped                 dstat
# fg 1#回复htop命令到前台执行
  • 终止指定的作业:kill %作业号

    注意必须有%号

    # kill %3
    
    [3]+  Stopped                 dstat
    # jobs
    [1]   Stopped                 htop
    [2]-  Stopped                 top
    [3]+  Terminated              dstat

    c/c++ 学习互助QQ群:877684253

    本人微信:xiaoshitou5854

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!