夯實基礎系列四:Linux 知識總結
前言
現在很多公司專案部署都使用的是 Linux 伺服器,網際網路公司更是如此。對於大一些的網際網路公司,系統可能會非常複雜,本地無法啟動,一般都會採用專門的開發機給開發人員開發測試使用。我實習期間接觸的專案沒一個可以在本地啟動的,都需要寫好程式碼,把程式碼更新到開發機上,然後編譯部署,並檢視部署過程中是否有錯誤或是檢視訪問這臺機器的日誌。而這些操作,都需要對基本的 Linux 命令熟悉。
今天總結下 Linux 的相關概念和基本操作,如果想了解更多,可以去看看《鳥哥的私房菜》。同時希望大家多動手實踐,這樣理解得更深刻。
概要
Linux 知識總結以下部分內容:Linux 常見概念、Linux 常用命令、vi 操作和一個最簡單的 shell 指令碼。
細節
1. Linux 常見概念
1.1 Linux 與 Windows 的不同
- Linux 嚴格區分大小寫
- Linux 中所有內容以檔案形式儲存,包括硬體。一切內容皆檔案。
- Linux 不靠副檔名區分檔案型別,靠許可權區分檔案型別。帶字尾的檔名是約定俗成,方便管理
- Windows下的程式不能在Linux中安裝和執行
1.2 Linux 採用字元介面有什麼優勢
- 字元介面佔用的系統資源更少
- 字元介面減少了出錯、被攻擊的可能性
1.3 分割槽型別
- 主分割槽:最多隻能有 4 個。
- 擴充套件分割槽
- 最多隻能有 1 個
- 主分割槽加擴充套件分割槽最多有 4 個
- 不能寫入資料,只能包含邏輯分割槽
- 邏輯分割槽
1.4 掛載
- 必須分割槽
- / (根分割槽)
- swap 分割槽(交換分割槽,記憶體 2 倍,不超過 2GB)
- 推薦分割槽
- /boot(啟動分割槽,200 MB)
1.5 常見目錄的作用
- / 根目錄
- /bin 命令儲存目錄(普通使用者就可以讀取的命令)
- /boot 啟動目錄,啟動相關檔案
- /dev 裝置檔案儲存目錄
- /etc 配置檔案儲存目錄
- /home 普通使用者的家目錄
- /lib 系統庫儲存目錄
- /mnt 系統掛載目錄
- /media 掛載目錄
- /root 超級使用者的家目錄
- /tmp 臨時目錄
- /sbin 命令儲存目錄(超級使用者才能使用的目錄)
- /proc 直接寫入記憶體的
- /sys
- /usr 系統軟體資源目錄
- /usr/bin/ 系統命令(普通使用者)
- /usr/sbin/ 系統命令(超級使用者)
- /var 系統相關文件內容
根目錄下的 bin 和 sbin,usr 目錄下的bin 和 sbin,這四個目錄都是用來儲存系統命令的。
proc 和 sys 目錄不能直接操作,這兩個目錄儲存的是記憶體的過載點。
2. Linux 常用命令
2.1 命令基本格式
命令 [選項][引數]
2.2 查詢目錄中內容
ls [選項][檔案或目錄]
選項:
- -a:顯示所有檔案,包括隱藏檔案
- -l:顯示詳細資訊
- -d:檢視目錄屬性
- -h:人性化顯示檔案大小
- -i:顯示 inode
2.3 目錄處理命令
mkdir -p [目錄名]
-p 遞迴建立
命令英文原意:make directories
cd [目錄]
命令英文原意:change directory
- 簡化操作
cd ~ 進入當前使用者的家目錄
cd
cd - 進入上次目錄
cd … 進入上一級目錄
cd . 進入當前目錄
查詢所在目錄位置:pwd
命令英文原意:print working directory
2.4 刪除檔案或目錄
rm -rf [檔案或目錄]
選項:
- -r:刪除目錄
- -f:強制
2.5 複製命令
cp [選項][原始檔或目錄] [目標目錄]
選項:
- -r:複製目錄
- -p:連帶檔案屬性複製
- -d:若原始檔是連結檔案,則複製連結屬性
- -a:相當於 -pdr
2.6 剪下或改名命令
mv [原檔案或目錄][目標目錄]
2.7 連結命令
ln -s [原檔案][目標檔案]
生成連結檔案
選項:-s 建立軟連結
硬連結特徵:
- 擁有相同的i節點和儲存block塊,可以看做是同一個檔案
- 可通過i節點識別
- 不能跨分割槽
- 不能針對目錄使用
軟連結特徵:
- 類似 Windows 快捷方式
- 軟連結擁有自己的i節點和block塊,但是資料塊中只儲存原檔案的檔名和i節點號,並沒有實際的檔案資料
- lrwxrwxrwx表示軟連結,軟連結檔案許可權都為rwxrwxrwx
- 修改任意檔案,另一個都改變
- 刪除原檔案,軟連結不能使用
- 軟連結如果目標檔案和原始檔不在同一目錄下,原始檔必須寫絕對路徑
2.8 檔案搜尋命令
locate 檔名
在後臺數據庫中按檔名搜尋,搜尋速度更快
/var/lib/mlocate
locate 命令所搜尋的後臺資料庫
updatedb
更新資料庫。預設一天一更新。快。缺點:只能按檔名來搜尋
find [搜尋範圍][搜尋條件]
搜尋檔案
find / -name install.log
避免大範圍搜尋,會非常耗費系統資源
find 是在系統當中搜尋符合條件的檔名。如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配。
* 匹配任意內容
? 匹配任意一個字元
[] 匹配任意一箇中括號內的字元
find /root -iname install.log
不區分大小寫
find /root -user root
按照所有者搜尋
find /root -nouser
查詢沒有所有者的檔案
find /var/log -mtime +10
查詢10天前修改的檔案
find . -size 25k
查詢檔案大小是 25KB 的檔案
find . -inum 262422
查詢i結點是 262422 的檔案
2.9 搜尋命令的命令
whereis 命令名
搜尋命令所在路徑及幫助文件所在位置
選項:
- -b:只查詢可執行檔案
- -m:只查詢幫助檔案
which 命令能看到目錄和別名
2.10 搜尋字串命令
grep [選項] 字串 檔名
在檔案當中匹配符合條件的字串
選項:
- -i:忽略大小寫
- -v:排除指定字串
2.11 幫助命令
man 命令
命令 --help
help shell內部命令
info 命令
2.12 壓縮命令
zip 格式壓縮
zip 壓縮檔名 原始檔
壓縮檔案
zip -r 壓縮檔名 源目錄
壓縮目錄
zip格式解壓縮
unzip 壓縮檔案
gz 格式壓縮
gzip 原始檔
壓縮為.gz 格式的壓縮檔案,原始檔會消失
gzip -c 原始檔 > 壓縮檔案
壓縮為.gz 格式,原始檔保留
gzip -r 目錄
壓縮目錄下所有的子檔案,但是不能壓縮目錄
gz 格式解壓縮
gzip -d 壓縮檔案
解壓縮檔案
gunzip 壓縮檔案
解壓縮檔案
bz2 格式壓縮
bzip2 原始檔
壓縮為.bz2格式,不保留原始檔
bzip2 -k 原始檔
壓縮之後保留原始檔
bzip2命令不能壓縮目錄
打包命令tar
tar -cvf 打包檔名 原始檔
解打包命令
tar -xvf 打包檔名
.tar.gz壓縮格式
其實.tar.gz 格式是先打包為.tar格式,再壓縮為.gz格式
tar -zcvf 壓縮包名.tar.gz 原始檔
.tar.gz 解壓縮
tar -zxvf 壓縮包名.tar.gz
.tar.bz2壓縮格式
tar -jcvf 壓縮包名.tar.bz2 原始檔
.tar.bz2 解壓縮
tar -jxvf 壓縮包名.tar.bz2
2.13 關機命令
shutdown [選項] 時間
選項:
- -c:取消前一個關機命令
- -h:關機
- -r:重啟
halt
poweroff
init 0
2.14 重啟
reboot
init 6
2.15 系統執行級別
- 0:關機
- 1:單使用者
- 2:不完全多使用者,不含NFS服務
- 3:完全多使用者
- 4:未分配
- 5:圖形介面
- 6:重啟
cat /etc/inittab
修改系統預設執行級別
runlevel
查詢系統執行級別
logout
退出登入
2.16 掛載命令
- 查詢與自動掛載
mount
查詢系統中已經掛載的裝置
mount -a
依據配置檔案/etc/fstab 的內容,自動掛載
- 掛載命令格式
mount [-t 檔案系統][-o 特殊選項] 裝置檔名 掛載點
- 掛載光碟
mkdir /mnt/cdrom
建立掛載點
mount -t iso9660 /dev/cdrom /mnt/cdrom/
掛載光碟
- 解除安裝命令
umount 裝置檔名或掛載點
umount /mnt/cdrom
2.17 檢視登入使用者資訊
w 使用者名稱
命令輸出:
- USER:登入的使用者名稱
- TTY:登入終端
- FROM:從哪個IP地址登入
- [email protected]:登入時間
- IDLE:使用者閒置時間
- JCPU:和該終端連線的所有程序佔用的時間
- PCPU:當前程序所佔用的時間
- WHAT:當前正在執行的命令
who 使用者名稱
- 查詢當前登入和過去登入的使用者資訊
last
- 檢視所有使用者的最後一次登入時間
lastlog
2.18 歷史命令
history [選項][歷史命令儲存檔案]
選項
- -c:清空歷史命令
- -w:把快取中的歷史命令寫入歷史命令儲存檔案 ~/.bash_history
歷史命令預設會儲存 1000 條,可以在環境變數配置檔案 /etc/profile 中進行修改
2.19 統計
wc [選項][檔名]
選項
- -c:統計位元組數
- -w:統計單詞數
- -l:統計行數
2.20 管道符
分頁檢視輸出內容
ls -l /etc | more
netstat -an | grep ESTABLISHED
2.21 使用者和使用者組
- 使用者:使用作業系統的人
- 使用者組:具有相同系統許可權的一組使用者
- /etc/group:儲存當前系統中所有使用者組資訊
- 組名稱
- 組密碼佔位符
- 組編號
- 組中使用者名稱列表
- /etc/gshadow:儲存當前系統中使用者組的密碼資訊
- 組名稱
- 組密碼
- 組管理者
- 組中使用者名稱列表
- /etc/passwd:儲存當前系統中所有使用者的資訊
- 使用者名稱
- 密碼佔位符
- 使用者編號
- 使用者組編號
- 使用者註釋資訊
- 使用者主目錄
- shell 型別
- /etc/shadow 儲存當前系統中所有使用者的密碼資訊
- 使用者名稱
- 密碼
3. vi 操作
3.1 操作模式
- Command Mode:命令模式
- Insert Mode:輸入模式
- Last Line Mode:底行模式
3.2 常用指令
vim + abc
開啟檔案並把游標定位到最後一行
vim +2 abc
第二行
vim +/xxx abc
跳到指定字串第一次出現的地方
同時開啟多個檔案 可用n N prev來切換
3.3 底行模式常用指令
- :w
- 儲存檔案,但不退出vi
- :q
- 退出vi
- :!
- 強制執行
- /xxx
- 向下查詢, 按n查詢下一個, N查詢上一個,這個跟less命令的查詢使用方式是一樣的
- ?xxx
- 往前查詢, 按n查詢下一個, N查詢上一個
3.4 命令模式常用指令
- h:游標左移
- j:游標下移
- k:游標上移
- l:游標右移
- ctrl+f:向下翻頁
- ctrl+b:向上翻頁
- ctrl+d:向下翻半頁
- ctrl+f:向上翻半頁
- dd:刪除游標所在行
- o:在游標所在處的下方插入一行並切換到輸入模式
- yy:複製游標所在的行
- p:在游標所在行的下方貼上
- P:在游標所在行的上方貼上
3. Shell 基礎
3.1 Shell 是什麼
- 命令列直譯器,可啟動、掛起、停止或編寫程式
- 程式語言,可直接呼叫Linux 系統命令
3.2 輸出命令
echo [選項][輸出內容]
3.3 指令碼編寫
首行
#!/bin/bash
echo “hello world”
賦予執行許可權,直接執行
chmod 755 hello.sh
./hello.sh
通過bash 執行指令碼
bash hello.sh
歡迎關注微信公眾號,技術,思維,心理,帶給你認知的全方位成長。
你的關注,就是對我最大的肯定,我會努力產出的,我們一起成長~
本文由 永倫的小屋 原創。
轉載請註明作者及出處,本文作者為 永倫的小屋。
原文連結:夯實基礎系列四:Linux 知識總結