Linux進(jìn)程管理與計(jì)劃任務(wù)詳解
一、程序與進(jìn)程的概念區(qū)分
- 程序:存儲(chǔ)在硬盤等外部存儲(chǔ)介質(zhì)中的可執(zhí)行機(jī)器代碼及數(shù)據(jù)的靜態(tài)集合,是指令的靜態(tài)形式。
- 進(jìn)程:程序被加載到內(nèi)存中運(yùn)行時(shí),在 CPU 和內(nèi)存中處于動(dòng)態(tài)執(zhí)行狀態(tài)的實(shí)例,是指令的動(dòng)態(tài)執(zhí)行過(guò)程。
- 關(guān)系:一個(gè)程序啟動(dòng)后可創(chuàng)建一個(gè)或多個(gè)進(jìn)程(例如瀏覽器程序可打開(kāi)多個(gè)標(biāo)簽頁(yè),每個(gè)標(biāo)簽頁(yè)對(duì)應(yīng)一個(gè)進(jìn)程)。
二、進(jìn)程查看工具及參數(shù)解析
1.ps:查看靜態(tài)進(jìn)程信息
用于顯示系統(tǒng)在某一時(shí)刻的進(jìn)程快照,常用參數(shù)組合及功能如下:
| 參數(shù) | 含義 |
|---|---|
| -a | 顯示當(dāng)前終端下所有用戶的進(jìn)程,與-x結(jié)合可顯示系統(tǒng)所有進(jìn)程 |
| -u | 以用戶為中心的格式輸出進(jìn)程信息(含用戶、CPU、內(nèi)存占用等) |
| -x | 顯示當(dāng)前用戶所有終端的進(jìn)程(包括無(wú)終端關(guān)聯(lián)的進(jìn)程) |
| -e | 顯示系統(tǒng)內(nèi)所有進(jìn)程 |
| -l | 以長(zhǎng)格式顯示進(jìn)程信息(含優(yōu)先級(jí)、狀態(tài)等詳細(xì)字段) |
| -f | 以完整格式顯示進(jìn)程信息(含父進(jìn)程 ID、啟動(dòng)時(shí)間等) |
輸出字段說(shuō)明:
USER:?jiǎn)?dòng)進(jìn)程的用戶賬號(hào)PID:進(jìn)程的唯一數(shù)字 ID(系統(tǒng)內(nèi)唯一)%CPU:進(jìn)程占用 CPU 的百分比%MEM:進(jìn)程占用內(nèi)存的百分比VSZ:進(jìn)程占用的虛擬內(nèi)存大?。▎挝唬篕B)RSS:進(jìn)程占用的物理內(nèi)存大?。▎挝唬篕B)TTY:進(jìn)程運(yùn)行的終端(?表示無(wú)需終端或終端未知)STAT:進(jìn)程狀態(tài)(R運(yùn)行、S休眠、Z僵死、<高優(yōu)先級(jí)、N低優(yōu)先級(jí)等)START:進(jìn)程啟動(dòng)時(shí)間TIME:進(jìn)程累計(jì)占用 CPU 的時(shí)間COMMAND:?jiǎn)?dòng)進(jìn)程的命令名稱
2.top:實(shí)時(shí)監(jiān)控動(dòng)態(tài)進(jìn)程
實(shí)時(shí)刷新顯示進(jìn)程狀態(tài)(默認(rèn) 3 秒刷新一次,按q退出),核心信息包括:
(1)系統(tǒng)整體狀態(tài)
load average:1 分鐘、5 分鐘、15 分鐘內(nèi)的 CPU 平均負(fù)載(若 5/15 分鐘負(fù)載超過(guò) CPU 核心數(shù)的 2 倍,視為高負(fù)載)Tasks:進(jìn)程總數(shù)及狀態(tài)分布(running運(yùn)行中、sleeping休眠、stopped停止、zombie僵死)%cpu:CPU 占用細(xì)分(us用戶進(jìn)程、sy系統(tǒng)進(jìn)程、ni優(yōu)先級(jí)調(diào)整、id空閑、waI/O 等待等)Mem:物理內(nèi)存使用情況Swap:虛擬內(nèi)存(交換空間)使用情況
(2)進(jìn)程列表字段
PR:進(jìn)程優(yōu)先級(jí)(數(shù)值越小優(yōu)先級(jí)越高)NI:進(jìn)程 nice 值(范圍 - 20~19,值越小優(yōu)先級(jí)越高)VIRT:進(jìn)程占用的虛擬內(nèi)存總量(KB)RES:進(jìn)程占用的物理內(nèi)存總量(KB)SHR:進(jìn)程與其他進(jìn)程共享的內(nèi)存總量(KB)S:進(jìn)程狀態(tài)(D不可中斷休眠、R運(yùn)行、S休眠、T停止、Z僵死)TIME+:進(jìn)程啟動(dòng)至今的 CPU 占用時(shí)間(精確到 0.01 秒)
3. 其他進(jìn)程查看工具
pgrep -l 進(jìn)程名:查詢指定進(jìn)程的名稱及 PID(如pgrep -l systemd)
pstree:以樹(shù)形結(jié)構(gòu)展示進(jìn)程間的父子關(guān)系
-p:同時(shí)顯示進(jìn)程 PID-u:顯示進(jìn)程所屬用戶-a:顯示完整命令行
三、進(jìn)程控制操作
1. 進(jìn)程的啟動(dòng)方式
- 前臺(tái)啟動(dòng):直接執(zhí)行命令(如
ls),命令行被占用直至進(jìn)程結(jié)束 - 后臺(tái)啟動(dòng):命令后加
&(如route &),進(jìn)程在后臺(tái)運(yùn)行,不阻塞當(dāng)前終端
2. 進(jìn)程的掛起與恢復(fù)
- 掛起進(jìn)程:前臺(tái)進(jìn)程運(yùn)行時(shí)按
Ctrl+Z,進(jìn)程被暫停并轉(zhuǎn)入后臺(tái) - 查看后臺(tái)進(jìn)程:
jobs -l(顯示進(jìn)程 ID、狀態(tài)及命令)
恢復(fù)后臺(tái)進(jìn)程:
bg 進(jìn)程ID:后臺(tái)恢復(fù)運(yùn)行(如bg 1)fg 進(jìn)程ID:前臺(tái)恢復(fù)運(yùn)行(如fg 1)
3. 進(jìn)程的終止
kill 進(jìn)程ID:正常終止指定 PID 的進(jìn)程(如kill 1234)kill -9 進(jìn)程ID:強(qiáng)制終止進(jìn)程(用于常規(guī)kill無(wú)效時(shí),如kill -9 1234)killall 進(jìn)程名:終止所有同名進(jìn)程(如killall firefox),-9參數(shù)可強(qiáng)制終止
pstree:按條件終止進(jìn)程
-U 用戶名:終止指定用戶的進(jìn)程(如pkill -U natasha)-t 終端:終止指定終端的進(jìn)程(如pkill -t pts/0)
四、計(jì)劃任務(wù)配置
1.at:一次性計(jì)劃任務(wù)
用于配置在指定時(shí)間執(zhí)行一次的任務(wù):
- 創(chuàng)建任務(wù):
at 23:30 2024-12-31 # 指定執(zhí)行時(shí)間 at> ls / > /tmp/result.txt # 輸入任務(wù)命令 按Ctrl+D保存退出
管理任務(wù):
atq:查看所有at任務(wù)at -c 任務(wù)號(hào):查看任務(wù)詳情atrm 任務(wù)號(hào):刪除任務(wù)
2.crontab:周期性計(jì)劃任務(wù)
用于配置重復(fù)執(zhí)行的任務(wù),核心文件包括/etc/crontab(系統(tǒng)任務(wù))和/var/spool/cron/(用戶任務(wù))。
(1)時(shí)間格式
遵循 “分 時(shí) 日 月 周” 的格式,支持特殊符號(hào):
*:匹配所有值(如 “分” 位為*表示每分鐘)*/n:每隔 n 單位(如*/10表示每 10 分鐘)a-b:范圍(如8-17表示 8 到 17 點(diǎn))a,b:多個(gè)值(如1,3,5表示周一、三、五)
(2)常用命令
crontab -e:編輯當(dāng)前用戶的任務(wù)crontab -u 用戶名 -e:編輯指定用戶的任務(wù)crontab -l:查看任務(wù)列表crontab -r:刪除所有任務(wù)
例:
每月 1-5 日 14:00-17:00,每 10 分鐘執(zhí)行/bin/echo “I Love Galaxy”:
crontab -e # 加入:*/10 14-17 1-5 * * /bin/echo "I Love Galaxy" systemctl restart crond
周一至周五 8:00-21:00,每 2 分鐘將當(dāng)前時(shí)間追加到/home/galaxy/my_first_cron_job.txt:
crontab -e # 加入:*/2 8-21 * * 1-5 date >> /home/galaxy/my_first_cron_job.txt systemctl restart crond
總結(jié)
進(jìn)程管理通過(guò)ps、top等工具監(jiān)控系統(tǒng)運(yùn)行狀態(tài),結(jié)合kill、bg等命令控制進(jìn)程生命周期;計(jì)劃任務(wù)通過(guò)at和crontab實(shí)現(xiàn)任務(wù)的自動(dòng)執(zhí)行,是系統(tǒng)自動(dòng)化運(yùn)維的核心工具。掌握這些操作可有效提升系統(tǒng)管理效率。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux中執(zhí)行定時(shí)任務(wù)的方法小結(jié)
有時(shí)候要在Linux系統(tǒng)上定時(shí)執(zhí)行腳本,Linux提供定時(shí)任務(wù)命令可以執(zhí)行,這篇文章小編就來(lái)和大家聊聊都有哪些方法可以實(shí)現(xiàn)定時(shí)任務(wù)吧2024-12-12
通過(guò)配置.htaccess文件實(shí)現(xiàn)子目錄綁定二級(jí)域名的方法
.htaccess文件 子目錄綁定二級(jí)域名2010-02-02
利用Apache?Common將java對(duì)象池化的問(wèn)題
對(duì)象被創(chuàng)建后,使用完畢不是立即銷毀回收對(duì)象,而是將對(duì)象放到一個(gè)容器保存起來(lái),下次使用的時(shí)候不用創(chuàng)建對(duì)象,而是從容器中直接獲取,這篇文章主要介紹了利用Apache?Common將java對(duì)象“池化”,需要的朋友可以參考下2022-06-06
arm linux利用alsa驅(qū)動(dòng)并使用usb音頻設(shè)備
這篇文章主要介紹了arm linux利用alsa驅(qū)動(dòng)并使用usb音頻設(shè)備的相關(guān)資料,需要的朋友可以參考下2017-10-10
國(guó)產(chǎn)操作類linux系統(tǒng)vnc服務(wù)方式
該文章介紹了如何在銀河麒麟v10系統(tǒng)上配置和使用VNC(Virtual Network Console)虛擬網(wǎng)絡(luò)控制臺(tái)協(xié)議進(jìn)行遠(yuǎn)程圖形化控制,包括查看可用軟件組、安裝VNC服務(wù)、配置VNC服務(wù)、啟動(dòng)和停止VNC服務(wù)、VNC服務(wù)參數(shù)說(shuō)明以及VNC服務(wù)其他說(shuō)明2026-01-01
Linux中Curl參數(shù)詳解實(shí)踐應(yīng)用
在現(xiàn)代網(wǎng)絡(luò)開(kāi)發(fā)和運(yùn)維工作中,curl 命令是一個(gè)不可或缺的工具,它是一個(gè)利用 URL 語(yǔ)法在命令行下工作的文件傳輸工具,支持多種協(xié)議,如 HTTP、HTTPS、FTP 等,本文給大家介紹了Linux中Curl參數(shù)詳解實(shí)踐應(yīng)用,需要的朋友可以參考下2025-01-01

