天天看點

Linux作業系統基礎 1.6 -- 程序管理......linux中的程序管理......

目錄

......

linux中的程序管理

1、程序的定義

2、程序檢視指令

3、程序優先級

4、程序前背景調用

5、 程序信号

 6、systemd守護程序

 7、系統中的登陸審計

......

......

linux中的程序管理

1、程序的定義

程式是靜态的代碼檔案

程序是指程式運作時的形态,是程式的一個副本,是有生命周期的(準備期,運作期,終止期)

程序&線程

程序是資源調用的最小機關;線程是程序的最小機關

程式執行流是從上到下貫穿運作的

當程序是多任務物,cpu是多核心,多任務應該同時被每個核心處理,每個核心處理的任務叫線程,線程資源是共享的。

#程序狀态

#R(TAKS_RUNNING)                          #可執行态(running,ready)

#S(TASK_INTRRUPTABLE)              #可喚醒休眠

#D(TASK_UNINTRRUPTABLE)        #不可喚醒休眠

#T(TASK_STOP)                                  #暫停狀态

#Z(EXIT_ZOMBIE)                                #僵死态

2、程序檢視指令

gnome-system-monitor        #圖形程序檢視工具

ps                #程序檢視
                  #ps 指令的三種風格 unix bsd GNU
                  #a 與終端相關的程序(當使用者登陸系統後産生的程序都是帶終端的)
                  #x 與終端無相關的程序
                  #u 使用者資訊歸類的檢視方式
                  #f 程序的層級關系
                  #o 顯示制定參數 pid comm nice pri pcpu ppid stat user group
                  #-e 顯示所有程序
                  #-f 顯示資訊的完整格式
                  #-H 顯示程序的層級結構
                  #-o 顯示指定參數
                  #--sort=  例:ps -eo %cpu --sort==%cpu 正序顯示程序使用cpu用量
                               ps -eo %cpu --sort==-%cpu 倒序顯示cpu用量
                  ps aux 顯示的資訊如下
                  #USER    程序所有人
                  #PID     程序id
                  #%CPU    程序使用cpu用量
                  #%MEM    程序所用到的記憶體用量
                  #VSZ     程序所用的虛拟記憶體大小
                  #RSS     程序常駐記憶體的資料大小
                  #TTY     程序用到的終端
                  #STAT    程序狀态
                  #START   程序運作時長
                  #TIME    程序占用Cpu時長
                  #COMMAND 程序名稱

pgrep             #程序過濾
                  #-u uid  顯示指定使用者程序                                    
                  #-U user 顯示指定使用者程序
                  #-t tty  顯示指定終端程序
                  #-l      顯示程序名稱
                  #-a      顯示程序的完整名稱
                  #-p      程序的子程序

pidof  vim        ##檢視 vim 的pid
           

 top               ##動态程序檢視

Linux作業系統基礎 1.6 -- 程式管理......linux中的程式管理......

top中的内容顯示資訊

#16:18:50      系統時間

#up 7:20      運作時長

#1 user       系統中有一個使用者登入

#load average: 0.17, 0.12, 0.04

                          1min  5min  15min

Task中的内容顯示資訊

#211 total      任務總量

#2 running      正在運作

#209 sleeping   休眠的任務數量

#0 stopped      被暫停數

#0 zombie       僵死任務數

%Cpu(s)中的内容顯示資訊

#2.0 us      使用者空間

#1.0 sy      核心空間

#0.0 ni      nice值調整時間

#97.0 id     空閑時間

#0.0 wa      等待io時間

#0.0 hi      處理硬體中斷時間

#0.0 si      處理軟體中斷時間

#0.0 st      被偷走的時間(vm使用時間)

MiB Mem中的内容顯示資訊

#818.6 total       總量

#84.6 free         空間

#417.7 used        占用

#316.5 buff/cache  緩存

MiB Swap:   交換分區用量

#PID                  程序id

#USER              程序所有者的使用者名

#PR                   優先級

#NI                     nice值。負值表示高優先級,正值表示低優先級

#VIRT                程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES

#RES                 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA

#SHR                 共享記憶體大小,機關kb

#S                      程序狀态(D=不可中斷的睡眠狀态,R=運作,S=睡眠,T=跟蹤/停止,Z=僵屍程序)

#%CPU              上次更新到現在的CPU時間占用百分比

#%MEM             程序使用的實體記憶體百分比

#TIME+              程序使用的CPU時間總計,機關1/100秒

#COMMAND      指令名/指令行

3、程序優先級

1)、CPU資源配置設定的先後順序,就是指程序的優先級,優先權高的程序有優先執行的權利

2)、檢視系統程序 ps 指令

Linux作業系統基礎 1.6 -- 程式管理......linux中的程式管理......

·UID:代表執行者的身份

·PID:代表這個程序的代号

·PPID:代表這個程序是由那個程序發展衍生而來的,即父程序的代号

·PRI:代表這個程序可被執行的優先級,其值越小越早被執行

·NI:代表這個程序的nice值(即程序可被執行的優先級的修正數值)

  3)、修改程序優先級的指令主要有兩個:nice,renice

i、一開始執行程式就指定nice值:nice

nice -n -5 cat                 #nice值為-5 運作cat指令

ii、調整已存在程序的nice:renice

renice -n -5 43331       #PID為43331的程序nice設為-5

參  數:-n<優先等級>等級的範圍從-20-19,其中-20最高,19最低,隻有系統管理者可以設定負數的等級。

 也可以用top指令更改已存在程序的nice:

top
#進入top後按“r”–>輸入程序PID–>輸入nice值
           

 4)、程序的各種狀态

S  睡眠狀态(sleeping):意味着程序在等待着事件完成
R  運作狀态(runing):并不意味着程序一定在運作中,它表明程序要麼在運作要麼在運作隊列裡
T  停止狀态(stopped):可以通過發送SIGSTOP信号給程序來終止(T)程序。這個被暫停的程序可以通過發送SIGCONT信号讓程序繼續運作
X  死亡程序(dead):這個狀态隻是一個傳回狀态。你不會在任務清單裡看到這個狀态
<  #優先級高
N  #優先級底
s  #頂級程序
+  #運作在前台
           

4、程序前背景調用

<ctrl>+<z>      #把占用shell的程序打入背景挂起

Linux作業系統基礎 1.6 -- 程式管理......linux中的程式管理......

bg     #把背景挂起的程序運作起來

Linux作業系統基礎 1.6 -- 程式管理......linux中的程式管理......

fg     #把背景程序調回前台

Linux作業系統基礎 1.6 -- 程式管理......linux中的程式管理......

&    #運作程序在背景

Linux作業系統基礎 1.6 -- 程式管理......linux中的程式管理......

jobs     #檢視目前shell中在背景的所有工作

Linux作業系統基礎 1.6 -- 程式管理......linux中的程式管理......

5、 程序信号

程序信号:

1                #重新加載系統配置檔案(source)

2                #清空記憶體中的程序資料

3                #清空記憶體中的滑鼠(ctrl+\)

9                #強行結束程序(不能被阻塞)

15               #正常關閉程序(會被阻塞)

18               #運作被暫停的程序

19               #暫停程序(不會被阻塞)

20               #暫停程序(會被阻塞的

程序信号控制工具:

kill    程序信号   pid

killall 程序信号  程序名字

pkill   程序信号  程序條件

例:   ps 檢視程序id

kill -9 程序id        #指定結束某程序

killall -9 程序名     #結束多個同名程序

 6、systemd守護程序

d

是守護程序(daemon)的縮寫,Systemd 取代了

initd

,成為系統的第一個程序(PID 等于 1),其他程序都是它的子程序,其為系統的啟動和管理提供一套完整的解決方案。

#遠端操作主機

#ssh -l 主機名 主機ip位址

#systemctl指令的用法
systemctl 提供了一組子指令來管理單個的 unit,其指令格式為:
systemctl [command] [unit]
command 主要有:
start               ##開啟
stop                ##關閉
status              ##檢視狀态
reload              ##重新加載
restart             ##重新啟動服務
enable              ##設定服務開機啟動
enable --now        ##設定服務開機啟動并目前開啟服務
disable             ##設定服務開啟不其動
list-units          ##檢視系統所有服務目前狀态
list-unit-files      ##檢視服務開機狀态
list-dependencies   ##列出服務依賴性
mask                ##當機服務
unmask              ##解鎖
set-default         ##設定系統運作模式
                   #multi-user.target   無圖形網絡模式
                   #graphical.target    有圖形的網絡模式
get-default         ##檢視系統運作模式
                    ##系統運作模式
                    #0-6
                    #0   POWEROFF
                    #1   single
                    #2   noG+NETWORK
                    #3   同2
                    #4   同2
                    #5   G+NETWORK
                    #6   REBOOT
           

 7、系統中的登陸審計

w         # 顯示正在登陸系統的賬号

            #  -i     顯示登陸來源

            # /var/run/utmp

last      # 登陸成功現在已經退出的

            # /var/log/wtmp

lastb   # 試圖登陸但未成功

            # /var/log/btmp

......