天天看點

Linux系統的程序管理一、系統程序介紹二、檢視系統程序三、signal信号的管理四、程序的優先級五、作業控制

Linux系統的程序管理

  • 一、系統程序介紹
    • 1.程序概念
    • 2.程序特點
    • 3.程序類型
  • 二、檢視系統程序
    • 1.PS指令
    • 2.檢視系統程序
    • 3.ps aux結果說明
    • 4.top指令
      • ①top指令使用方法
      • ② top指令選項
    • 5.pgerp指令
    • 6.pidof
  • 三、signal信号的管理
    • 1.signal信号的介紹
    • 2.給程序發送信号
    • 3.man 7 signal
    • 4.常用信号
  • 四、程序的優先級
    • 1.程序優先級介紹
    • 2.檢視程序優先級
    • 3.優先級修改
      • ①當啟動程序時
      • ②當啟動程序後
  • 五、作業控制
    • 1.背景運作一個程式
    • 2.顯示背景程式
    • 3.停止運作程式
    • 4.背景和前台恢複程式

一、系統程序介紹

1.程序概念

程序process是指正在執行的程式;是程式正在運作的一個執行個體。它由程式指令,和從檔案、其它程式中讀取的資料或系統使用者的輸入組成。

2.程序特點

①程序是加載到記憶體中的一段指令

②程序ID(PID)是唯一辨別程序

③子程序內建父程序的屬性資訊

3.程序類型

①前台程序(也稱為互動式程序):這些程序由終端會話初始化和控制。換句話說,需要有一個連接配接到系統中的使用者來啟動這樣的程序;它們不是作為系統功能/服務的一部分自動啟動。

②背景程序(也稱為非互動式/自動程序: 這些程序沒有連接配接到終端;它們不需要任何使用者輸入。

③守護程序:這是背景程序的特殊類型,它們在系統啟動時啟動,并作為服務一直運作;它們不會死亡。它們自發地作為系統任務啟動(作為服務運作)。但是,它們能被使用者通過 init 程序控制。

二、檢視系統程序

1.PS指令

#PS 檢視程序資訊
-a 檢視所有終端的程序
-u 列印程序的所有者資訊
-x 檢視不屬于任何終端的程序
-e 檢視系統的所有程序
-f 檢視額外的資訊
-o 指定格式輸出
--sort 指定排序的參數,例如: --sort=-%mem 按照記憶體大小降序
常用組合為: ps aux 或者 ps -ef

           

2.檢視系統程序

[[email protected] ~]# ps aux |head
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.5 176372 10932 ?        Ss   15:22   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root          2  0.0  0.0      0     0 ?        S    15:22   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        I<   15:22   0:00 [rcu_gp]
root          4  0.0  0.0      0     0 ?        I<   15:22   0:00 [rcu_par_gp]
root          6  0.0  0.0      0     0 ?        I<   15:22   0:00 [kworker/0:0H-kblockd]
root          8  0.0  0.0      0     0 ?        I<   15:22   0:00 [mm_percpu_wq]
root          9  0.0  0.0      0     0 ?        S    15:22   0:00 [ksoftirqd/0]
root         10  0.0  0.0      0     0 ?        R    15:22   0:00 [rcu_sched]
root         11  0.0  0.0      0     0 ?        S    15:22   0:00 [migration/0]

           
[[email protected] ~]# ps -ef |head
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 15:22 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root          2      0  0 15:22 ?        00:00:00 [kthreadd]
root          3      2  0 15:22 ?        00:00:00 [rcu_gp]
root          4      2  0 15:22 ?        00:00:00 [rcu_par_gp]
root          6      2  0 15:22 ?        00:00:00 [kworker/0:0H-kblockd]
root          8      2  0 15:22 ?        00:00:00 [mm_percpu_wq]
root          9      2  0 15:22 ?        00:00:00 [ksoftirqd/0]
root         10      2  0 15:22 ?        00:00:00 [rcu_sched]
root         11      2  0 15:22 ?        00:00:00 [migration/0]

           

3.ps aux結果說明

USER 使用者
PID 程序ID
%CPU CPU占用
%MEM 記憶體占用
VSZ 項記憶體申請位址空間
RSS 實際使用記憶體
TTY 使用終端
STAT 程序狀态
START 程序開始時間
TIME 程序持續時間
程序指令 COMMAND

           
S 休眠
D 不可中斷
R 正在運作
Z 僵屍程序
T 停止
s 子程序
< 高優先級
n 低優先級
+ 背景程序
I 鎖定程序
           

4.top指令

①top指令使用方法

[[email protected] ~]# top
top - 18:47:52 up  3:25,  2 users,  load average: 0.61, 0.66, 0.71
Tasks: 237 total,   2 running, 235 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1966.1 total,    854.9 free,    537.0 used,    574.2 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1275.0 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                       
   835 root      20   0 1277568  52788  23924 S   0.7   2.6   0:18.12 containerd                                                                                    
   821 zabbix    20   0  710536  30140  15880 S   0.3   1.5   0:55.17 zabbix_agent2                                                                                 
  4887 root      20   0       0      0      0 I   0.3   0.0   0:00.01 kworker/0:1-events                                                                            
     1 root      20   0  176372  10932   8104 S   0.0   0.5   0:01.11 systemd                                                                                       
     2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd                                                                                      
     3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                                                        
     4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
           

② top指令選項

按鍵盤數字1,可監控每個邏輯CPU狀況
C 切換顯示指令名稱和完整指令行
M 可按記憶體占用情況程序排序
P 根據CPU使用百分比大小程序排序
T 根據時間/累計時間程序排序
f 可以選擇顯示的内容
           

5.pgerp指令

# pgrep
-U 查找摸個使用者的程序ID
-G 查找某個組的程序ID
-P 根據父程序ID,查找所有子程序ID
-l 不僅列印pid,也列印程序名
-o 表示該程式有多個程式正在運作,則隻查招老的,即最先啟動,(多個程序時即父程序PID)
-n 表示該程式有多個程式正在運作,則查找最新的
-d 定義多個程序之間的分隔符,如果不定義則使用換行符


           
[[email protected] ~]# pgrep -l sshd
819 sshd
2882 sshd
2884 sshd
2887 sshd
2905 sshd
3669 sshd
3671 sshd
3673 sshd
3689 sshd

           

6.pidof

[[email protected] ~]# ps -p $(pidof sshd)
   PID TTY      STAT   TIME COMMAND
   819 ?        Ss     0:00 /usr/sbin/sshd -D -oCiphers=[email protected],[email protected],aes256-ctr,aes256-cbc,[email protected],aes128-ctr,
  2882 ?        Ss     0:00 sshd: root [priv]
  2884 ?        S      0:00 sshd: [email protected]/1
  2887 ?        Ss     0:00 sshd: root [priv]
  2905 ?        S      0:00 sshd: [email protected]
  3669 ?        Ss     0:00 sshd: root [priv]
  3671 ?        S      0:00 sshd: [email protected]/2
  3673 ?        Ss     0:00 sshd: root [priv]
  3689 ?        S      0:00 sshd: [email protected]
[[email protected] ~]# 

           

三、signal信号的管理

1.signal信号的介紹

對程序的操作可以通過發送不同的信号來實作。

2.給程序發送信号

kill 信号 pid
killall 信号 comm
pikill [-signal] pattern

           

3.man 7 signal

Signal     Value     Action   Comment
       ──────────────────────────────────────────────────────────────────────
       SIGHUP        1       Term    Hangup detected on controlling terminal
                                     or death of controlling process
       SIGINT        2       Term    Interrupt from keyboard
       SIGQUIT       3       Core    Quit from keyboard
       SIGILL        4       Core    Illegal Instruction
       SIGABRT       6       Core    Abort signal from abort(3)
       SIGFPE        8       Core    Floating-point exception
       SIGKILL       9       Term    Kill signal
       SIGSEGV      11       Core    Invalid memory reference
       SIGPIPE      13       Term    Broken pipe: write to pipe with no
                                     readers; see pipe(7)
       SIGALRM      14       Term    Timer signal from alarm(2)
       SIGTERM      15       Term    Termination signal
       SIGUSR1   30,10,16    Term    User-defined signal 1
       SIGUSR2   31,12,17    Term    User-defined signal 2
       SIGCHLD   20,17,18    Ign     Child stopped or terminated
       SIGCONT   19,18,25    Cont    Continue if stopped
       SIGSTOP   17,19,23    Stop    Stop process
       SIGTSTP   18,20,24    Stop    Stop typed at terminal
       SIGTTIN   21,21,26    Stop    Terminal input for background process
       SIGTTOU   22,22,27    Stop    Terminal output for background process

           

4.常用信号

signal 15 終止
signal 9 立即終止
signal 1 重讀配置檔案
           
[[email protected] ~]# 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	
           

四、程序的優先級

1.程序優先級介紹

排程優先級決定對CPU的通路,程序的nice值影響優先級。

nice值為-20到19 ,預設為0,低nice值意味着高CPU優先級

2.檢視程序優先級

[[email protected] ~]# ps -eo pid,comm,nice --sort=-nice |head
   PID COMMAND          NI
    23 khugepaged       19
   766 alsactl          19
    22 ksmd              5
     1 systemd           0
     2 kthreadd          0
     9 ksoftirqd/0       0
    10 rcu_sched         0
    11 migration/0       -
    12 watchdog/0        -

           

3.優先級修改

①當啟動程序時

②當啟動程序後

[[email protected] ~]# pidof vim
5330
[[email protected] ~]# ps -eo pid,comm,nice |grep vim
  5330 vim               0
[[email protected] ~]# renice 5 5330
5330 (process ID) old priority 0, new priority 5
[[email protected] ~]# ps -eo pid,comm,nice |grep vim
  5330 vim               5

           

五、作業控制

1.背景運作一個程式

[[email protected] ~]# firefox &
[1] 5397
[[email protected] ~]# Running without a11y support!


           

2.顯示背景程式

[[email protected] ~]# jobs
[1]+  Running                 firefox &

           

3.停止運作程式

[[email protected] ~]# kill 15 5397
[[email protected] ~]# jobs
[1]+  Terminated              firefox
           

4.背景和前台恢複程式

[[email protected] ~]# 
[[email protected] ~]# jobs
[1]-  Running                 ping www.baidu.com > /dev/null &
[2]+  Stopped                 ping www.jd.com > /dev/null
[[email protected] ~]# bg 2
[2]+ ping www.jd.com > /dev/null &
[[email protected] ~]# jobs
[1]-  Running                 ping www.baidu.com > /dev/null &
[2]+  Running                 ping www.jd.com > /dev/null &
[[email protected] ~]# fg 2
ping www.jd.com > /dev/null
^Z
[2]+  Stopped                 ping www.jd.com > /dev/null
[[email protected] ~]# jobs
[1]-  Running                 ping www.baidu.com > /dev/null &
[2]+  Stopped                 ping www.jd.com > /dev/null

           

繼續閱讀