目錄
一、檢視和控制程序
1.1檢視程序
1.1.1 ps 指令— 檢視靜态的程序統計資訊
1.1.2ps -elf 指令— 檢視靜态的程序統計資訊
1.1.3grep過濾查詢
1.1.4top指令—動态檢視程序資訊
1.1.5pgrep指令— 根據特定條件查詢程序PID資訊
1.1.6pstree指令—檢視程序樹
1.2控制程序
1.2.1手動啟動
1.2.2程序的前背景排程(Ctrl + Z 組合鍵、 jobs指令和fg指令)
1.2.3終止程式的運作
二、計劃任務管理
2.1使用at指令,設定一次性計劃任務
2.2使用crontab指令,設定周期性計劃任務、、
2.2.1crontab指令簡介
2.2.2使用crontab指令管理使用者計劃任務
三、總結
一、檢視和控制程序
-
核心功能:程序管理、記憶體管理、檔案系統、網絡功能、驅動程式、安全功能等
對于所有的作業系統,都有基本的功能
- 什麼是程式?
- 儲存在硬碟、CD光牒等媒體中的可執行的代碼和資料;
- 檔案中靜态儲存的代碼。
- 什麼是程序?
- 在CPU及記憶體中運作的程式代碼;
- 動态執行的代碼;
- 父、子程序(每個程式可以建立一個或者多個程序)
- 程序是正在執行的程式
- 程序與線程的差別
資源配置設定與排程
· 程序是資源競争的基本機關;
· 線程是程式執行的最小機關;
1.1檢視程序
1.1.1 ps 指令— 檢視靜态的程序統計資訊
常用選項:
選項 | 功能 |
---|---|
a | 顯示終端上的所有程序,包括其它使用者的程序。 |
u | 表示列出程序的使用者。 |
x | 顯示所有終端的程序。 |
直接執行不帶任何選項的ps指令時,将隻顯示目前使用者會話中打開的程序
基本格式:
ps aux #基本格式
ps aux | wc -l #結合管道符号查詢具體的數量(需要-1)
- 檢視目前系統的程序
手把手教你如何管理程式一、檢視和控制程式二、計劃任務管理三、總結 - 檢視目前線程
手把手教你如何管理程式一、檢視和控制程式二、計劃任務管理三、總結 -
名稱 描述 USER 啟動該程序的使用者賬号名稱 PID 程序的ID %CPU 程序占用的CPU百分比 %MEM 占用記憶體的百分比 Vsz 該程序使用的虛拟記憶體量(KB) RSS 該程序占用的實體記憶體量(KB) TTY 啟動程序的終端名。不是從終端啟動的程序則顯示為? STAT 該程序的狀态。(見表格下詳解) START 該程序被觸發啟動時間 TIME 該程序實際使用CPU運作的時間 COMMAND 程序的啟動指令 - STAT:
- D:不可被喚醒的休眠狀态;
- R:正在運作狀态;
- S:處于休眠狀态,可被喚醒;
- T:停止狀态,可能是在背景暫停或程序處于跟蹤調試狀态;
- Z:僵廠程序,程序己經中止,但是部分程式還在記憶體當中 ,但其父程序無法正常中止它
- 僵廠程序: 僵屍程序是當子程序比父程序先結束,而父程序又沒有回收子程序,釋放子程序占用的資源,此時子程序将成為一個僵屍程序。如果父程序先退出 ,子程序被init接管,子程序退出後init會回收其占用的相關資源
1.1.2ps -elf 指令— 檢視靜态的程序統計資訊
選項 | 功能 |
---|---|
-e | 顯示系統内的所有程序資訊。 |
-l | 使用長格式顯示程序資訊。 |
-f | 使用完整的格式顯示程序資訊。 |
- 檢視目前系統程序(比ps aux顯示的資訊多一些)
手把手教你如何管理程式一、檢視和控制程式二、計劃任務管理三、總結
名稱 | 代表的意思 |
---|---|
F | 核心配置設定給程序的系統标記 |
s | 程序的狀态 |
UID | 啟動這些程序的使用者 |
PID | 程序的程序ID,每個程序都有一個唯一的PID |
PPID | 父程序的程序号(如果該程序是由另—個程序啟動的) |
C | 程序生命周期中的CPU使用率 |
PRI | 程序的優先級(越大的數字代表越低的優先級) |
NI | 謙讓度值用來參與決定優先級 |
ADDR | 程序的記憶體位址 |
sz | 假如程序被換出,所需交換空間的大緻大小 |
WCHAN | 若該程序在睡眠,則顯示睡眠中的系統函數名 |
STIME | 程序啟動時的系統時間 |
TTY | 程序啟動時的終端裝置 |
TIME | 運作程序需要的累計CPU時間 |
CMD | 程序的啟動指令 |
1.1.3grep過濾查詢
由于系統中運作的程序數量較多,需要查詢某一個程序的資訊時可以結合管道操作和grep指令進行過濾。例如,執行以下操作可以過濾出包含“bash”的程序資訊
1.1.4top指令—動态檢視程序資訊
- 動态檢視程序
- 對查詢到的程序按記憶體占比大小排序,top指令後按shift+m
手把手教你如何管理程式一、檢視和控制程式二、計劃任務管理三、總結 - 檢視目前程序
第一行:任務隊列資訊
19:11:05 | 系統時間 |
---|---|
up 1:03 | 系統已運作時長 |
2 users | 目前登入使用者數 |
load average: 0.00,0.01,0.05 | 平均負載,即機關時間内系統處理的任務數,後面三個數值 分别為1分鐘、5分鐘、15分鐘前到現在的平均值 |
第二行: 系統程序資訊
Tasks | 總程序數 |
---|---|
running | 正在運作的程序數 |
sleeping | 休眠的程序數 |
stopped | 中止的程序數 |
zombie | 僵死的程序數 |
第三行: CPU占用資訊
us | 使用者占用 |
---|---|
sy | 核心占用 |
ni | 優先級排程占用 |
id | 空閑CPU,要了解空閑的CPU百分比,主要看%id部分 |
wa | I/o等待占用 |
hi | 硬體中斷占用 |
si | 軟體中斷占用 |
st | 虛拟化占用 |
第四行:記憶體占用資訊
total | 總空閑記憶體 |
---|---|
free | 空閑記憶體 |
used | 己用記憶體 |
lbuff/cache | 實體記憶體和交換記憶體的緩沖區總和 |
第五行:交換空間(swap)占用資訊
total | 總交換記憶體 |
---|---|
free | 空閑交換記憶體 |
used | 已用交換記憶體 |
avail Mem | 可用實體空間 |
- top常用指令:
指令 代表的意思 P鍵 根據CPU使用百分比大小進行排序 M鍵 根據駐留記憶體大小進行排序 N鍵 根據啟動時間進行排序 c鍵 切換顯示指令名稱和完整指令行 h鍵 可以獲得top程式的線上幫助資訊 q鍵 退出top程式 數字1鍵 顯示CPU個數和狀态
1.1.5pgrep指令— 根據特定條件查詢程序PID資訊
- 常用選項:
-l 顯示程序名 -U 指定特定使用者 -t 指定終端
1.1.6pstree指令—檢視程序樹
pstree指令可以檢視目前系統的程序樹,包括個各程序對應的PID号、使用者名、完整指令等資訊
選項 | 代表的意思 |
---|---|
-A | 各程序樹之間的連接配接以ASCII字元來連接配接 |
-u | 各程序樹之間的連接配接以Unicode字元來連接配接,在某些終端界面下可能會有錯誤 |
-p | 同時列出每個程序的PID |
-u | 同時列出每個程序的所屬賬号名稱 |
1.2控制程序
程序啟動方式為手工啟動和排程啟動
1.2.1手動啟動
- 前台啟動:使用者輸入指令,直接執行的程式;
- 背景啟動:在指令行尾加入“&”符号
當使用cp指令從CD光牒中制作鏡像檔案時,由于需要複制的資料較多,耗時較長,是以可結合“&”符号将複制操作放到背景運作,以便使用者可以繼續執行其他指令操作
1.2.2程序的前背景排程(Ctrl + Z 組合鍵、 jobs指令和fg指令)
- Ctrl + Z 組合鍵: 将目前程序挂起,即調入背景并停止執行
-
jobs指令:檢視處于背景的任務清單
[-l]選項顯示PID号
- fg指令:将背景程序恢複到前台運作,可指定任務序列号
1.2.3終止程式的運作
- Ctrl + C組合鍵 :中斷正在執行的指令;
- kill 、killall指令
- kill用于終止指定PID号的程序
- killall用于終止指定名稱相關的所有程序
- -9選項用于強制終止
- pkill指令:根據特定條件終止相應的程序
-U | 根據程序所屬的使用者名終止相應程序; |
---|---|
-t | 根據程序所在的終端終止相應程序。 |
在 xshell中建立兩個會話,一個切換到普通使用者,另一個在root模式下執行pkill 指令檢視結果。
二、計劃任務管理
2.1使用at指令,設定一次性計劃任務
-
at指令 一次性計劃任務
服務腳本名稱:/etc/init.d/atd
設定格式
-
at [HH:MM] [yyyy-mm-dd] #不帶年月日為今天執行 atq #檢視未執行的一次性計劃任務 atrm 4 #删除第4條任務
-
- 執行個體:設定在2021年9月11日的11:49分自動執行以下任務:統計該時間點系統中由root使用者運作的程序的數量,并将該數值儲存到"/mnt/log.txt”檔案中
- 執行個體:在當天的21:30時自動關閉目前系統
2.2使用crontab指令,設定周期性計劃任務、、
2.2.1crontab指令簡介
- crontab指令
- 按照預先設定的時間周期(分鐘、小時、天.......)重複執行使用者指定的指令操作
- 屬于周期性計劃任務
- 服務腳本名稱:/etc/init.d/crond
- 主要設定檔案:
- 全局配置檔案,位于檔案: /etc/crontab(建議不要修改此檔案)
- 系統預設的設定,位于目錄: /etc/cron.*/
- 使用者定義的設定,位于檔案: /var/spool/cron/使用者名
2.2.2使用crontab指令管理使用者計劃任務
編輯計劃任務
crontab -e [-u 使用者名] #-u預設時預設是針對目前使用者,隻有超級使用者才可以用-u
檢視計劃任務
crontab -l [-u 使用者名]
删除計劃任務
crontab -r [-u 使用者名]
- 時間數值的特殊辨別方法:
特殊字元 說明 *(星号) 代表任何時刻都接受的意思。 ,(逗号) 代表分隔時段的意思 -(減号) 代表一段時間範圍内 /n(斜杠) n代表數字,代表每隔n機關間隔的意思
代表意義 | 分鐘 | 小時 | 日期 | 月份 | 周 | 指令 |
---|---|---|---|---|---|---|
數字範圍 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 需要執行的指令 |
示例:0 17 * * 1-5 每周一到周五17;00
- crontab計劃任務的配置格式
時間周期設定 任務内容設定 指令一定要用絕對路徑,例如cp指令,要用/usr/bin/cp,可以用which檢視指令的絕對路徑
手把手教你如何管理程式一、檢視和控制程式二、計劃任務管理三、總結 手把手教你如何管理程式一、檢視和控制程式二、計劃任務管理三、總結
三、總結
1、掌握程式、程序、線程
2、檢視程序的指令:ps aux 或者ps -elf;top;pgrep;pstree;
3.如何檢視子程序?pstree ap 或者 cd /proc/數字檔案中的/stat
4.啟動程序:前台啟動;背景啟動(指令最後加&)
- 檢視背景任務清單:jobs
- 調用背景程序:fg 任務清單号
- ctrl+z挂起
- kill -9 程序号 PID
- pkill -9 程序号 PID
- killall 全部程序
-
at 小時:分鐘 年-月-日
指令:ctrl D儲存運作
atq 序号
atrm +序号
-
crontab -e -u 使用者(不寫使用者預設目前使用者)
crontab -l -u 使用者
crontab -r -u 使用者
格式:分 時 日 月 周 如果忘記可以檢視cat /etc/crontab
*代表任意
, 不間隔的時間,比如1,2,4 可以是每隔周幾
— 連續的時間 ,例如:1-7
/ 間隔的頻率 1/* 每個一分鐘 1/* 每隔一個小時 1/* 每隔一天 1/* 每隔一個月