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

来源:https://www.cnblogs.com/xiaoshiwang/archive/2020/02/20/12334529.html
-Advertisement-
Play Games

linux上的進程查看及管理工具: pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall。。。 linux開機時,會啟動第一個進程,由這個進程去啟 ...


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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 中斷系統 中斷系統是電腦系統中響應和處理中斷的系統,包括硬體子系統和軟體子系統兩部分,中斷響應由硬體子系統完成,中斷處理由軟體子系統完成 中斷響應處理與指令執行周期 在指令執行周期最後增加一個微操作,以響應中斷 中斷裝置 電腦系統中發現並響應中斷/異常的硬體裝置稱為中斷裝置,由於中斷源的多樣性, ...
  • cd 切換目錄 cd /bin 切換到bin目錄(指定目錄),cd即change dir cd .. 切換過到當前目錄的上一級目錄,可以用..,也可以用../ cd / 切換到系統根目錄 cd ~ 切換到當前用戶的根目錄,比如我的用戶名是chy => /home/chy cd - 切換到上一個目錄, ...
  • 1. firewalld的基本使用 查看狀態:systemctl status firewalld 啟動:systemctl start firewalld 停止:systemctl stop firewalld 啟用:systemctl enable firewalld 禁用:systemctl ...
  • 傳統存儲器的技術局限以及不斷縮小的製造尺寸所帶來的巨大挑戰促使科研人員開始尋找新一代存儲器件,它應具有接近靜態存儲器的納秒級讀寫速度,具有動態存儲器甚至快閃記憶體級別的集成密度和類似Flash的非易失性存儲特性。 “萬能存儲器”概念作為新一代存儲器的要求被提出來。自旋轉移矩—磁隨機存儲器器件(Spin T ...
  • 處理器與寄存器 處理器部件的簡單示意 用戶程式可見寄存器 可以使程式員減少訪問主存儲器的次數,提高指令執行的效率,所有程式可使用,包括應用程式和系統程式 + 數據寄存器:又稱通用寄存器 + 地址寄存器:索引、棧指針、段地址等寄存器 控制與狀態寄存器 用於控制處理器的操作;主要被具有特權的操作系統程式 ...
  • 前面系列文章講解了VI編輯器、常用命令、防火牆及網路服務管理,本篇將講解磁碟管理相關知識。 ...
  • ping命令 發送ICMP協議的echo request給目標主機 常用選項: 從指定的本機介面發送ICMP: I INTERFACE 本機有多個介面(網卡),可以選擇從哪個介面發: I(大寫i) 介面enp0s3是本地內網ip;介面enp0s8是nat的ip地址,enp0s8是可以訪問外網的,en ...
  • 操作系統控制電腦 電腦系統操作方式 OS規定了合理操作電腦的工作流程,OS的操作介面——系統程式,OS提供給用戶的功能級介面,為用戶提供的解決操作電腦和計算共性問題的所有服務的集合,OS的兩類作業級介面:離線作業控制方式,作業控制語言;聯機作業控制方式,操作控制命令 離線作業控制方式 + O ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...