Linux——進程管理和計劃任務管理

文章目錄

  • 前言
  • 一、程序與進程的關系
    • 1.1 程序與進程的定義
    • 1.2 父進程與子進程
  • 二、查看進程信息
    • 2.1 ps 命令(重點)
    • 2.2 動態查看進程信息top命令(重點)
    • 2.3 pgrep命令查詢進程信息
    • 2.4 pstree命令以樹形結構列出進程信息
  • 三、進程的啟動方式
    • 3.1 手工啟動進程
    • 3.2 調度啟動
  • 四、進程的前后臺調度
    • 4.1 Ctrl+Z組合鍵
    • 4.2 jobs 命令
    • 4.3 fg 和 bg 命令
  • 五、終止進程的運行
    • 5.1 Ctrl+C組合鍵
    • 5.2 kill 命令
    • 5.3 killall 命令
    • 5.4 pkill 命令
  • 六、計劃任務管理
    • 6.1 一次性任務:at 命令
    • 6.2 周期性任務:cron 命令
    • 6.3 cron 服務管理
  • 總結

前言

進程管理是操作系統管理進程和資源的關鍵部分。在 Linux 中,進程是系統中所有任務的核心,進程管理命令主要用于查看、控制和調度系統中的進程。本文檔將詳細介紹 Linux 進程管理的相關概念、命令及實際應用案例,幫助用戶高效管理系統中的進程和計劃任務。

一、程序與進程的關系

1.1 程序與進程的定義

  • 程序:是存儲在硬盤上的可執行代碼,像一本書的內容,靜態存放在硬盤或其他存儲設備上。例如,你下載并安裝的一個應用程序(如 firefox)。
  • 進程:是程序在運行時的實例,像是一本書被人打開并閱讀時,它在你眼前執行的過程。每當你運行一個程序,操作系統會創建一個進程,分配內存和 CPU 時間來執行這個程序。

1.2 父進程與子進程

  • 父進程:操作系統中的核心進程,負責創建和管理子進程。類似于家庭中的家長角色,父進程為子進程分配系統資源(如內存和CPU時間片),并持續監控其運行狀態。典型的例子是Linux系統中的init進程(PID=1),它作為所有用戶進程的源頭。父進程通過調用fork()等系統調用來創建子進程,并可使用wait()等調用等待子進程結束。

  • 子進程:由父進程通過系統調用創建的獨立執行實體,擁有專屬的進程ID和地址空間。子進程會繼承父進程的環境變量、文件描述符等屬性,但運行后即實現完全獨立。通過exec()系列函數,子進程可以加載新程序并執行不同任務。例如在Web服務器架構中,主進程(父進程)會為每個客戶端請求生成獨立的子進程進行處理。子進程完成任務后,通過exit()系統調用終止運行,并向父進程返回狀態信息。


二、查看進程信息

2.1 ps 命令(重點)

ps(process status)命令用于查看系統中當前運行的進程。它顯示了與進程相關的信息,如進程 ID (PID)、用戶、CPU 和內存使用率等。

  • 常用選項
    • ps -aux:顯示所有進程,包括其他用戶的進程。
    • ps -ef:以標準格式顯示所有進程。
    • ps -aux | grep [進程名]:通過管道和 grep 命令過濾進程。
  • 輸出字段解釋
    • USER:進程所屬的用戶。
    • PID:進程 ID。
    • %CPU:進程占用的 CPU 百分比。
    • %MEM:進程占用的內存百分比。
    • VSZ:進程使用的虛擬內存(單位 KB)。
    • RSS:進程使用的物理內存(單位 KB)。
    • STAT:進程的狀態,常見狀態有:R(運行)、S(睡眠)、Z(僵尸)、T(停止)等。
    • START:進程的啟動時間。
    • TIME:進程占用的 CPU 時間。
    • COMMAND:啟動該進程的命令。
詳解
STAT:該進程的狀態(D:不可中斷的休眠狀態:R:正在運行狀態;S:處于休眠狀態,可被喚醒;T:停止狀態,可能是在后臺暫停或進程處于跟蹤調試狀態: Z:僵尸進程,進程已經中止,但是部分程序還在內存當中)
。
D:系統守護進程
T:調式、程序執行一般停止
R :該程序目前正在運作,或者是可被運作;
S :該程序目前正在睡眠當中 (可說是 idle 狀態啦!),但可被某些訊號(signal) 喚醒。
T :該程序目前正在偵測或者是停止了;
Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (疆尸) 程序的狀態D 不可中斷狀態.
它們含意如下::
<: 表示進程運行在高優先級上
N: 表示進程運行在低優先級上
L: 表示進程有頁面鎖定在內存中
s: 表示進程是控制進程
l: 表示進程是多線程的
+: 表示當前進程運行在前臺
D:系統守護進程

案例
執行完畢vim命令之后,查找 vim 進程,并顯示它的 CPU 和內存占用情況。

vim a.txt
ps -aux | grep vim

在這里插入圖片描述
/usr目錄歸檔到當前文件夾,查看該進程狀態

tar -zcvf usr.tar.gz /usr
ps -aux|grep /usr

在這里插入圖片描述


2.2 動態查看進程信息top命令(重點)

top 命令用于動態顯示 Linux 系統中運行的進程和資源使用情況,實時更新顯示。

  • 常用快捷鍵
    • P:按 CPU 使用率排序。
    • M:按內存使用量排序。
    • T:按時間排序。
    • 1:查看幾個cpu
    • q:退出 top。
  • 輸出解釋
    • PID:進程 ID。
    • USER:啟動該進程的用戶。
    • %CPU:進程占用的 CPU 百分比。
    • %MEM:進程占用的內存百分比。
    • TIME+:進程累計使用的 CPU 時間。
    • COMMAND:執行的命令。

案例1

top

啟動 top,查看實時的進程和系統資源占用情況。按 P 鍵查看 CPU 使用率排序,按 M 鍵查看內存使用情況排序。

在這里插入圖片描述
P 鍵查看 CPU 使用率排序

在這里插入圖片描述

M 鍵查看內存使用情況排序
在這里插入圖片描述

案例2:
安裝系統壓力測試工具stress

# 啟用 EPEL 倉庫
yum install -y epel-release
# 安裝 stress 工具
yum install -y stress
# 驗證安裝是否成功
stress --version

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

-c, --cpu N :指定 N 個進程,每個進程執行計算密集型的任務,通常是計算隨機數的平方根(消耗 CPU 資源)。
示例:

stress -c 4
top

啟動 4 個進程,消耗 CPU 資源。
在這里插入圖片描述

在這里插入圖片描述


2.3 pgrep命令查詢進程信息

pgrep命令用于根據名稱或其他條件查找進程。

常用的參數:

  • -l:選項可同時輸出對應的進程名以及PID
  • -U:選項查詢特定用戶的進程
  • -t:選項查詢在特定終端運行的進程
例1
pgrep -l "log"  # 匹配進程名中包含 log 的進程

在這里插入圖片描述

例2
pgrep -l -U simon
# 篩選屬于用戶simon的進程

在這里插入圖片描述

2.4 pstree命令以樹形結構列出進程信息

pstree 是一個用于顯示當前系統中進程樹結構的命令行工具。它以樹狀圖形式展示進程間的父子關系,便于直觀理解進程的層級關系。

pstree 命令默認情況下只顯示各進程的名稱,結合以下常用的參數使用:

  • -p:選項使用時可以同時列出對應的PID號
  • -u:選項可以列出對應的用戶名
  • -a:選項可以列出完整的命令信息
 執行如下的“pstree -aup”命令可以查看當前系統的進程樹,包括各進程對應的PID 號、用戶名、完整命令等信息。從輸出結果中可以看出,systemd 進程確實是 Linux 操作系統中所有進程的“始祖”例1
pstree -aup hmj

在這里插入圖片描述
在這里插入圖片描述

三、進程的啟動方式

3.1 手工啟動進程

由用戶手工輸入命令或者可執行程序的路徑,可以至少啟動一個進程。根據該進程是否 需要占用當前的命令終端,手工啟動又可以分為前臺啟動和后臺啟動。

進程在前臺運行:
(如執行ls -l命令)時,用戶必須等到該進程執行結束并退出以后才能繼續輸入其他命令,大多數命令操作在前臺啟動運行。進程在后臺運行時,用戶可以繼續在當前終端中輸入其他命令,而無須等待該進程結束,適用于運行耗時較長的操作。

? 啟動后臺進程需要使用&操作符,將&操作符放在要執行命令的最后面,進程啟動后會直接放入后臺運行,而不占用前臺的命令操作界面,方便用戶進行其他操作。例如,當使 用 cp 命令從光盤中制作鏡像文件時,由于需要復制的數據較多,耗時較長,因此可結合& 符號將復制操作放到后臺運行,以便用戶可以繼續執行其他命令操作

cp /dev/cdrom /opt/centos7.iso &

在這里插入圖片描述

在這里插入圖片描述

3.2 調度啟動

在服務器維護工作中,經常需要執行一些比較費時而且較占用資源的任務(如數據備份),這些任務更適合在相對空閑的時候(如夜間)進行。這時就需要用戶事先進行調度安排,指定任務運行的時間,當系統到達設定時間時會自動啟動并完成指定的任務。調度啟動的計劃任務進程均在后臺運行,不會占用用戶的命令終端。

進程的調度啟動可以通過 atcrontab 命令進行設置,其中 at 命令用于設置一次性(如12:15 時重啟網絡服務)計劃任務,crontab 命令用于設置周期性運行(如每周五 17:30 備份數據庫)的計劃任務。

四、進程的前后臺調度

4.1 Ctrl+Z組合鍵

當Linux操作系統中的命令正在前臺執行時(運行尚未結束),按Ctrl+Z組合鍵可以將當前進程掛起(調入后臺并停止執行),這種操作在需要暫停當前進程并進行其他操作時特別有用。例如,打包usr并且調入后臺 ,可以按 Ctrl+Z 組合鍵將該下載任務調入后臺并暫停執行

tar zcf usr.tar.gz /usr
Ctrl+Z
jobs -l  # 查看所有后臺進程

在這里插入圖片描述

4.2 jobs 命令

jobs 命令用于查看當前會話中運行的后臺任務。

常用選項

  • jobs -l:列出當前所有后臺任務及其進程 ID。

在這里插入圖片描述

案例

將后臺的進程恢復運行
使用 bg(BackGround,后臺)命令,可以將后臺中暫停執行(如按 Ctrl+Z 組合鍵掛起)的任務恢復運行,繼續在后臺執行操作;
使用 fg 命令(ForeGround,前臺),可以將后臺任務重新恢復到前臺運行。
除非后臺中的任務只有一個,否則 bgfg 命令都需要指定后臺進程的任務編號作
為參數。例如,執行如下的“fg 1”命令可以將之前掛起至后臺的 wget 進程重新調入前臺執行。
[root@localhost ~]# jobs
[1]-   Stopped                 cp /dev/cdrom mycd.iso 
[2]+  Stopped                 top
[root@localhost ~]# fg 1

查看當前終端會話中的后臺任務。

4.3 fg 和 bg 命令

  • fg:將后臺任務帶回前臺執行。
  • bg:將暫停的任務放回后臺繼續執行。

案例

fg %1
將后臺任務編號為 1 的任務帶回前臺。

在這里插入圖片描述

bg %2
將后臺任務編號為 2 的任務恢復在后臺運行。

在這里插入圖片描述

五、終止進程的運行

5.1 Ctrl+C組合鍵

? 中斷正在執行的命令

5.2 kill 命令

kill 命令用于發送信號給進程,通常用來終止進程。

常用選項

  • kill [PID]:正常終止進程。
  • kill -9 [PID]:強制終止進程(不可恢復)。(常用)

案例

kill 6281

終止 PID 為 1234 的進程。

kill -9 6281

強制終止 PID 為 1234 的進程。
在這里插入圖片描述

5.3 killall 命令

killall 命令根據進程名稱終止進程。

案例

vim test1.txt &
vim test2.txt &
vim test3.txt &
ps -aux|grep vim  # 查看和vim有關的進程
killall -9 vim    # 終止所有名為 vim的進程

在這里插入圖片描述
一次性殺死所有和vim有關的進程
在這里插入圖片描述
在這里插入圖片描述

5.4 pkill 命令

pkill 命令根據進程屬性(如用戶名、終端等)終止進程。

案例

su - simon      # 切換用戶
vim test1.txt &
vim test2.txt &
vim test3.txt &
ps -aux|grep simon
pkill -9 -U simon
ps -aux|grep simon  # 查看該用戶的進程是否被殺死

終止所有由 root 用戶啟動的進程。

在這里插入圖片描述
在這里插入圖片描述


六、計劃任務管理

計劃任務用于自動執行系統中的任務。Linux 中常用的計劃任務工具包括 atcron

6.1 一次性任務:at 命令

at 命令用于設置一次性任務,任務將在指定時間執行。

  • 命令格式
 at [HH:MM] [yyyy-mm-dd]at> [要執行的命令]   # 按CTRL+D提交任務
  • 常用選項

    • atq:列出待執行的任務。
    • atrm [任務編號]:刪除指定的任務。

案例

date
at at 14:25 2025-08-16
at>pgrep -U root|wc -l > /opt/ps.root 
at> <EOT>

設置任務在指定時間執行,并將輸出保存到 /opt/ps.root 文件中。
在這里插入圖片描述
在這里插入圖片描述
atq列出待執行的任務
在這里插入圖片描述
·atrm [任務編號]:刪除指定的任務。

在這里插入圖片描述


6.2 周期性任務:cron 命令

cron 用于設置定期執行的任務。用戶可以通過 crontab 命令編輯和管理自己的計劃任務。

主要設置文件:

  • 全局配置文件,位于文件:/etc/crontab
  • 系統默認的設置,位于目錄:/etc/cron.*/
  • 用戶定義的設置,位于文件:/var/spool/cron/用戶名

命令格式

 * * * * * [command]
  • *:每個字段的取值范圍:分鐘(0-59),小時(0-23),日期(1-31),月份(1-12),星期(0-6,0 為周日)。
  • [command]:要執行的命令。
由于各字段的作用不同,其取值范圍也不一樣,如表 9-2 所示,當使用“*”時表示取值范圍中的任意時間。crontab 任務配置記錄中所設置的命令操作將在“分鐘”+“小時”+“日期”+ “月份”+“星期”都滿足的條件下執行。
crontab 計劃任務的配置字段說明分鐘	取值為 0~59 的任意整數
小時	取值為 0~23 的任意整數
日期	取值為 1~31 的任意整數(日期在該月份中必須有效) 
月份	取值為 1~12 的任意整數
星期	取值為 0~7 的任意整數,0 或 7 代表星期日命令	可以是普通的命令,也可以是自己編寫的程序腳本除了“*”以外,還可以使用“-”(減號)、“,”(逗號)、“/”(斜杠)與數字構成表達式來表  示較復雜的時間關系。
減號“-”:可以表示一個連續的時間范圍,如“1-4”表示整數 1、2、3、4。
逗號“,”:可以表示一個間隔的不連續范圍,如“3, 4, 6, 8”。
?斜杠符號“/”:可以用來指定間隔頻率,如在日期字段中的“*/3”表示每隔 3 天。

應用示例:

  • 0 17 * * 1-5 每周一至周五下午5點整
  • 30 8 * * 1,3,5 每周一、三、五上午8點30分
  • 0 8-18/2 * * * 每天上午8點至下午6點,每隔2小時執行一次
  • 0 0 */3 * * 每3天執行一次

常用命令

  • crontab -e [-u 用戶名]:編輯當前用戶的 cron 任務。

  • crontab -l [-u 用戶名]:列出當前用戶的 cron 任務。

  • crontab -r [-u 用戶名]:刪除當前用戶的所有 cron 任務。

其他命令:

設置用戶的周期性計劃任務列表主要通過 crontab 命令進行,結合不同的項可以完成不同的計劃任務管理操作。常用的選項如下。
-u:指定所管理的計劃任務屬于哪個用戶,默認是針對當前用戶(自己),一般只有 root 用戶有權限使用此選項(用于編輯、刪除其他用戶的計劃任務)。
下面將分別講解 crontab 命令相關選項的使用。crontab -u 用戶名 #指定XX用戶的cron服務crontab -u zx -l #列出zx用戶下的cron的詳細內容crontab -r #刪除所有用戶的cron內容,普通用戶執行,只刪除自己的cron內容crontab -r -u zx #刪除zx用戶的cron內容

案例1

50 7 * * * /usr/bin/systemctl start httpd.service
25 15 * * * /usr/bin/systemctl stop httpd.service

每天的 7:50 啟動 httpd 服務,15:25 停止 httpd 服務。

crontab -e50 7 * * * /usr/bin/systemctl start httpd.service
25 15 * * * /usr/bin/systemctl stop httpd.service

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
crontab -l [-u 用戶名]:列出當前用戶的 cron 任務。
在這里插入圖片描述
crontab -r [-u 用戶名]:列出當前用戶的 cron 任務。

在這里插入圖片描述

案例2:
每兩分鐘記錄一次/opt目錄下內容

crontab -e
*/2 * * * * /usr/bin/ls -lh /opt/* >> /opt/bak.txt
tail -f /var/log/cron  # 追蹤cron的日志文件

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述


6.3 cron 服務管理

  • 啟動 cron 服務
 systemctl start crond
  • 查看 cron 服務狀態
 systemctl status crond
  • 啟用 cron 服務開機啟動
 systemctl enable crond

擴充 生產案列

例如,若要按固定的周期重復完成一些系統管理任務,任務內容如下:①每天早上 7:50
自動開啟 sshd 服務,22:50 關閉 sshd 服務;②每隔五天清空一cron		次 FTP 服務器公共目錄
/var/ftp/pub 中的數據;③每周六的 7:30 重新啟動系統中的 httpd 服務;④每周一、周三、周五的下午 17:30,使用 tar 命令自動備份/etc/httpd 目錄,則可由 root 用戶通過 crontab 設置以下計劃任務。[root@localhost ~]# crontab -e
50 7 * * * /usr/bin/systemctl start sshd.service 
50 22 * * * /usr/bin/systemctl stop sshd.servic 
0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl httpd restart
30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
*/2 * * * * ls -lh /home/*普通用戶執行“crontab -e”命令時,可以設置自己的計劃任務(需要注意命令的執行權限)。
例如,用戶 jerry 設置一條計劃任務:在每周日晚上的 23:55 將/etc/passwd 文件的內容復制到宿主目錄中,保存為 pwd.txt 文件,具體操作如下:
[jerry @localhost ~]# crontab -e
55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt因各條計劃任務在執行時并不需要用戶登錄,所以任務配置記錄中的命令建議使用絕對路徑,以避免因缺少執行路徑而無法執行命令的情況。另外,在設置非每分都執行的任務時,    “分鐘”字段也應該填寫一個具體的時間數值,而不要保留為默認的“*”,否則將會在每分鐘執行一次計劃任務。
(2)查看用戶的計劃任務列表
crontab 命令結合“-l”選項可以查看當前用戶的計劃任務列表,對于 root 用戶來說,還可以結合“-u”選項查看其他用戶的計劃任務,具體操作如下:[root@localhost ~]# crontab –l	//查看用戶root 自己的計劃任務
50 7 * * * /usr/bin/systemctl start sshd.service
50 22 * * * /usr/bin/systemctl stop sshd.servic 
0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl httpd restart
30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
[root@localhost ~]# crontab -l -u jerry	//查看用戶jerry 的計劃任務
55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt 
[root@localhost ~]# ls -l /var/spool/cron/jerry
-rw-------. 1 root root 57 May 7 11:10 /var/spool/cron/jerry(3)刪除用戶的計劃任務列表
當只需要刪除某一條計劃任務時,可以通過“crontab -e”命令進行編輯;而若要清空某個用戶的所有計劃任務,可以執行“crontab -r”命令。[jerry@localhost ~]$ crontab -r	 //用戶jerry 清空自己設置的計劃任務[jerry@localhost ~]$ crontab -l
[jerry@localhost ~]$ crontab -l
no crontab for jerry案列
21 17 * * * /usr/bin/systemctl reboot
26 17 * * * /usr/bin/cp -r /etc/ /home/
#0 8-18/2 * * * /usr/binsystemctl start vsfrpd.service
0 * */3 * * /usr/bin/rm -rf /var/log/ftp/*.log
*/2 * * * * /usr/bin/systemctl start vsfrpd.service[root@192 home]# crontab -l -u lisi
17 19 * * * /usr/bin/cp -r /home/etc/ /home/lisi/backup/journalctl -xe

案例總結

  1. 查看進程
 ps -aux | grep vim

查看 vim 進程的 CPU 和內存使用情況。

  1. 設置周期性任務
 crontab -e30 2 * * * /usr/bin/rsync -av /data /backup# 每天02:30將/data的內容同步到/backup

總結

這篇文檔詳細介紹了 Linux 系統中的進程管理及相關命令,涵蓋了從基本概念到實際操作的全方位內容。以下是核心要點總結:

  1. 程序與進程的關系

    • 程序:靜態存儲在硬盤上的可執行代碼。
    • 進程:程序運行的動態實例,由操作系統分配資源(如內存、CPU)執行。
    • 父進程與子進程:父進程創建并管理子進程,類似于公司中的上下級關系。
  2. 查看進程信息

    • ps 命令:查看當前運行的進程,常用選項如 ps -auxps -ef,支持通過 grep 過濾特定進程。
    • top 命令:動態實時顯示進程及資源占用情況,支持按 CPU、內存等排序。
    • pgreppstree:分別用于查詢進程 PID 和以樹形結構展示進程關系。
  3. 進程的啟動方式

    • 手工啟動:分為前臺啟動(占用終端)和后臺啟動(使用 & 符號)。
    • 調度啟動:通過 at 設置一次性任務,或通過 cron 設置周期性任務(如定時備份)。
  4. 進程的前后臺調度

    • Ctrl+Z:掛起當前前臺進程到后臺并暫停。
    • jobsfgbg:分別用于查看后臺任務、將任務恢復到前臺或后臺繼續運行。
  5. 終止進程

    • Ctrl+C:中斷當前前臺進程。
    • killkillallpkill:通過 PID、進程名或屬性終止進程,kill -9 用于強制終止。
  6. 計劃任務管理

    • at:設置一次性任務,如定時執行腳本。
    • cron:通過 crontab 管理周期性任務,支持靈活的時間配置(如每天、每周或每隔幾天執行)。
    • 服務管理:使用 systemctl 啟動、啟用或查看 crond 服務狀態。
  7. 實際案例

    • 使用 ps -aux | grep vim 查看 vim 進程。
    • 通過 crontab -e 設置每天定時啟動/停止服務或備份文件。
    • 使用 kill -9 PID 強制終止無響應的進程。

本文檔為 Linux 系統管理員和用戶提供了全面的進程管理指南,幫助用戶高效監控、調度和控制系統中的進程,同時通過自動化任務提升系統管理效率。無論是日常維護還是復雜任務調度,這些命令和技巧都能發揮重要作用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919095.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919095.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919095.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里云TranslateGeneral - 機器翻譯SDK-自己封賬單文件版本—仙盟創夢IDE

仙盟創夢IDE代碼<?php /*** 阿里云機器翻譯通用版API調用工具* 文檔參考&#xff1a;https://help.aliyun.com/zh/machine-translation/developer-reference/api-alimt-2018-10-12-translategeneral*/ class AliyunTranslate {// 阿里云訪問密鑰private $accessKeyId;priva…

新字符設備驅動實驗

經過前兩章實驗的實戰操作&#xff0c;我們已經掌握了 Linux 字符設備驅動開發的基本步驟&#xff0c;字符 設備驅動開發重點是使用 register_chrdev 函數注冊字符設備&#xff0c;當不再使用設備的時候就使用 unregister_chrdev 函數注銷字符設備&#xff0c;驅動模塊加載成功…

【更新公告】C++算法·線段樹

之前的線段樹知識都忘了qwq 現在在重新學線段樹 下一篇就是寫線段樹了&#xff0c;例題已經找好了 A了1遍&#xff0c;但是用的玄學代碼ee 下面是更新公告 更新公告 更新模式改為2~3天1篇 但是絕對高質量&#xff01;&#xff01; (平均質量分93夠嗎qwq) 如果例題好找盡量給出2…

pyqtgraph 庫 右鍵菜單欄插件漢化

第一步&#xff0c;打開pyqtgraph文件夾。 第二步&#xff1a;打開graphicsItems&#xff0c;將PlotItem和ViewBox中的.py文件中的英文替換為中文&#xff0c;運行軟件即可看到插件右鍵的菜單欄成為中文。 第三步&#xff1a;GraphicsScene中的&#xff0c;等找到相應的右鍵菜單…

docker鏡像解決的一些問題

1 概述Docker鏡像技術通過創新性的設計&#xff0c;徹底解決了應用交付領域的核心痛點&#xff0c;已經成為已成為云原生時代的事實標準。其核心價值在于??通過標準化封裝實現"一次構建&#xff0c;處處運行"??&#xff0c;從根本上改變了軟件交付的生命周期。2 …

10.從開始寫LINUX內核——時鐘中斷

Linux 0.12 內核時鐘中斷實現&#xff1a;從初始化到中斷響應時鐘中斷是操作系統中最基礎且最重要的中斷之一&#xff0c;它為系統提供時間基準&#xff0c;支持進程調度、定時器等核心功能。本文將基于 Linux 0.12 內核的 setup 程序框架&#xff0c;詳細介紹時鐘中斷的完整實…

Effective C++ 條款45:運用成員函數模板接受所有兼容類型

Effective C 條款45&#xff1a;運用成員函數模板接受所有兼容類型核心思想&#xff1a;使用成員函數模板&#xff08;member function templates&#xff09;生成可接受兼容類型的函數&#xff0c;特別是泛型拷貝構造函數和賦值操作符&#xff0c;同時避免抑制編譯器生成的默認…

華測科技(北京)的3D GPR數據分析

很高興得到了張總的支持&#xff0c;獲得了他們雷達的數據&#xff0c;并寫了雷達數據讀取和轉換文件。1 背景搜索后發現 華測科技&#xff08;北京&#xff09;有限公司 的實力很強&#xff0c;因為他們的檢測可達100km/h的時速。以前我只知道行業內 青島中電眾益 的3D GPR產…

X86、ARM與C86架構全面對比分析:性能、功耗、成本與生態系統

目錄標題X86、ARM與C86架構全面對比分析&#xff1a;性能、功耗、成本與生態系統一、架構概述與發展背景1.1 X86架構&#xff1a;PC與服務器市場的傳統霸主1.2 ARM架構&#xff1a;移動領域的王者與新興服務器力量1.3 C86架構&#xff1a;國產x86兼容的創新嘗試二、性能表現對比…

w嵌入式分享合集66

自己的原文哦~ https://blog.51cto.com/whaosoft/14132240 一、STM32的NRST管腳異常復位問題 這個問題是客戶對開發的平臺做EMS 浪涌測試的時候發生的&#xff0c;平臺上使用了一個STM32G474 RCT6 MCU 。在某個等級的EMS 測試中&#xff0c; 客戶發現MCU有時候會異常…

ZKmall開源商城的數據校驗之道:用規范守護業務基石

在電商系統里&#xff0c;數據就像流淌的血液 —— 用戶填的手機號、下單的商品數量、支付的金額&#xff0c;每一個數字、每一段文字都得靠譜。要是數據出了錯&#xff0c;輕則訂單下不了&#xff0c;重則錢貨兩空。ZKmall 開源商城作為一個分布式電商系統&#xff0c;每天要處…

QML實現數據可視化

界面樣式 項目開發流程 1.通過QtCreator創建一個Qt Quick插件,插件命名為CarPanMod; 2.通過QtCreator創建一個Qt Quick Application,命名為QmlPro; 3.在插件CarPanMod中實現條形圖,折線圖和餅狀圖的繪制; 4.在應用程序QmlPro中,添加插件的導入路徑; 5.在應用程序中,通過i…

實時計算 記錄

《大數據架構師》海量實時廣告流平臺架構設計與實踐 《架構師必備技能之集群資源評估.pdf》 參考&#xff1a; 大型廣告系統架構與實現 架構圖

gitee_流水線搭配 Dockerfile 部署vue項目

使用 gitee流水線搭配docker,編寫Dockerfile文件進行自動部署Vue項目 gitee流水線 基本配置跟另外一篇文章中類似 gitee_配置自動部署vue項目-CSDN博客 需要修改的只是腳本執行 # 構建階段腳本echo 清理舊文件 rm -rf dist echo 配置 Git 參數 git config --global http.pos…

Win10快速安裝.NET3.5

按Windows鍵輸入CONTROL打開“控制面板”點擊“程序”點擊“啟用或關閉Windows功能”勾選“.NET Framework3.5&#xff08;包括.NET2.0和3.0&#xff09;”點擊確定隨后選擇從更新下載&#xff08;具體提示忘記了&#xff09;&#xff0c;之后windows會自動安裝

Docker Compose 入門教程

一、Docker Compose 簡介 Docker Compose 是 Docker 官方提供的多容器編排工具&#xff0c;通過 YAML 文件&#xff08;docker-compose.yml&#xff09;定義應用程序的服務、網絡和卷&#xff0c;實現一鍵式容器管理。其核心優勢包括&#xff1a; 簡化多容器管理&#xff1a;通…

Tomcat架構深度解析:從Server到Servlet的全流程揭秘

第一章&#xff1a;Tomcat架構概述1.1 Tomcat的角色與定位&#xff1a;Web服務器 vs Servlet容器Tomcat 是什么&#xff1f;它既是一種輕量級 Web 服務器&#xff0c;也是一種符合 Java EE 規范的 Servlet 容器。Web服務器&#xff1a;類似 Nginx、Apache HTTP Server&#xff…

【Java web】HTTP 協議詳解

一、什么是 HTTP&#xff1f;—— 互聯網的 "快遞員"你有沒有想過&#xff0c;當你在瀏覽器輸入www.baidu.com并按下回車時&#xff0c;背后發生了什么&#xff1f;為什么幾秒鐘后就能看到百度首頁&#xff1f;這一切的背后&#xff0c;都離不開一個叫HTTP的 "快…

流式數據服務端怎么傳給前端,前端怎么接收?

01 引言 大模型時代&#xff0c;尤其會話模型為了提高用戶的使用體驗&#xff0c;它不會將所有的數據加載完成一次響應給客戶端&#xff0c;而是通過數據流&#xff0c;一點點的將數據慢慢呈現出來。 正是這種有趣的交互方式一次次將SSE&#xff08;Server Sent Event&#x…

ML307C 4G通信板:工業級DTU固件,多協議支持,智能配置管理

產品概述 ML307C 4G通信板是一款基于中移物聯網ML307C模組的工業級DTU&#xff08;數據傳輸單元&#xff09;產品&#xff0c;專為工業物聯網應用設計。我們的固件支持多種工業協議&#xff0c;具備遠程配置、FOTA升級、數據加密等企業級功能&#xff0c;為您的工業設備提供穩定…