前言
現在很多公司項目部署都使用的是 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 文件系統 設備文件名 掛載點
- 掛載光盤
mkdir /mnt/cdrom
建立掛載點
mount -t iso9660 /dev/cdrom /mnt/cdrom/
掛載光盤
- 卸載命令
umount 設備文件名或掛載點
umount /mnt/cdrom
2.17 查看登錄用戶信息
w 用戶名
命令輸出:
- USER:登錄的用戶名
- TTY:登錄終端
- FROM:從哪個IP地址登錄
- LOGIN@:登錄時間
- 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
閱讀更多 白色蝸牛 的文章