Linux 日常操作
阿新 • • 發佈:2020-08-27
背景
質量團隊 Linux 日常操作培訓,提升團隊整體 Linux 水平。
注: 以下所有命令都是在 Centos
作業系統來進行演示。
幫助命令及工具
詳見: Linux 幫助命令及工具
使用者和使用者組
命令 | 說明 |
---|---|
useradd |
建立一個新使用者或更新預設新使用者資訊 |
usermod |
修改一個使用者賬戶 |
userdel |
刪除使用者賬戶和相關檔案 |
passwd |
修改使用者密碼 |
chage |
更改使用者密碼過期資訊 |
id |
顯示真實和有效的 UID 和 GID |
su |
切換使用者 |
sudo |
以系統管理者身份執行指令 |
w |
顯示已經登入的使用者以及他們在做什麼 |
who |
顯示已經登入的使用者 |
who am i |
顯示實際使用者 |
whoami |
顯示有效使用者 |
groupadd |
建立一個新組 |
groupmod |
修改組資訊 |
groupdel |
刪除一個組 |
gpasswd |
將使用者加入或刪除組 |
newgrp |
切換使用者組 |
newusers |
批量更新和建立新使用者 |
chpasswd |
批量更新密碼 |
使用者和組常用命令
# 建立組 $ groupadd daodaotest2 # 修改組名 $ groupmod -n daodaotest daodaotest2 # 建立使用者 $ useradd daodaotest # 指定引數建立使用者,-u uid;-g 使用者組名;-G 附加組;-d 主目錄;-c 使用者描述;-s shell $ useradd -u 550 -g daodaotest -G root -d /home/daodaotest -c "test user" -s /bin/bash daodaotest # 修改使用者資訊 $ usermod -c "update test user" daodaotest # 檢視使用者和組資訊 $ id daodaotest uid=550(daodaotest) gid=1009(daodaotest) 組=1009(daodaotest),0(root) # 設定使用者密碼 $ passwd daodaotest # 檢視使用者密碼 $ passwd -S daodaotest 或 $ chage -l daodaotest # 僅切換使用者 $ su daodaotest # 切換使用者,並同時切換環境變數 $ su - daodaotest # 以 root 身份安裝軟體 $ sudo yum install jq -y # 檢視當前有效使用者 $ whoami # 檢視當前實際使用者 $ who am i # 退出 $ exit # 刪除使用者,強制刪除並刪除與使用者的相關檔案(home、郵件等) $ userdel -rf daodaotest # 刪除組 $ groupdel daodaotest
使用者和組相關檔案
# Linux 使用者檔案: $ cat /etc/passwd # 使用者名稱:口令:使用者標識號:組標識號:註釋性描述:主目錄:預設 Shell pe:x:1001:1001::/home/pe:/bin/bash # Linux 使用者影子檔案 $ cat /etc/shadow # 使用者名稱:加密密碼:最後一次修改時間:最小修改時間間隔:密碼有效期:密碼需要變更前的警告天數:密碼過期後的寬限時間:賬號失效時間:保留欄位 pe:$6$rounds=656000$qX8tIa/2E34tao1V$6xKEJc9pGhY/lqLFKPuzqt0Kd8nROPy3RdGS4a7HyCN.upgPfYZ.eF453P6.Y4u0GifVui8KdMPW4NdjhW1cn0:18239:0:99999:7::: # Linux 使用者組檔案 $ cat /etc/group # 組名:口令:組標識號:組使用者列表 pe:x:1001:peftp,ruiftp,hx # Linux 組影子檔案 $ cat /etc/gshadow # 組名:加密密碼:組管理員:組附加使用者列表 pe:!::peftp,ruiftp,hx
檔案和目錄
檔案型別
檔案型別 | 說明 |
---|---|
b | 面向塊的裝置檔案(block-oriented device file) |
c | 面向字元的裝置檔案(charcter-oriented device file) |
d | 目錄(directroy) |
f | 檔案(regular file) |
l | 符號連結檔案(symbolic link) |
p | 管道檔案(pipe)或命名管道檔案(named pipe) |
命令列表
命令 | 說明 |
---|---|
ls |
列目錄內容 |
cd |
改變工作目錄 |
pwd |
返回當前的工作目錄 |
mkdir |
建立目錄 |
rmdir |
刪除目錄 |
touch |
建立新檔案、修改檔案許可權和時間屬性 |
file |
檢視檔案型別 |
cp |
複製檔案和目錄 |
md5sum |
獲取 md5 值 |
diff |
比較檔案 |
mv |
移動 (改名) 檔案 |
rm |
移除檔案或者目錄 |
tree |
樹狀圖列出目錄 |
cat |
從第一行開始檢視文字內容 |
tac |
與 cat 相反,從最後一行開始檢視文字內容 |
more |
按頁顯示文字內容 |
less |
與 more 類似,功能跟搶到,提供翻頁、跳轉、查詢等命令 |
nl |
新增行號顯示出內容 |
head |
檢視檔案的前面 N 行,預設為 10 行 |
tail |
檢視檔案的後面 N 行,預設為 10 行 |
wc |
統計行 |
cut |
擷取文字 |
split |
切割檔案 |
檔案和目錄常用命令
# 長資料格式列出所有目錄,並按時間排序
$ ls -lat
# 長資料格式列出所有目錄,並按時間反序排序
$ ls -lart
# 長資料格式列出所有目錄,並按大小反序排序
$ ls -larS
# 進入 home 目錄
$ cd ~
或
$ cd
# 進入上一次工作目錄
$ cd -
# 進入上層目錄
$ cd ..
# 顯示當前目錄
$ pwd
# 檢視軟連結的實際路徑
$ pwd -P
# 遞迴建立目錄
$ mkdir -p daodaotest/test
# 遞迴刪除目錄
$ rmdir -p daodaotest/test
# 建立文字
$ touch 1.txt
# 檢視檔案型別
$ file 1.txt
# 複製檔案
$ cp 1.txt 2.txt
# 檢視檔案 md5
$ md5sum 1.txt 2.txt
# 比較文字
$ diff 1.txt 2.txt
# 遞迴複製目錄
$ cp -r daodaotest daodaotest2
# 修改檔名稱
$ mv daodaotest2 daodaotest22
# 移動檔案或目錄
$ mv 2.txt daodaotest22
# 刪除檔案
$ rm 2.txt
# 強制遞迴刪除
$ rm -rf daodaotest
# 顯示樹狀目錄和檔案
$ tree .
# 僅顯示樹狀目錄
$ tree -d .
# 顯示指定層級目錄和問題
$ tree -L 2 .
# 檢視文字內容
$ cat /etc/passwd
$ more /etc/passwd
$ less /etc/passwd
$ nl /etc/passwd
# 與 cat 相反,從最後一行開始檢視文字內容
$ tac /etc/passwd
# 統計行數
$ ls -l | wc -l
$ cat /etc/passwd | wc -l
# 檢視前幾行
$ head -5 /etc/passwd
# 動態檢視文字內容
$ tail -f /var/log/messages
顯示部分行內容
詳見:Linux 列印文字部分行內容(前幾行,指定行,中間幾行,跨行,奇偶行,後幾行,最後一行,匹配行)
查詢
命令 | 說明 |
---|---|
which |
在 PATH 路徑中查詢命令位置 |
whereis |
程式名查詢,只搜尋二進位制(-b),man 檔案(-m),原始碼檔案(-s),預設返回所有 |
locate |
從資料庫中 /var/lib/mlocate/mlocate.db 查詢檔案,預設 |
find |
從磁碟中查詢檔案 |
grep |
查詢檔案中符合條件的字串 |
查詢常用命令
# 操作 grep 命令
$ which grep
alias grep='grep --color=auto'
/usr/bin/grep
$ whereis grep
grep: /usr/bin/grep /usr/share/man/man1/grep.1.gz /usr/share/man/man1p/grep.1p.gz
$ locate /bin/grep
/usr/bin/grep
# 查詢所有 .sh 結尾的檔案
$ find . -name "*.sh"
# 查詢當前路徑下的所有目錄
$ find . -type d
# 查詢當前路徑下的所有檔案
$ find . -type f
# 查詢當前路徑下的所有檔案,並列出來
$ find . -type f -exec ls -l {} \
# 查詢7天前的以 .log 結果的檔案,確認之後刪除
$ find . -name "*.log" -mtime +7 -ok rm {} \;
# 查詢關鍵字
$ grep root /etc/passwd
# 正則表示式查詢
$ grep "/.*sh" /etc/passwd
# 遞迴(-r) 查詢目錄下的所有檔案
$ grep -r LANG /etc
# 遞迴(-r) 查詢目錄下的所有檔案,排除指定目錄和檔案
$ grep -r --exclude-dir={yum,ssh,profile.d,rc.d,ansible} --exclude=*.conf LANG /etc
# 查詢關鍵字,並列印前(-B),後(-A),前後(-C)各多少行
$ grep root -C 1 /etc/passwd
# 不區分大小寫(-i)查詢關鍵字,並列印行號(-n)
$ grep -i ROOT -n /etc/passwd
# 反向選擇,輸出沒有匹配的行
$ grep -v root /etc/passwd
許可權
許可權碼
許可權 | 二進位制 | 八進位制 | 描述 |
---|---|---|---|
--- | 000 | 0 | 無許可權 |
--x | 001 | 1 | 只有執行許可權 |
-w- | 010 | 2 | 只有寫入許可權 |
-wx | 011 | 3 | 寫和執行許可權 |
r-- | 100 | 4 | 讀許可權 |
r-x | 101 | 5 | 讀取和執行的許可權 |
rw- | 110 | 6 | 讀取的寫入的許可權 |
rwx | 111 | 7 | 所有許可權 |
常見許可權表
許可權 | 說明 |
---|---|
-rw------- (600) | 只有擁有者有讀寫許可權 |
-rw-r--r-- (644) | 只有擁有者有讀寫許可權;而屬組使用者和其他使用者只有讀許可權 |
-rwx------ (700) | 只有擁有者有讀、寫、執行許可權 |
-rwxr-xr-x (755) | 擁有者有讀、寫、執行許可權;而屬組使用者和其他使用者只有讀、執行許可權 |
-rwx--x--x (711) | 擁有者有讀、寫、執行許可權;而屬組使用者和其他使用者只有執行許可權 |
-rw-rw-rw- (666) | 所有使用者都有檔案讀、寫許可權 |
-rwxrwxrwx (777) | 所有使用者都有讀、寫、執行許可權 |
命令列表
命令 | 說明 |
---|---|
chmod |
修改檔案許可權 |
chown |
更改檔案屬主,也可以同時更改檔案屬組 |
chgrp |
更改檔案屬組 |
umask |
許可權掩碼 |
umask
許可權常用命令
# 修改檔案許可權
$ chmod 755 test.txt
$ chmod +rw test.txt
# 修改檔案許可權,遞迴(-R)修改
$ chmod -R 755 /tmp/daodaotest
# 修改檔案屬主使用者和屬組
$ chown jlh.jlh test.txt
# 修改檔案屬組使用者
$ chgrp jlh test.txt
程序
命令 | 說明 |
---|---|
top |
顯示當前系統正在執行的程序的相關資訊 |
ps |
檢視程序瞬時狀態 |
kill |
殺死程序 |
killall |
殺死指定名稱的所有程序 |
# 顯示當前程序情況,輸入 h 檢視幫助
$ top
# 檢視 java 程序
$ ps -ef | grep java
# 強制 kill 掉程序
$ kill -9 <pid>
# kill 所有程序
$ killall -9 php-fpm
Linux 查詢應用程序號、埠、檔案(知道其中之一查詢其他)
詳見: Linux 查詢應用程序號、埠、檔案(知道其中之一查詢其他)
壓縮解壓
Linux 常見的壓縮包格式:tar、gz、tar.gz、bz2、tar.bz2、zip
壓縮率一般來說:
tar.bz2 > tar.gz > zip > tar
命令 | 說明 |
---|---|
tar |
tar、tar.gz 壓縮解壓 |
zip |
zip 壓縮 |
unzip |
zip 解壓 |
gzip |
gz 壓縮 |
gunzip |
gz 解壓 |
tar
tar 是最常用的解壓縮命令。
引數說明:
-c 建立新的壓縮檔案
-r 新增檔案到已經壓縮的檔案
-u 新增改變了和現有的檔案到已經存在的壓縮檔案
-x 從壓縮的檔案中提取檔案
-t 顯示壓縮檔案的內容
-z 支援gzip解壓檔案
-j 支援bzip2解壓檔案
-v 顯示操作過程
-k 保留原始檔不覆蓋
-C 切換到指定目錄
-f 指定壓縮檔案
--delete 刪除包中檔案
--strip-components 去除目錄
--add-file 向包中新增檔案
# 歸檔 tar 包,不壓縮
$ tar -cvf test.tar test1.log test2.log
$ tar -
# 僅檢視包中檔案,不解壓
$ tar -tvf test.tar
# 歸檔並壓縮為 tar.gz、tar.bz2
$ tar -zcvf test.tar.gz test1.log test2.log
$ tar -jcvf test.tar.bz2 test1.log test2.log
# 解壓
$ tar -xvf test.tar
$ tar -zxvf test.tar.gz
$ tar -jxvf test.tar.bz2
# 解壓到指定目錄
$ tar -xvf test.tar -C dir
zip & unzip
引數說明:
# zip
-d 從壓縮檔案內刪除指定的檔案。
-f 此引數的效果和指定"-u"引數類似,但不僅更新既有檔案,如果某些檔案原本不存在於壓縮檔案內,使用本引數會一併將其加入壓縮檔案中。
-j 只儲存檔名稱及其內容,而不存放任何目錄名稱。
-r 遞迴處理,將指定目錄下的所有檔案和子目錄一併處理。
-u 更換較新的檔案到壓縮檔案內。
-v 顯示指令執行過程或顯示版本資訊。
-y 直接儲存符號連線,而非該連線所指向的檔案,本引數僅在UNIX之類的系統下有效。
- <壓縮效率> 壓縮效率是一個介於1-9的數值。
# unzip
-l 顯示壓縮檔案內所包含的檔案
-j 只儲存檔名稱及其內容,而不存放任何目錄名稱。
-o 以壓縮檔案內擁有最新更改時間的檔案為準,將壓縮檔案的更改時間設成和該
-v 顯示指令執行過程或顯示版本資訊。
-d 指定解壓目錄,目錄不存在會建立
# 打包 test 目錄下的檔案
$ zip -r test.zip test/
# 打包 test 目錄下檔案,且壓縮包不帶 test 目錄
$ zip -rj test.zip test/
# 指定壓縮比率,數值(1-9)越大,壓縮率越高,耗時越長
$ zip -r8 test.zip test/*
# 解壓 zip 包
$ unzip test.zip -d dir
# 檢視壓縮包中的檔案
$ unzip -l test.zip
# 檢視更多資訊,例如crc校驗資訊等
$ unzip -v test.zip
# 解壓jar包
$ unzip -o java.jar -d dir
gzip & unzip
引數說明:
-k 保留原始檔
-d 解開壓縮檔案
-r 遞迴處理,將指定目錄下的所有檔案及子目錄一併處理
-v 顯示指令執行過程
# 壓縮
$ gzip test1.log
# 解壓
$ gunzip test1.log
磁碟
命令 | 說明 |
---|---|
df |
報告檔案系統磁碟空間的使用情況 |
du |
報告磁碟空間使用情況 |
fdisk |
Linux分割槽表操作工具軟體 |
磁碟常用命令
# 檢視磁碟使用情況,易讀方式
$ df -h
# 檢視 inode 使用情況
$ df -i
# 檢視磁碟佔用空間,易讀方式
$ du -h
# 檢視本目錄磁碟佔用總大小
$ du -sh
# 檢視指定層級目錄的大小
$ du -h --max-depth=2 .
$ du -h -d 2 .
# 檢視系統硬碟
$ fdisk -l
json 解析命令 jq
微信公眾號:daodaotest