Linux第二周學(xué)習(xí)總結(jié)
1. 總結(jié)通配符,管道,重定向,并且結(jié)合示例,添加注釋信息
| 名稱 | 符號(hào)有哪些 | 使用場(chǎng)景 |
|---|---|---|
| 通配符 | *,? | 模糊匹配內(nèi)容 |
| 管道符 | | | 將左側(cè)命令的標(biāo)準(zhǔn)輸出作為右側(cè)命令的標(biāo)準(zhǔn)輸入 |
| 重定向 | >,>>,<,<< | 文件追加內(nèi)容 |
通配符示例
[root@rocky9-15 test]# ls
10abc.sh 1abc.sh 2abc.sh 3abc.sh 4abc.sh 5abc.sh 6abc.sh 7abc.sh 8abc.sh 9abc.sh shell
10.sh 1.sh 2.sh 3.sh 4.sh 5.sh 6.sh 7.sh 8.sh 9.sh user3
[root@rocky9-15 test]# ls *.sh # 顯示以.sh結(jié)尾的文件 *代表任意長度字符,所以會(huì)顯示所有后綴名為.sh的文件
10abc.sh 1abc.sh 2abc.sh 3abc.sh 4abc.sh 5abc.sh 6abc.sh 7abc.sh 8abc.sh 9abc.sh
10.sh 1.sh 2.sh 3.sh 4.sh 5.sh 6.sh 7.sh 8.sh 9.sh
[root@rocky9-15 test]# ls ?abc.sh # 顯示后綴名為abc.sh的文件 ?表示單個(gè)字符,故10abc.sh沒有顯示
1abc.sh 2abc.sh 3abc.sh 4abc.sh 5abc.sh 6abc.sh 7abc.sh 8abc.sh 9abc.sh
管道符號(hào)示例:
ps aux # 查看所有的服務(wù)
[root@rocky9-15 test]# ps aux |grep "nginx" #將ps aux命令的輸出結(jié)果作為grep "nginx"的輸入進(jìn)行篩選,最終查找出有關(guān)于nginx的服務(wù)
root 28627 0.0 0.0 10056 1624 ? Ss 21:46 0:00 nginx: master process /usr/sbin/nginx
nginx 28629 0.0 0.1 14412 5208 ? S 21:46 0:00 nginx: worker process
nginx 28630 0.0 0.1 14412 5208 ? S 21:46 0:00 nginx: worker process
nginx 28631 0.0 0.1 14412 5208 ? S 21:46 0:00 nginx: worker process
nginx 28632 0.0 0.1 14412 5208 ? S 21:46 0:00 nginx: worker process
root 35856 0.0 0.0 221812 2304 pts/3 S+ 21:46 0:00 grep --color=auto nginx
這里如果如果不使用管道符號(hào)的話,grep是無法直接對(duì)ps aux直接進(jìn)行解析的,需要將ps aux命令執(zhí)行的結(jié)果復(fù)制到一個(gè)文件里面,在對(duì)這個(gè)文件進(jìn)行篩選。
[root@rocky9-15 test]# grep "nginx" ps aux
grep: ps: 沒有那個(gè)文件或目錄
grep: aux: 沒有那個(gè)文件或目錄
[root@rocky9-15 test]# grep "nginx" ps.txt
root 28627 0.0 0.0 10056 1624 ? Ss 21:46 0:00 nginx: master process /usr/sbin/nginx
nginx 28629 0.0 0.1 14412 5208 ? S 21:46 0:00 nginx: worker process
nginx 28630 0.0 0.1 14412 5208 ? S 21:46 0:00 nginx: worker process
nginx 28631 0.0 0.1 14412 5208 ? S 21:46 0:00 nginx: worker process
nginx 28632 0.0 0.1 14412 5208 ? S 21:46 0:00 nginx: worker process
如果使用管道符就不需要將ps aux產(chǎn)生的輸出內(nèi)容保存到文件里,再使用grep進(jìn)行篩選了
重定向符號(hào)應(yīng)用:
[root@rocky9-15 cdx]# cat 1.txt
你好,>定向符號(hào)
[root@rocky9-15 cdx]# echo "你好,>定向符號(hào)2" > 1.txt # 向有內(nèi)容的1.txt文件添加內(nèi)容,會(huì)覆蓋原先的數(shù)據(jù)
[root@rocky9-15 cdx]# cat 1.txt
你好,>定向符號(hào)2
[root@rocky9-15 cdx]# echo "你好,>定向符號(hào)3" >> 1.txt # 使用>>符號(hào)則不會(huì)覆蓋原先的文件數(shù)據(jù)內(nèi)容
[root@rocky9-15 cdx]# cat 1.txt
你好,>定向符號(hào)2
你好,>定向符號(hào)3
[root@rocky9-15 cdx]# grep "2" < 1.txt # 將1.txt文件內(nèi)容輸出作為 grep "2"命令的輸入
你好,>定向符號(hào)2
[root@rocky9-15 cdx]# grep "2" << EFO # 通過交換數(shù)據(jù)塊查找,以EFO作為分隔符
> 1
> 2
> 3
> 3
> 4
> 2
> EFO
2
2
2. 總結(jié)linux用戶和用戶組相關(guān)知識(shí)點(diǎn)以及常見的操作命令,添加注釋信息
用戶
| 用戶 | Uid | 使用權(quán)限 |
|---|---|---|
| root | 0 | 權(quán)限極高,作為系統(tǒng)管理員使用 |
| 系統(tǒng)用戶 | 1-999 | 由系統(tǒng)或應(yīng)用程序自動(dòng)創(chuàng)建,用于隔離服務(wù)權(quán)限 |
| 普通用戶 | >=1000 | 低權(quán)限 |
常見操作命令有:
1、useradd (增加一個(gè)用戶)
[root@rocky9-15 cdx]# useradd user1 #創(chuàng)建用戶user1,參數(shù)默認(rèn)
[root@rocky9-15 cdx]# ls /home/
red user1
[root@rocky9-15 cdx]# id user1
用戶id=6667(user1) 組id=6667(user1) 組=6667(user1)
[root@rocky9-15 cdx]# useradd user2 -d /test/home/ -u 1234 -s /bin/bash # -d表示修改用戶默認(rèn)的家目錄位置,-u設(shè)置用戶的uid,-s設(shè)置用戶默認(rèn)的shell
正在創(chuàng)建信箱文件: 文件已存在
[root@rocky9-15 cdx]# id user2
用戶id=1234(user2) 組id=1234(user2) 組=1234(user2)
2、usermod (修改用戶屬性)
[root@rocky9-15 cdx]# usermod -aG red,jimmy user2 #添加兩個(gè)附屬組red,jimmy
[root@rocky9-15 cdx]# id user2
用戶id=1234(user2) 組id=1234(user2) 組=1234(user2),1000(red),1028(web),1030(jimmy)
[root@rocky9-15 cdx]# usermod -G web user2 # -G代表只保留的附屬組,即我們只保留web組,另外的兩個(gè)附屬組刪除
[root@rocky9-15 cdx]# id user2
用戶id=1234(user2) 組id=1234(user2) 組=1234(user2),1028(web)
3、userdel? (刪除用戶)
[root@rocky9-15 cdx]# userdel -r user2 #-r表示刪除用戶的附屬文件
userdel:/var/spool/mail/user2 并不屬于 user2,所以不會(huì)刪除
[root@rocky9-15 cdx]# id user2
id: “user2”:無此用戶
4、su(切換用戶)
[red@rocky9-15 cdx]$ su root # 登錄到root用戶
密碼:
# root用戶使用su切換其它用戶不需要密碼
5、passwd (修改用戶密碼)
[red@rocky9-15 cdx]$ passwd # 修改我的用戶密碼
# 除了root用戶,其它用戶只能修改自己的用戶密碼
[red@rocky9-15 cdx]$ passwd user1 # 修改我的用戶密碼
passwd:只有 root 用戶才能指定用戶名。
6、sudo (使用root權(quán)限執(zhí)行命令)
普通用戶只所以能夠使用sudo是因?yàn)閞oot用戶規(guī)定了哪些用戶可以使用,具體在/etc/sudoers中

[red@rocky9-15 root]$ passwd user1 # 不加sudo之前,無法執(zhí)行
passwd:只有 root 用戶才能指定用戶名。
[red@rocky9-15 root]$ sudo passwd user1 #加sudo,可執(zhí)行
[sudo] red 的密碼:
7、id (查看用戶信息)
[root@rocky9-15 cdx]# id root
用戶id=0(root) 組id=0(root) 組=0(root)
[root@rocky9-15 cdx]# id red
用戶id=1000(red) 組id=1000(red) 組=1000(red)
[root@rocky9-15 cdx]# id nginx
用戶id=980(nginx) 組id=980(nginx) 組=980(nginx)
8、who(查看有多少用戶正在登錄系統(tǒng))
[root@rocky9-15 cdx]# who
root seat0 2025-04-28 20:30 (login screen)
root tty2 2025-04-28 20:30 (tty2)
root pts/3 2025-04-29 21:25 (10.0.0.1)
root pts/4 2025-04-29 21:25 (10.0.0.1)
用戶組
用戶組就是為了更方便的管理用戶的,它可以把某個(gè)權(quán)限集中分給某個(gè)用戶。
一個(gè)用戶只有有一個(gè)主組,但是可以有無限個(gè)附屬組
常見操作命令有:
1、groupadd? (增加一個(gè)新組)
[root@rocky9-15 cdx]# groupadd -g 1008 test # 新建一個(gè)分組,-g指定gid
[root@rocky9-15 cdx]# getent group test
test:x:1008:
2、groupmod(修改組屬性,gid或者名稱之類的)
[root@rocky9-15 cdx]# groupmod -g 8888 -n newtest test # -g代表組新的gid,-n 后面接新組名 老組名進(jìn)行修改
[root@rocky9-15 cdx]# getent group test
[root@rocky9-15 cdx]# getent group newtest
newtest:x:8888:
3、groupdel (刪除組)
[root@rocky9-15 cdx]# getent group newtest
newtest:x:8888:red
[root@rocky9-15 cdx]# groupdel newtest # 刪除newtest組,附屬組可以直接刪除
[root@rocky9-15 cdx]# getent group newtest
[root@rocky9-15 cdx]# groupdel red # 主組則不能直接刪除
groupdel:不能移除用戶“red”的主組
4、gpasswd(修改組成員)
[root@rocky9-15 cdx]# gpasswd -a red newtest #將red用戶添加到newtest組里面
正在將用戶“red”加入到“newtest”組中
[root@rocky9-15 cdx]# id red
用戶id=1000(red) 組id=1000(red) 組=1000(red),8888(newtest)
[root@rocky9-15 cdx]# gpasswd -d red newtest #將red用戶移除newtest組
正在將用戶“red”從“newtest”組中刪除
[root@rocky9-15 cdx]# getent group newtest
newtest:x:8888:
5、getent(查看組信息)
[root@rocky9-15 cdx]# getent group red# 查看red組
red:x:1000:
[root@rocky9-15 cdx]# getent group root# 查看root組
root:x:0:
[root@rocky9-15 cdx]# getent passwd red #也可以查用戶信息
red:x:1000:1000:red:/home/red:/bin/bash
[root@rocky9-15 cdx]# getent passwd root
root:x:0:0:root:/root:/bin/bash
3. 總結(jié)文件權(quán)限管理相關(guān)的知識(shí)點(diǎn),包括權(quán)限位,特殊權(quán)限和ACL,添加詳細(xì)的注釋和解釋
對(duì)于linux中的文件,有是三種權(quán)限 :
r (可讀) 4
w (可寫) 2
x (可執(zhí)行)1
rwx對(duì)應(yīng)二進(jìn)制位數(shù)
對(duì)于文件而言,有三種用戶會(huì)對(duì)文件進(jìn)行管理
1、所有者 u
2、所屬組 g
3、其他人 o
[root@rocky9-15 cdx]# ll 總用量 4 -rw-r--r--. 1 root root 44 4月 29 22:10 1.txt
對(duì)于上述代碼1.txt文件的權(quán)限,我們可以分成三個(gè)部分:rw-,r--,r-- 對(duì)應(yīng)分別的是所有者,所屬組,其他人;
所以這個(gè)文件,我具有可讀和可寫權(quán)限,我的所屬組具有可讀權(quán)限,其他人具體可讀權(quán)限。
特殊權(quán)限:
linux文件中除了常見的rwx文件權(quán)限外,還有三種特殊的權(quán)限
1、SUID 一個(gè)二進(jìn)制文件(命令) 添加SUID屬性后,任何一個(gè)用戶都可以隨意執(zhí)行它,故比較危險(xiǎn),慎用(即普通用戶不需要sudo也可以使用命令)
[red@rocky9-15 cdx]$ useradd suid # 普通用戶無法直接創(chuàng)建用戶,無權(quán)限,
useradd: Permission denied.
useradd:無法鎖定 /etc/passwd,請(qǐng)稍后再試。
[root@rocky9-15 cdx]# chmod u+s /usr/sbin/useradd # 為usersdd文件添加suid屬性
[root@rocky9-15 cdx]# ll /usr/sbin/useradd
-rwsr-xr-x. 1 root root 141144 10月 31 2023 /usr/sbin/useradd
[red@rocky9-15 cdx]$ useradd suid # 可以添加用戶
sss_cache must be run as root
sss_cache must be run as root
[red@rocky9-15 cdx]$ id suid
用戶id=6669(suid) 組id=6669(suid) 組=6669(suid)
[red@rocky9-15 cdx]$ userdel -p suid
2、SGID 應(yīng)用于二進(jìn)制文件和目錄,執(zhí)行與SUID類型,但是影響的是組身份,更多的用于目錄管理,統(tǒng)一目錄的屬性組
[root@rocky9-15 sgid]# groupadd suidtest #創(chuàng)建用戶文件屬性組
[root@rocky9-15 sgid]# usermod -aG suidtest red # 添加用戶到屬性組
[root@rocky9-15 sgid]# usermod -aG suidtest test # 添加用戶到屬性組
[root@rocky9-15 cdx]# chown :suidtest sgid/ # 修改用戶屬性組為suidtest
[root@rocky9-15 cdx]# ll -d sgid/
drwxr-sr-x. 2 red suidtest 6 5月 5 20:23 sgid/
[root@rocky9-15 cdx]# chmod g+s sgid/ #為sgid目錄添加sgid屬性
[red@rocky9-15 cdx]$ mkdir sgid/test1 ##使用red用戶添加目錄,生產(chǎn)的目錄屬性組任然是suidtest
[red@rocky9-15 cdx]$ ll sgid/
總用量 0
drwxr-sr-x. 2 red suidtest 6 5月 5 21:10 test1
[test@rocky9-15 cdx]$ mkdir sgid/test2 ## 使用test用戶創(chuàng)建目錄,屬性組任然是suidtest
[test@rocky9-15 cdx]$ ll sgid/
總用量 0
drwxr-sr-x. 2 red suidtest 6 5月 5 21:10 test1
drwxr-sr-x. 2 test suidtest 6 5月 5 21:11 test2
3、Sticky Bit(粘滯位) 多用戶共享目錄,限制每個(gè)用戶刪除的操作權(quán)限。
[root@rocky9-15 test]# mkdir /project_share # 創(chuàng)建共享目錄
[root@rocky9-15 test]# sudo chmod 1777 /project_share # 權(quán)限開放且添加粘滯位(權(quán)限顯示為`drwxrwxrwt`)
[root@rocky9-15 test]# ll /project_share/ -d
drwxrwxrwt. 2 root root 6 5月 5 21:51 /project_share/
[test@rocky9-15 cdx]$ cd /project_share/
[test@rocky9-15 project_share]$ ls
red
[test@rocky9-15 project_share]$ rm red #驗(yàn)證其他用戶是否可以刪除此文件
rm:是否刪除有寫保護(hù)的普通空文件 'red'?y
rm: 無法刪除 'red': 不允許的操作
[test@rocky9-15 project_share]$ touch test # 創(chuàng)建新文件
[red@rocky9-15 project_share]$ ll
總用量 0
-rw-r--r--. 1 red red 0 5月 5 21:52 red
-rw-r--r--. 1 test test 0 5月 5 21:54 test
[red@rocky9-15 project_share]$ rm test #同理,red用戶也不能刪除test用戶創(chuàng)建的文件
rm:是否刪除有寫保護(hù)的普通空文件 'test'?y
rm: 無法刪除 'test': 不允許的操作
ACL:通過為特定用戶或組單獨(dú)定義權(quán)限,補(bǔ)充傳統(tǒng)Linux文件權(quán)限模型,實(shí)現(xiàn)更精細(xì)的訪問控制。
4. 總結(jié)程序包管理器有哪些,以及包中包含什么內(nèi)容的文件,嘗試這些文件如何獲取命令獲取? yum/dnf/apt總結(jié)程序包獲取途徑,以及rpm, yum, apt命令選項(xiàng)示例。
程序包管理器一般分兩類:
1:基于Debian系列
有apt和dpkg 底層的包.deb包
2:基于RedHat系統(tǒng)
有yum,DNG,rmp 底層的包是rpm包
包中包含四種內(nèi)容文件
1?、核心文件?:
二進(jìn)制可執(zhí)行文件、配置文件及庫文件
2、?元數(shù)據(jù)?
包的名稱、版本、依賴關(guān)系、功能描述等基本信息
3、腳本文件?
安裝前后或卸載時(shí)執(zhí)行的腳本(如預(yù)安裝腳本 preinst、卸載后腳本 postrm)
4、數(shù)據(jù)庫記錄?
系統(tǒng)級(jí)數(shù)據(jù)庫(如 /var/lib/rpm)存儲(chǔ)已安裝包的路徑、校驗(yàn)碼等信息
[root@rocky9-15 project_share]# rpm -ql mysql # 查看文件列表
/usr/bin/mysql
/usr/bin/mysql_config_editor
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlpump
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/lib/.build-id
/usr/lib/.build-id/68
/usr/lib/.build-id/68/62bb89fb3e10e2ec794f25781c064b03d4a509
/usr/lib/.build-id/77
/usr/lib/.build-id/77/0603623a002b2bbc2f4c10a390d3afe6987adf
/usr/lib/.build-id/8b
/usr/lib/.build-id/8b/6ad965b82e0ba45387ed8e914e1fedfe8cdad9
/usr/lib/.build-id/a0
/usr/lib/.build-id/a0/93374ce2e0b0788cc751b012a3c9bfe9a42c9b
/usr/lib/.build-id/b8
/usr/lib/.build-id/b8/42a53b725af8f6233a1289810f4a87863dfabb
/usr/lib/.build-id/d9
/usr/lib/.build-id/d9/53cf4b0e0854427d61c7d95b8154002870f69f
/usr/lib/.build-id/ea
/usr/lib/.build-id/ea/788923cf0da3fd90be95d0cb7d385f974853a1
/usr/lib/.build-id/ea/fb7d7d3bfbe4722750c85eee3508a15edadc66
/usr/lib/.build-id/f6
/usr/lib/.build-id/f6/e6ef33f804a9975821d8c64f86c512e308c213
/usr/lib/.build-id/ff
/usr/lib/.build-id/ff/d0e973ef785b0f28f4be41ebdd48c4b4752d32
/usr/share/man/man1/mysql.1.gz
/usr/share/man/man1/mysql_config_editor.1.gz
/usr/share/man/man1/mysqladmin.1.gz
/usr/share/man/man1/mysqlbinlog.1.gz
/usr/share/man/man1/mysqlcheck.1.gz
/usr/share/man/man1/mysqldump.1.gz
/usr/share/man/man1/mysqlimport.1.gz
/usr/share/man/man1/mysqlpump.1.gz
/usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/mysqlslap.1.gz
[root@rocky9-15 project_share]# rpm -qi mysql # 查看元數(shù)據(jù)
Name : mysql
Version : 8.0.41
Release : 2.el9_5
Architecture: x86_64
Install Date: 2025年05月06日 星期二 00時(shí)02分34秒
Group : Unspecified
Size : 62705506
License : GPLv2 with exceptions and LGPLv2 and BSD
Signature : RSA/SHA256, 2025年02月20日 星期四 00時(shí)08分17秒, Key ID 702d426d350d275d
Source RPM : mysql-8.0.41-2.el9_5.src.rpm
Build Date : 2025年02月19日 星期三 23時(shí)15分11秒
Build Host : pb-419b85e8-600e-41b5-96b0-ca17772633ba-b-x86-64
Packager : Rocky Linux Build System (Peridot) <releng@rockylinux.org>
Vendor : Rocky Enterprise Software Foundation
URL : http://www.mysql.com
Summary : MySQL client programs and shared libraries
Description :
MySQL is a multi-user, multi-threaded SQL database server. MySQL is a
client/server implementation consisting of a server daemon (mysqld)
and many different client programs and libraries. The base package
contains the standard MySQL client programs and generic MySQL files.
[root@rocky9-15 project_share]# rpm -ivh /run/media/root/Rocky-9-4-x86_64-dvd/AppStream/Packages/m/mariadb-connector-c-config-3.2.6-1.el9_0.noarch.rpm #查看軟件包安裝信息
Verifying... ################################# [100%]
準(zhǔn)備中... ################################# [100%]
軟件包 mariadb-connector-c-config-3.2.6-1.el9_0.noarch 已經(jīng)安裝
程序包的獲取包一共有兩種方式,一種是本地的倉庫,一種是網(wǎng)絡(luò)倉庫 本地倉庫由于是直接下載好了,下載快,版本不一定是最新的
[root@rocky9-15 dev]# df
文件系統(tǒng) 1K-塊 已用 可用 已用% 掛載點(diǎn)
devtmpfs 4096 0 4096 0% /dev
tmpfs 1857360 0 1857360 0% /dev/shm
tmpfs 742948 13780 729168 2% /run
/dev/mapper/rl-root 73334784 6406680 66928104 9% /
/dev/nvme0n1p1 983040 310356 672684 32% /boot
/dev/mapper/rl-home 131088384 954736 130133648 1% /home
tmpfs 371472 108 371364 1% /run/user/0
/dev/sr0 10660236 10660236 0 100% /run/media/root/Rocky-9-4-x86_64-dvd
[root@rocky9-15 dev]# cd /run/media/root/Rocky-9-4-x86_64-dvd
[root@rocky9-15 Rocky-9-4-x86_64-dvd]# ls # AppStream和BaseOS 就是我們本地倉庫的源
AppStream BaseOS EFI images isolinux LICENSE media.repo
網(wǎng)絡(luò)倉庫數(shù)量多,軟件版本多


rpm, yum, apt命令選項(xiàng)示例
1 、rpm
-i:安裝軟件包。
-v:顯示詳細(xì)安裝過程。
-h:顯示進(jìn)度條(哈希標(biāo)記)。
-U:升級(jí)軟件包(若未安裝則執(zhí)行安裝)。
-F:僅升級(jí)已安裝的舊版本包。
-e:移除已安裝的軟件包。
-q:查詢操作的基礎(chǔ)選項(xiàng)。
-a:列出所有已安裝的包。
-l:顯示包安裝的文件列表。
-i:顯示包的詳細(xì)信息(如版本、廠商、依賴等)。
[root@rocky9-15 softs]# rpm -ivh vsftpd-3.0.3-49.el9.x86_64.rpm # 安裝軟件顯示詳細(xì)信息
警告:vsftpd-3.0.3-49.el9.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID 8483c65d: NOKEY
Verifying... ################################# [100%]
準(zhǔn)備中... ################################# [100%]
正在升級(jí)/安裝...
1:vsftpd-3.0.3-49.el9 ################################# [100%]
[root@rocky9-15 softs]# rpm -Uvh vsftpd-3.0.5-6.el9.x86_64.rpm # 更新版本
警告:vsftpd-3.0.5-6.el9.x86_64.rpm: 頭V4 RSA/SHA256 Signature, 密鑰 ID 8483c65d: NOKEY
Verifying... ################################# [100%]
準(zhǔn)備中... ################################# [100%]
正在升級(jí)/安裝...
1:vsftpd-3.0.5-6.el9 ################################# [ 50%]
正在清理/刪除...
2:vsftpd-3.0.3-49.el9 ################################# [100%]
[root@rocky9-15 softs]# rpm -evh vsftpd # 刪除軟件
準(zhǔn)備中... ################################# [100%]
正在清理/刪除...
1:vsftpd-3.0.5-6.el9 ################################# [100%]
[root@rocky9-15 softs]# rpm -q vsftpd # 查詢軟件是否安裝
未安裝軟件包 vsftpd
[root@rocky9-15 softs]# rpm -qa #查看所有已經(jīng)安裝的包
2、yum
2.1基礎(chǔ)操作
-
安裝軟件包 (install) 例如:yum install nginx
-
更新軟件包(update) 例如:yum update nginx
-
卸載軟件包(remove) 例如:yum remove nginx
![image-20250506211334542]()


2.2 倉庫管理
- 啟用/禁用倉庫 enable/disable
[root@rocky9-15 yum.repos.d]# yum-config-manager --disable appstream-aliyun # 禁用yum源,后面接的倉庫id
[root@rocky9-15 yum.repos.d]# yum repolist all | grep "aliyun" # 查看源是否被禁用
appstream-aliyun Rocky Linux 9 - AppStream - Aliyun 禁用
baseos-aliyun Rocky Linux 9 - Base - Aliyun 啟用
extras-aliyun Rocky Linux 9 - Extras - Aliyun 啟用
[root@rocky9-15 yum.repos.d]# yum-config-manager --enable appstream-aliyun # 啟用yum源,后面接的倉庫id
’[root@rocky9-15 yum.repos.d]# yu repolist all | grep "aliyun" # 查看源是否被禁用
appstream-aliyun Rocky Linux 9 - AppStream - Aliyun 啟用
baseos-aliyun Rocky Linux 9 - Base - Aliyun 啟用
extras-aliyun Rocky Linux 9 - Extras - Aliyun 啟用
2.3查詢與信息獲取
-
搜索軟件包 search
-
查看倉庫信息 repolist(只會(huì)顯示啟用的yum倉庫) repolist all(顯示全部的yum倉庫)
-
顯示軟件包詳情 info 查看軟件包的大小,依賴等
![image-20250506220131584]()
![image-20250506220453532]()
![image-20250506220508134]()

2.4 緩存維護(hù)
- 清理緩存 clean makecache
[root@rocky9-15 yum.repos.d]# yum clean all # 清除所有緩存,包括下好的元數(shù)據(jù)
47 個(gè)文件已刪除
[root@rocky9-15 yum.repos.d]# yum makecache # 重新生產(chǎn)緩存(重新下載元數(shù)據(jù))
Rocky Linux 9 - Base - Aliyun 1.0 MB/s | 2.3 MB 00:02
Rocky Linux 9 - AppStream - Aliyun 4.6 MB/s | 8.4 MB 00:01
Rocky Linux 9 - Extras - Aliyun 18 kB/s | 16 kB 00:00
Rocky Linux 9 - BaseOS 1.5 MB/s | 2.3 MB 00:01
Rocky Linux 9 - AppStream 2.3 MB/s | 8.4 MB 00:03
Rocky Linux 9 - Extras 14 kB/s | 16 kB 00:01
元數(shù)據(jù)緩存已建立。
3、apt
3.1、基礎(chǔ)操作
- 更新軟件源 update 更新最新的軟件包關(guān)系(包含依賴關(guān)系)
- 安裝軟件包 install
- 更新軟件包 upgrade 更新所有可以更新的軟件包
- 卸載軟件包 remove /purge remove 卸載包但保留配置文件;purge 完全卸載包及配置文件



3.2維護(hù)與管理
- ?清理無用依賴 autoremove 刪除不再需要的自動(dòng)安裝依賴
- 清除緩存 clean 刪除所有已下載的軟件包緩存


3.3 查詢和信息獲取
-
搜索軟件包 search 根據(jù)關(guān)鍵詞搜索可用包
![image-20250506225504812]()
-
列出軟件包狀態(tài)
-
list --installed # 顯示所有已安裝的包
![image-20250506225615322]()
-
list --upgradable # 列出可升級(jí)的包
?
![image-20250506225641911]()
-
-
查看包詳情 show # 顯示包的版本、依賴、描述等詳細(xì)信息
?
![image-20250506225727756]()
5. 簡(jiǎn)要總結(jié)yum/dnf工作原理。并搭建私有yum倉庫(base, epel源)給另一個(gè)虛擬機(jī)使用。
5.1工作原理:
-
架構(gòu):采用C/S (客戶端/服務(wù)端) 我們本地的linux系統(tǒng)作為客戶端,配置好yum倉庫,通過HTTP/FTP 協(xié)議訪問服務(wù)端的地址,下載我們需要的rpm包
,然后系統(tǒng)調(diào)用底層rpm進(jìn)行安裝。 -
![image-20250507211129711]()
-
操作流程:
1、客戶端配置yum倉庫文件,xxx.repo文件
2、客戶端解析xxx.repo文件,確定倉庫地址
3、下載repodata/ 中的元數(shù)據(jù),緩存到本地
4、根據(jù)用戶指令(如 install,remove等)分析依賴關(guān)系,生成事務(wù)
5、從倉庫下載所需 RPM 包及依賴包,調(diào)用 rpm 命令完成安裝
6、操作成功,退出安裝;操作失敗,事務(wù)回滾,回到初始狀態(tài)
5.2 示例
[root@rocky9-15 yum.repos.d]# ls
bak Rocky-alyum.repo
[root@rocky9-15 yum.repos.d]# cat Rocky-alyum.repo # 1、配置阿里yum源
[baseos-aliyun] # 軟件最小運(yùn)行需要的源
name=Rocky Linux $releasever - Base - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[appstream-aliyun] # 軟件用戶級(jí)別
name=Rocky Linux $releasever - AppStream - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/AppStream/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[extras-aliyun] # 擴(kuò)展的軟件包
name=Rocky Linux $releasever - Extras - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/extras/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[root@rocky9-15 yum.repos.d]# yum install mysql
Rocky Linux 9 - Base - Aliyun 4.4 MB/s | 2.3 MB 00:00
Rocky Linux 9 - AppStream - Aliyun 6.6 MB/s | 8.4 MB 00:01
Rocky Linux 9 - Extras - Aliyun 47 kB/s | 16 kB 00:00
# 解析repo文件和下載文件元數(shù)據(jù)
依賴關(guān)系解決。
=============================================================================================================================================================
軟件包 架構(gòu) 版本 倉庫 大小
=============================================================================================================================================================
安裝:
mysql x86_64 8.0.41-2.el9_5 appstream-aliyun 2.8 M
安裝依賴關(guān)系:
mariadb-connector-c-config noarch 3.2.6-1.el9_0 appstream-aliyun 9.8 k
mysql-common x86_64 8.0.41-2.el9_5 appstream-aliyun 68 k
事務(wù)概要
=============================================================================================================================================================
安裝 3 軟件包
# 分析依賴,下載文件
總下載:2.9 M
安裝大小:60 M
確定嗎?[y/N]: y
下載軟件包:
(1/3): mariadb-connector-c-config-3.2.6-1.el9_0.noarch.rpm 53 kB/s | 9.8 kB 00:00
(2/3): mysql-common-8.0.41-2.el9_5.x86_64.rpm 245 kB/s | 68 kB 00:00
(3/3): mysql-8.0.41-2.el9_5.x86_64.rpm 4.9 MB/s | 2.8 MB 00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------
總計(jì) 4.9 MB/s | 2.9 MB 00:00
運(yùn)行事務(wù)檢查
事務(wù)檢查成功。
運(yùn)行事務(wù)測(cè)試
事務(wù)測(cè)試成功。
運(yùn)行事務(wù)
準(zhǔn)備中 : 1/1
安裝 : mariadb-connector-c-config-3.2.6-1.el9_0.noarch 1/3
安裝 : mysql-common-8.0.41-2.el9_5.x86_64 2/3
安裝 : mysql-8.0.41-2.el9_5.x86_64 3/3
運(yùn)行腳本: mysql-8.0.41-2.el9_5.x86_64 3/3
驗(yàn)證 : mariadb-connector-c-config-3.2.6-1.el9_0.noarch 1/3
驗(yàn)證 : mysql-common-8.0.41-2.el9_5.x86_64 2/3
驗(yàn)證 : mysql-8.0.41-2.el9_5.x86_64 3/3
已安裝:
mariadb-connector-c-config-3.2.6-1.el9_0.noarch mysql-8.0.41-2.el9_5.x86_64 mysql-common-8.0.41-2.el9_5.x86_64
完畢!
下載好的元數(shù)據(jù)文件在/var/cache/dnf/ 下

5.3 配置yum私有倉庫
1、選擇一臺(tái)主機(jī)作為服務(wù)器,為選擇10.0.0.15作為服務(wù)器

2、下載http服務(wù)并且啟動(dòng)

3、創(chuàng)建本地倉庫
使用/var/www/html 作為本地倉庫

瀏覽器訪問成功,倉庫配置完成

4、在客戶端配置repo文件

生產(chǎn)bendi.repo ,分別配置三個(gè)yum源
5、下載元數(shù)據(jù),測(cè)試是否可以安裝軟件

可以正常下載,完成配置
6. 簡(jiǎn)要總結(jié)apt的工作原理
1、?配置源列表?
讀取 /etc/apt/sources.list 定義軟件源地址(官方/鏡像)
2、?同步元數(shù)據(jù)
apt update下載倉庫的Packages.gz(包索引)和 Release(簽名文件)到本地緩存 /var/lib/apt/lists/
驗(yàn)證 Release 文件的 GPG 簽名,確保數(shù)據(jù)完整性
3、?依賴解析
apt install 時(shí)通過本地緩存的索引分析軟件包依賴關(guān)系樹,自動(dòng)解決沖突
4、下載與安裝
從倉庫拉取 .deb 文件至 /var/cache/apt/archives/,校驗(yàn)后解壓安裝到系統(tǒng)目錄
自動(dòng)處理依賴包的下載和配置更新
5、?升級(jí)與維護(hù)
apt upgrade 比對(duì)版本批量更新,apt clean 清理舊緩存,autoremove 移除孤立依賴
7. 編譯安裝課程演示的軟件進(jìn)行步驟總結(jié)
1、準(zhǔn)備編譯環(huán)境,安裝編譯器等
配置編譯環(huán)境,確保后面下載的源碼包能成功編譯
yum install gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel
# 安裝編譯器
2、獲取項(xiàng)目源代碼文件和解壓軟件包
從網(wǎng)絡(luò)上選擇我們需要的源代碼文件,解壓出來進(jìn)行配置
3、編譯安裝軟件
3.1 confugre 配置軟件
在這一步我們可以定制我們所安裝的軟件一些的配置,如安裝路徑等等


執(zhí)行后生產(chǎn)Makefile 文件(軟件安裝的配置文件)
3.2 進(jìn)行編譯
這一步的執(zhí)行是基于上一步生成的makefile文件的,如果沒有這個(gè)文件,進(jìn)行make編譯的時(shí)候會(huì)報(bào)錯(cuò)

3.3 安裝軟件
可以看到執(zhí)行make install之后,系統(tǒng)自動(dòng)執(zhí)行了很多shell命令去安裝我們的軟件

4、添加環(huán)境變量
由于我們是自己手動(dòng)安裝的軟件,需要手動(dòng)添加環(huán)境變量

我們手動(dòng)安裝的軟件是不能通過systemctl管理包進(jìn)行管理的

5、測(cè)試軟件正常使用


關(guān)閉nginx


8. 總結(jié)文件時(shí)間戳的用法
8.1 時(shí)間戳類型
| 類型 | 全稱 | 觸發(fā)條件 | 查看命令 |
|---|---|---|---|
atime |
Access Time | 文件內(nèi)容被讀取(如 cat、less) |
stat filename |
mtime |
Modify Time | 文件內(nèi)容被修改(如 vim 保存) |
ls -l filename |
ctime |
Change Time | 文件元數(shù)據(jù)變更(如權(quán)限、所有者通過 chmod、chown 修改) |
stat filename |
8.2查看時(shí)間戳
?stat 命令?:顯示完整時(shí)間戳(atime、mtime、ctime)

ls 命令
ls -l:默認(rèn)顯示mtime3ls -lc:顯示ctimels -lu:顯示atime
8.3 應(yīng)用場(chǎng)景
- atime
- 分析文件訪問頻率(如日志清理)
- mtime
- 判斷文件是否需要重新編譯
- ctime
- 審計(jì)文件元數(shù)據(jù)變更(如權(quán)限修改記錄)
8.4 示例
[root@rocky9-15 week2]# touch test #創(chuàng)建文件
[root@rocky9-15 week2]# stat test # 文件初始狀態(tài)
文件:test
大小:0 塊:0 IO 塊:4096 普通空文件
設(shè)備:fd00h/64768d Inode:68916712 硬鏈接:1
權(quán)限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
環(huán)境:unconfined_u:object_r:default_t:s0
最近訪問:2025-05-06 23:59:00.028160942 +0800
最近更改:2025-05-06 23:59:00.028160942 +0800
最近改動(dòng):2025-05-06 23:59:00.028160942 +0800
創(chuàng)建時(shí)間:2025-05-06 23:59:00.028160942 +0800
[root@rocky9-15 week2]# vim test # vim訪問文件并且保存
[root@rocky9-15 week2]# stat test # ctime,mtime,atime都改變了
文件:test
大小:12 塊:8 IO 塊:4096 普通文件
設(shè)備:fd00h/64768d Inode:68916731 硬鏈接:1
權(quán)限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
環(huán)境:unconfined_u:object_r:default_t:s0
最近訪問:2025-05-07 00:01:06.492290051 +0800
最近更改:2025-05-07 00:01:06.492290051 +0800
最近改動(dòng):2025-05-07 00:01:06.493290052 +0800
創(chuàng)建時(shí)間:2025-05-07 00:01:06.492290051 +0800
9. 總結(jié)find和xargs的用法
9.1 find用法
主要功能:實(shí)時(shí)查找文件
常用選項(xiàng)
-
-name:按文件名匹配,區(qū)分大小寫。支持使用glob,如:*, ?, [], [^],通配符要加雙引號(hào)引起來
[root@rocky9-15 ~]# find / -name ?.txt # 在系統(tǒng)中查詢單字符的txt文件 /test/cdx/1.txt -
-type:按文件類型搜索。常用類型包括f(普通文件)、d(目錄)、l(符號(hào)鏈接)等。
![image-20250508212430315]()
-
-size:按文件大小搜索。單位可以是c(字節(jié))、k(千字節(jié))、M(兆字節(jié))、G(千兆字節(jié))等。例如,-size +10M查找大于10MB的文件
[root@rocky9-15 ~]# find /homework/ -size +1M -exec du -h {} \; # 查詢文件大小大于1M的文件,+代表大于,-是小于,不寫就是等于 1.1M /homework/week2/nginx-1.23.0.tar.gz 4.0M /homework/week2/nginx-1.23.0/objs/nginx -
-mtime:按天數(shù)查找文件最后修改時(shí)間。
[root@rocky9-15 ~]# find /homework/ -ctime +0.8 # 查找文件修改時(shí)間大于0.8天的文件 /homework/ /homework/week3 /homework/week3/cui.sh /homework/week2/test [root@rocky9-15 ~]# find /homework/ -atime +0.8 # 同理,也可以使用atime查詢 /homework/week3/cui.sh /homework/week2/test -
-user:按文件所有者查找
![image-20250508213438502]()
-
-group:按文件所屬組查找。
![image-20250508213503897]()
-
-perm:按文件權(quán)限查找。
![image-20250508213856262]()
-
-regex pattern: 正則表達(dá)式
[root@rocky9-15 ~]# find -regex ".*\.log$" #查找所有l(wèi)og結(jié)尾的文件 ./.local/share/gvfs-metadata/root-813d4f71.log ./.local/share/gvfs-metadata/home-2652b5e6.log ./.npm/_logs/2025-04-20T14_37_12_924Z-debug-0.log ./.npm/_logs/2025-04-20T14_37_16_888Z-debug-0.log ./.npm/_logs/2025-04-20T14_37_40_504Z-debug-0.log ./.npm/_logs/2025-04-20T14_37_56_423Z-debug-0.log ./.npm/_logs/2025-04-20T14_39_04_941Z-debug-0.log ./.npm/_logs/2025-04-20T14_39_54_010Z-debug-0.log ./.npm/_logs/2025-04-20T14_41_21_208Z-debug-0.log ./myblog/node_modules/nwsapi/dist/lint.log -
結(jié)合-exec
用于對(duì)搜索到的文件執(zhí)行指定的操作,對(duì)每個(gè)匹配的文件?依次執(zhí)行命令?(每處理一個(gè)文件調(diào)用一次命令)
{} 占位符,/;結(jié)尾
[root@rocky9-15 ~]# find /tmp -name "*.tmp" -exec rm {} \; # 刪除所有.tmp文件若需一次性傳遞所有文件給命令,可改用
+替代\![image-20250508222345977]()
9.2 xargs 用法
?xargs 將標(biāo)準(zhǔn)輸入轉(zhuǎn)換為命令行參數(shù),供其他命令調(diào)用;所以xargs一般結(jié)合管道符使用

還可以加些選項(xiàng)進(jìn)行處理
-P <N>:并發(fā)任務(wù)數(shù)(加速處理)-n <N>:每次傳遞的參數(shù)個(gè)數(shù)-0:處理含空格/特殊字符的文件名-I:自定義參數(shù)
9.3 find結(jié)合 xargs用法
find結(jié)合xargs是比較常用的選擇,可以進(jìn)行批量刪除文件,重命名文件等等
1、批量刪除文件

2、批量重命名文件
[root@rocky9-15 xargs]# touch {1..5}txt
[root@rocky9-15 xargs]# ls
1txt 2txt 3txt 4txt 5txt
[root@rocky9-15 xargs]# find ./ -name "*txt" | xargs -I {} mv {} {}bak #將所有txt文件重命名為bak
[root@rocky9-15 xargs]# ls
1txtbak 2txtbak 3txtbak 4txtbak 5txtbak
3、并行執(zhí)行任務(wù)

4、組合多個(gè)命令

10. 總結(jié)幾種壓縮工具的使用方法
10.1、gzip
功能?:高效壓縮單個(gè)文件(文本文件效果最佳),生成 .gz 后綴文件,默認(rèn)刪除源文件
壓縮文件



查看和解壓



10.2、tar
功能?:用于將多個(gè)文件/目錄打包成單個(gè)歸檔文件(.tar),保留原始目錄結(jié)構(gòu)與文件權(quán)限,常與壓縮工具(如 gzip、bzip2)結(jié)合生成 .tar.gz 或 .tar.bz2 文件

壓縮



解壓文件


10.3、zip包
zip 可以實(shí)現(xiàn)打包目錄和多個(gè)文件成一個(gè)文件并壓縮,但可能會(huì)丟失文件屬性信息,如:所有者和組信息
分別來自于 zip 和 unzip 包對(duì)應(yīng)的文件是 .zip 后綴


壓縮文件

查看壓縮文件的內(nèi)容

解壓縮
















浙公網(wǎng)安備 33010602011771號(hào)