Linux进程和计划任务管理(详细图例)
Linux進程和計劃任務管理
- 一、進程和進程的關系
- 二、查看進程信息——ps
- 2.1 方法一:ps aux
- 2.2 方法二:ps -elf
- 三、查看進程信息——top
- 3.1 top命令
- 3.2 top常用命令
- 進程信息區各列解釋
- 四、查看進程信息——pgrep
- 五、查看進程樹——pstree
- 六、進程的啟動方式
- 6.1 手動啟動
- 6.2 調度啟動
- 6.3 進程的前后臺調度
- 七、終止進程的運行
- 7.1 ctrl+c組合鍵
- 7.2 kill、killall命令
- 7.3 pkill命令
- 八、計劃任務管理
- 8.1 一次性計劃任務——at
- 8.2 計劃任務管理——crontab
- 8.2.1 管理crontab計劃任務
- 8.2.2 crontab任務配置的格式
- 8.2.3 時間數值的特殊表示方法
- 8.2.4 應用實例
一、進程和進程的關系
■程序
- 保存在硬盤、光盤等介質中的可執行代碼和數據
- 文件中靜態保存的代碼
■進程
- 在CPU及內存中運行的程序代碼
- 動態執行的代碼
- 父、子進程
- 每個程序可以創建一個或多個進程
二、查看進程信息——ps
■ps命令
- 查看靜態的進程統計信息
2.1 方法一:ps aux
方法一:ps aux a:顯示終端上的所有進程,包括其它用戶的進程。 u:表示列出進程的用戶。 x:顯示所有終端的進程。| USER | 進程的用戶。 |
| PID | 進程的ID。 |
| %CPU | 進程占用的CPU百分比。 |
| %MEM | 占用內存的百分比。 |
| VSZ | 該進程使用的虛擬內存量(KB)。 |
| RSS | 該進程占用的物理內存量(KB)。 |
| TTY | 啟動進程的終端名。不是從終端啟動的進程則顯示為 ? |
| STAT | 該行程的狀態 (D:不可中斷的休眠狀態;R:正在運行狀態;S:處于休眠狀態,可被喚醒;T:停止狀態,可能是在后臺暫停或進程處于跟蹤調試狀態;Z:僵尸進程,進程已經中止,但是部分程序還在內存中) |
| START | 該進程被觸發啟動時間。 |
| TIME | 該進程實際使用CPU運行的時間。 |
| COMMAND | 進程的啟動命令。 |
2.2 方法二:ps -elf
方法二:ps -elf -e:顯示系統內的所有進程信息。 -l:使用長格式顯示進程信息。 -f:使用完整的格式顯示進程信息。| F | 內核分配給進程的系統標記。 |
| S | 進程的狀態。 |
| UID | 啟動這些進程的用戶。 |
| PID | 進程的進程ID。 |
| PPID | 父進程的進程號(如果該進程是由另一個進程啟動的)。 |
| C | 進程生命周期中的CPU利用率。 |
| PRI | 進程的優先級(越大的數字代表越低的優先級)。 |
| NI | 謙讓度值用來參與決定優先級。 |
| ADDR | 進程的內存地址。 |
| SZ | 假如進程被換出,所需交換空間的大致大小。 |
| WCHAN | 若該進程在睡眠,則顯示睡眠中的系統函數名。 |
| STIME | 進程啟動時的系統時間。 |
| TTY | 進程啟動時的終端設備。 |
| TIME | 運行進程需要的累計CPU時間。 |
| CMD | 進程的啟動命令。 |
僵尸進程:一個進程結束了,但是如果該進程的父進程已經先結束了,那么該進程就不會變成僵尸進程,因為每個進程結束的時候,系統都會掃描當前系統中所運行的所有進程,看有沒有哪個進程是剛剛結束的這個進程的子進程,如果是的話,就由Init來接管它,成為它的父進程,子進程退出后init會回收其占用的相關資源。
但是當子進程比父進程先結束,而父進程又沒有回收子進程,釋放子進程占用的資源,此時子進程將成為一個僵尸進程。
三、查看進程信息——top
3.1 top命令
- 查看動態的進程排名信息
3.2 top常用命令
| P 鍵 | 根據CPU使用百分比大小進行排序 |
| M 鍵 | 根據駐留內存大小進行排序 |
| N 鍵 | 根據啟動時間進行排序 |
| c 鍵 | 切換顯示命令名稱和完整命令行 |
| h 鍵 | 可以獲得 top程序的在線幫助信息 |
| k 鍵 | 根據提示輸入指定進程的 PID 號并按 Enter 鍵終止對應的進程 |
| q 鍵 | 退出 top 程序 |
| 數字1 鍵 | 顯示CPU個數和狀態 |
- 第一行是任務隊列信息
21:22:36 : 系統時間
up 42 min : 系統已運行時長
4 user :當前登錄用戶數
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:已用內存
buff/cache:物理內存和交換內存的緩沖區總和 - 第五行為交換空間的信息
total:總交換空間
free :空閑交換空間
used:已用交換空間
avail Mem:可用物理空間
進程信息區各列解釋
| PID | 進程id |
| USER | 進程所有者的用戶名 |
| PR | 優先級 |
| NI | 謙讓度值。負值表示高優先級,正值表示低優先級 |
| VIRT | 進程使用的虛擬內存總量,單位kb |
| RES | 進程使用的物理內存大小,單位kb |
| SHR | 共享內存大小,單位kb |
| S | 進程狀態 |
| %CPU | 上次更新到現在的CPU時間占用百分比 |
| %MEM | 進程使用的物理內存百分比 |
| TIME+ | 進程使用的CPU時間總計,單位1/100秒 |
| COMMAND | 命令名/命令行 |
四、查看進程信息——pgrep
■pgrep命令
- gprep根據特定條件查詢進程PID信息
這邊我們在1 centos7-1中打開top進程
pgrep -l
這邊在2 centos7-1中用pgrep查看進程
pgrep -l -U 指定用戶
這里我們在1 centos7-1切換到用戶張三打開top進程
這邊在2 centos7-1中用pgrep -l -U查看進程
五、查看進程樹——pstree
pstree以樹形結構列出進程信息 pstree -aup -a 顯示完整信息 -u 列出對應用戶名 -p 列出對應PID號六、進程的啟動方式
6.1 手動啟動
- 前臺啟動:用戶輸入命令,直接執行程序
- 后臺啟動:在命令行尾加入“&”符號
這邊我在命令后面加了&可以看到可以把操作放在后臺去執行
6.2 調度啟動
- 使用at命令,設置一次性計劃任務
- 使用crotab命令,設置周期性計劃任務
6.3 進程的前后臺調度
| Ctrl+Z組合鍵 | 將當前進程掛起,即調入后臺并停止執行 |
| jobs命令 | 查看處于后臺的任務列表 jobs -l(加上-l顯示進程號,某些命令需要進程號) |
| fg命令 | 將后臺進程恢復到前臺運行,可指定任務序號 |
演示:Ctrl+Z組合鍵
這邊我們創建一個abc文件進入后Ctrl+Z可以看到程序被掛起了
演示:jobs -l查看處于后臺的任務列表
演示:fg 1 將后臺進程恢復到前臺運行
可以看到原來掛起的程序恢復了
七、終止進程的運行
7.1 ctrl+c組合鍵
- 中斷正在執行的命令
7.2 kill、killall命令
- kill用于終止指定PID號的進程
- killall用于終止指定名稱相關的所有進程
- -9選項用于強制終止
演示:kill -9 加上PID號
演示:killall -9 加上指定名稱
7.3 pkill命令
- 根據特定條件終止相應的進程
演示:
這是我們殺掉了指定用戶zhangsan的進程
我們看一下另一個窗口看一下用戶張三的狀態,可以看到進程被干掉了
八、計劃任務管理
8.1 一次性計劃任務——at
■at命令
- 一次性計劃任務
演示:創建一個一次性任務任務為:2021年12月12日12:12分重啟
atq:查看未執行的任務列表
atrm 1:刪除序號為1的任務
8.2 計劃任務管理——crontab
■crontab命令
- 概念:按照預先設置的時間周期(分、時、日、月、周)重復執行用戶指定的命令操作
- 屬于周期性計劃任務
- 主要配置文件
全局配置文件,位于文件:/etc/crontab
系統默認的設置,位于目錄:/etc/cron.*/
用戶定義的設置,位于文件:/var/spool/cron/用戶名
8.2.1 管理crontab計劃任務
編輯計劃任務:crontab -e [-u 用戶名] # -u默認的是當前用戶 查看計劃任務:crontab -l [-u 用戶名] 刪除計劃任務:crontab -r [-u 用戶名] 方法二: echo ‘30 7 * * 6 /usr/bin/systemctl httpd restart’ >> /var/spool/cron/root8.2.2 crontab任務配置的格式
| 取值范圍 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 執行的命令或腳本 |
注:周的數字為0或7時,都代表“星期天”的意思
8.2.3 時間數值的特殊表示方法
* 表示該范圍內的任意時間 , 表示間隔的多個不連續時間點 - 表示一個連續的時間范圍 / 表示間隔的時間頻率8.2.4 應用實例
0 17 * * 1-5 周一到周五每天17點 30 8 * * 1,3,5 周一,周三,周五8.30 0 8-18/2 * * * 8點到18點每兩小時 0 * */3 * * 每三天 1.每分鐘定時執行一次規則: 每1分鐘執行: */1 * * * *或者* * * * * 每5分鐘執行: */5 * * * *2.每小時定時執行一次規則: 每小時執行: 0 * * * *或者0 */1 * * * 每天上午7點執行:0 7 * * * 每天上午7點10分執行:10 7 * * *3.每天定時執行一次規則: 每天執行 0 0 * * *4.每周定時執行一次規則: 每周執行 0 0 * * 05.每月定時執行一次規則: 每月執行 0 0 1 * *6.每年定時執行一次規則: 每年執行 0 0 1 1 *其他例子: 5 * * * * ls 指定每小時的第5分鐘執行一次ls命令 30 5 * * * ls 指定每天的 5:30 執行ls命令 30 7 8 * * ls 指定每月8號的7:30分執行ls命令 30 5 8 6 * ls 指定每年的6月8日5:30執行ls命令 30 6 * * 0 ls 指定每星期日的6:30執行ls命令[注:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。] 30 3 10,20 * * ls 每月10號及20號的3:30執行ls命令[注:“,”用來連接多個不連續的時段] 25 8-11 * * * ls 每天8-11點的第25分鐘執行ls命令[注:“-”用來連接連續的時段] */15 * * * * ls 每15分鐘執行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執行ls命令 ] 30 6 */10 * * ls 每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls命令。 ]方法二: echo ‘30 7 * * 6 /usr/bin/systemctl httpd restart’ >> /var/spool/cron/root總結
以上是生活随笔為你收集整理的Linux进程和计划任务管理(详细图例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux引导过程与服务控制、排障演示及
- 下一篇: DDR4内存超频:三大危害揭秘