Linux進程和計劃任務(wù)管理方式
一、進程
1.程序和進程的關(guān)系
程序:
- 保存在硬盤、光盤等介質(zhì)中的可執(zhí)行代碼和數(shù)據(jù)
- 文件中靜態(tài)保存的代碼
進程:
- 在CPU及內(nèi)存中運行的程序代碼
- 動態(tài)執(zhí)行的代碼
- 父、子進程
- 每個程序可以創(chuàng)建一個或多個進程
2.查看進程信息
2.1 ps 命令 - 查看進程信息
方法一:
ps aux
選項 | 解釋 |
---|---|
a | 顯示終端上所有的進程,包括其他用戶的進程 |
u | 表示列出進程的用戶 |
x | 顯示所有終端的進程 |
[root@wzx ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.1 193644 6704 ? Ss 23:17 0:01 /usr/lib/systemd/sy root 2 0.0 0.0 0 0 ? S 23:17 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 23:17 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 23:17 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 23:17 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 23:17 0:00 [rcu_bh] ......
字段 | 解釋 |
---|---|
USER | 進程的用戶 |
PID | 進程PID號 |
%CPU | 進程占用的CPU百分比 |
%MEM | 進程占用內(nèi)存的百分比 |
VSZ | 進程使用的虛擬內(nèi)存量(KB) |
RSS | 進程使用的物理內(nèi)存量(KB) |
TTY | 啟動進程的終端名。不是從終端啟動的進程則顯示為"?" |
STAT | 進程的狀態(tài)(詳見下表) |
START | 進程被觸發(fā)啟動的時間點 |
TIME | 進程實際使用CPU運行的時間 |
COMMAND | 進程的啟動命令 |
字符 | 解釋 |
---|---|
D | 不可被中斷的休眠狀態(tài) |
R | 正在運行 |
S | 處于休眠狀態(tài),可被喚醒 |
T | 停止?fàn)顟B(tài),可能是后臺暫?;蜻M程處于跟蹤調(diào)試狀態(tài) |
Z | 僵尸進程,進程已被中止,但部分程序還在內(nèi)存當(dāng)中 |
方法二:
ps -elf
選項 | 解釋 |
---|---|
-e | 顯示系統(tǒng)內(nèi)的所有進程信息 |
-l | 使用長格式顯示進程信息 |
-f | 使用完整的格式顯示進程信息 |
[root@wzx ~]# ps -elf F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 48411 ep_pol 23:17 ? 00:00:01 /usr/lib 1 S root 2 0 0 80 0 - 0 kthrea 23:17 ? 00:00:00 [kthread 1 S root 3 2 0 80 0 - 0 smpboo 23:17 ? 00:00:00 [ksoftir 1 S root 5 2 0 60 -20 - 0 worker 23:17 ? 00:00:00 [kworker 1 S root 7 2 0 -40 - - 0 smpboo 23:17 ? 00:00:00 [migrati 1 S root 8 2 0 80 0 - 0 rcu_gp 23:17 ? 00:00:00 [rcu_bh] ......
字段 | 解釋 |
---|---|
F | 內(nèi)核分配給進程的系統(tǒng)標(biāo)記 |
S | 進程的狀態(tài) |
UID | 啟動這些進程的用戶 |
PID | 進程的PID號 |
PPID | 父進程的PID號 |
C | 進程生命周期中的CPU利用率 |
PRI | 進程的優(yōu)先級(數(shù)字越大優(yōu)先級越低) |
NI | 謙讓度值來參與決定優(yōu)先級 |
ARRD | 進程的內(nèi)存地址 |
SZ | 假如進程被換出,所需交換空間的大致大小 |
WCHAN | 若進程在睡眠,則顯示睡眠中的系統(tǒng)函數(shù)名 |
STIM | 進程啟動時的系統(tǒng)時間 |
TTY | 進程啟動時的終端設(shè)備 |
TIME | 運行進程需要的累計CPU時間 |
CMD | 進程的啟動命令 |
2.2 top 命令 - 查看進程的動態(tài)信息
top
常用指令 | 解釋 |
---|---|
"c"鍵 | 根據(jù)CPU使用百分比大小進行排序 |
"q"鍵 | 退出top程序 |
"1"鍵 | 顯示CPU的個數(shù)和狀態(tài) |
[root@wzx ~]# top top - 23:53:16 up 36 min, 1 user, load average: 0.00, 0.01, 0.04 Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3861508 total, 3511756 free, 121140 used, 228612 buff/cache KiB Swap: 4194300 total, 4194300 free, 0 used. 3476840 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8827 root 20 0 300936 6348 4988 S 0.7 0.2 0:01.88 vmtoolsd 1 root 20 0 193644 6704 4136 S 0.0 0.2 0:01.17 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.23 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain ......
第一行字段解釋
- 為任務(wù)隊列信息
top - 23:53:16 up 36 min, 1 user, load average: 0.00, 0.01, 0.04
字段 | 解釋 |
---|---|
23:53:16 | 系統(tǒng)時間 |
up 36min | 系統(tǒng)已運行時長 |
1 user | 當(dāng)前登錄用戶數(shù) |
load average | 系統(tǒng)負(fù)載(單位時間內(nèi)系統(tǒng)處理的任務(wù)數(shù)) |
0.00 | 前1分鐘到現(xiàn)在的平均值 |
0.01 | 前5分鐘到現(xiàn)在的平均值 |
0.04 | 前15分鐘到現(xiàn)在的平均值 |
第二行字段解釋
- 為進程信息
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie
字段 | 解釋 |
---|---|
Tasks | 總進程數(shù) |
running | 正在運行的進程數(shù) |
sleeping | 休眠的進程數(shù) |
stopped | 中止的進程數(shù) |
zombie | 僵尸進程數(shù) |
第三行字段解釋
- 為CPU信息
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
字段 | 解釋 |
---|---|
us | 用戶占用 |
sy | 內(nèi)核占用 |
ni | 優(yōu)先級調(diào)度占用 |
id | 空閑CPU |
wa | I/O等待占用 |
hi | 硬件中斷占用 |
si | 軟件中斷占用 |
st | 虛擬化占用 |
第四行字段解釋
- 為內(nèi)存信息
KiB Mem : 3861508 total, 3511756 free, 121140 used, 228612 buff/cache
字段 | 解釋 |
---|---|
total | 總內(nèi)存空間 |
free | 空閑內(nèi)存 |
used | 已用內(nèi)存 |
buff/cache | 物理內(nèi)存和交換內(nèi)存的緩沖區(qū)總和 |
第五行字段解釋
- 為交換空間的信息
KiB Swap: 4194300 total, 4194300 free, 0 used. 3476840 avail Mem
字段 | 解釋 |
---|---|
total | 總交換空間 |
free | 空閑交換空間 |
used | 已用交換空間 |
avail Mem | 可用物理空間 |
2.3 pgrep 命令 - 查找進程信息
- pgrep是一個用于查找進程ID(PID)的命令行工具,它可以根據(jù)進程的名字或其他屬性來查找對應(yīng)的PID。
- pgrep命令通常與其他命令一起使用,比如kill命令
pgrep "選項" "進程名"
選項 | 解釋 |
---|---|
-l | 顯示進程名(缺省時只輸出PID號) |
-U | 指定特定用戶 |
-t | 指定終端 |
-a | 顯示進程名和PID |
-c | 僅顯示匹配進程的數(shù)量,而不顯示進程名和PID |
-f | 匹配進程名及其參數(shù) |
例:
[root@wzx ~]# pgrep -l "log" 4441 xfs-log/dm-0 7561 xfs-log/sda1 8831 systemd-logind 9151 rsyslogd
2.4 jobs 命令 - 查看后臺進程狀態(tài)信息
- jobs命令可以用于列出這些后臺進程的狀態(tài)信息
jobs "選項"
選項 | 解釋 |
---|---|
-l | 顯示所有后臺進程的PID |
-p | 顯示所有后臺進程的進程組PID |
-n | 僅顯示最近的后臺進程 |
-r | 僅顯示正在運行的后臺進程 |
-s | 僅顯示已停止的后臺進程 |
2.5 pstree 命令
pstree -aup
選項 | 解釋 |
---|---|
-a | 顯示完整信息 |
-u | 列出對應(yīng)用戶名 |
-p | 列出對應(yīng)PID號 |
3.進程的啟動方式
手工啟動:
- 前臺啟動:用戶輸入命令,直接執(zhí)行程序
- 后臺啟動:在命令尾行加入"&"符號
調(diào)度啟動:
- 使用at命令,設(shè)置一次性計劃任務(wù)
- 使用crontab命令,設(shè)置周期性計劃任務(wù)
4.進程的前后臺調(diào)度
Ctrl+Z組合鍵
- 將當(dāng)前進程掛起,即調(diào)入后臺并停止執(zhí)行
jobs命令
jobs -l
- 查看處于后臺的任務(wù)列表
fg命令
- 將后臺進程恢復(fù)到前臺運行,可指定任務(wù)序號
- fg "任務(wù)序號"
5.中止進程的運行
5.1 Ctrl+C組合鍵
- 中斷正在執(zhí)行的命令
5.2 kill、killall 命令
- kill用于終止指定PID號的進程
- kiiall用于終止指定名稱相關(guān)的所有進程
- "-9"選項用于強制中止
kill -9 19078
5.3 pkill 命令
- 根據(jù)特定條件終止相應(yīng)的進程
常用選項 | 解釋 |
---|---|
-U | 根據(jù)進程所屬的用戶名終止相應(yīng)進程 |
-t | 根據(jù)進程所在的終端終止相應(yīng)進程 |
例:
pkill -9 -U "zhangsan"
二、計劃任務(wù)管理
1. at 命令 - 一次性計劃任務(wù)
- 一次性計劃任務(wù)
at "HH:MM" "yyyy-mm-dd"
[root@wzx ~]# at 01:00 2024-8-10 at> prgep -U root | wc -l > /tmp/ps.root at> <EOT> #按Ctrl+D組合鍵提交任務(wù) job 1 at at Sat Aug 10 01:00:00 2024 [root@wzx ~]# cat /tmp/ps.root 202
2. crontab 命令 - 周期性計劃任務(wù)
2.1 crontab 命令
- 按預(yù)先設(shè)置的時間周期(分鐘、小時、天、月、周)重復(fù)執(zhí)行用戶指定的命令操作
- 屬于周期性計劃任務(wù)
- 主要設(shè)置文件:
全局配置文件,位于:/etc/crontab
系統(tǒng)默認(rèn)的設(shè)置,位于/etc/cron.*/
用戶定義的設(shè)置,位于/var/spool/cron/用戶名
2.2 管理crontab計劃任務(wù)
- 編輯計劃任務(wù):
crontab -e -u "用戶名"
- 查看計劃任務(wù):
crontab -l -u "用戶名"
- 刪除計劃任務(wù):
crontab -r -u "用戶名"
2.3 crontab任務(wù)配置的格式
"分鐘" "小時" "日期" "月份" "星期幾" "命令或腳本文件"
字段 | 取值范圍(整數(shù)) |
---|---|
分鐘 | 0~59 |
小時 | 0~23 |
日期 | 1~31 |
月份 | 1~12 |
星期 | 0~7(0或7代表星期日) |
2.3 crontab任務(wù)配置的格式
- 時間數(shù)值的特殊表示方法
表示方法 | 解釋 |
---|---|
* | 表示該范圍內(nèi)的任意時間 |
, | 表示間隔的多個不連續(xù)時間點 |
- | 表示一個連續(xù)的時間范圍 |
/ | 指定間隔的時間頻率 |
- 示例
0 17 * * 1-5 #周一到周五每天17:00 30 8 * * 1,3,5 #每周一、三、五的8:30分 0 8-18/2 * * * #8點到18點之間每2小時 0 * */3 * * #每三天
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
linux命令行報錯bash command not found問題及解決
這篇文章主要介紹了linux命令行報錯bash command not found問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08Apache下開啟SSI配置使html支持include包含的方法
這篇文章主要介紹了Apache下開啟SSI配置使html支持include包含的方法,需要的朋友可以參考下2016-10-10Linux上查看用戶創(chuàng)建日期的幾種方法總結(jié)
在Linux系統(tǒng)中,如何找到用戶創(chuàng)建的時間呢?下面這篇文章就來給大家介紹了關(guān)于在Linux上如何查看用戶創(chuàng)建日期的幾種方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05Linux下實現(xiàn)定時器Timer的幾種方法總結(jié)
下面小編就為大家?guī)硪黄狶inux下實現(xiàn)定時器Timer的幾種方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10在Linux開發(fā)板中使用.NET實現(xiàn)音頻錄制與播放功能
本文將以Linux開發(fā)板為基礎(chǔ),使用ALSA音頻框架和C#語言,演示如何實現(xiàn)基礎(chǔ)的音頻錄制與播放功能,文中通過代碼示例講解的非常詳細,需要的朋友可以參考下2025-03-03Linux修改主機名(hostname)的兩種方法(親測可用)
要想在虛擬機的 Linux 系統(tǒng)內(nèi)部改變主機名(hostname),需要通過系統(tǒng)的配置來修改,在大多數(shù)基于 Red Hat 的 Linux 發(fā)行版(比如 CentOS、Fedora)中,本文小編給大家介紹了;兩種修改主機名的方法,感興趣的小伙伴跟著小編一起來看看吧2023-11-11