背景
質(zhì)量團(tuán)隊(duì) Linux 日常操作培訓(xùn),提升團(tuán)隊(duì)整體 Linux 水平。
注: 以下所有命令都是在 Centos 操作系統(tǒng)來(lái)進(jìn)行演示。
幫助命令及工具
詳見(jiàn):Linux 幫助命令及工具
用戶(hù)和用戶(hù)組
| 命令 | 說(shuō)明 |
|---|---|
useradd |
創(chuàng)建一個(gè)新用戶(hù)或更新默認(rèn)新用戶(hù)信息 |
usermod |
修改一個(gè)用戶(hù)賬戶(hù) |
userdel |
刪除用戶(hù)賬戶(hù)和相關(guān)文件 |
passwd |
修改用戶(hù)密碼 |
chage |
更改用戶(hù)密碼過(guò)期信息 |
id |
顯示真實(shí)和有效的 UID 和 GID |
su |
切換用戶(hù) |
sudo |
以系統(tǒng)管理者身份執(zhí)行指令 |
w |
顯示已經(jīng)登錄的用戶(hù)以及他們?cè)谧鍪裁?/td> |
who |
顯示已經(jīng)登錄的用戶(hù) |
who am i |
顯示實(shí)際用戶(hù) |
whoami |
顯示有效用戶(hù) |
groupadd |
創(chuàng)建一個(gè)新組 |
groupmod |
修改組信息 |
groupdel |
刪除一個(gè)組 |
gpasswd |
將用戶(hù)加入或刪除組 |
newgrp |
切換用戶(hù)組 |
newusers |
批量更新和創(chuàng)建新用戶(hù) |
chpasswd |
批量更新密碼 |
用戶(hù)和組常用命令
# 創(chuàng)建組
$ groupadd daodaotest2
# 修改組名
$ groupmod -n daodaotest daodaotest2
# 創(chuàng)建用戶(hù)
$ useradd daodaotest
# 指定參數(shù)創(chuàng)建用戶(hù),-u uid;-g 用戶(hù)組名;-G 附加組;-d 主目錄;-c 用戶(hù)描述;-s shell
$ useradd -u 550 -g daodaotest -G root -d /home/daodaotest -c "test user" -s /bin/bash daodaotest
# 修改用戶(hù)信息
$ usermod -c "update test user" daodaotest
# 查看用戶(hù)和組信息
$ id daodaotest
uid=550(daodaotest) gid=1009(daodaotest) 組=1009(daodaotest),0(root)
# 設(shè)置用戶(hù)密碼
$ passwd daodaotest
# 查看用戶(hù)密碼
$ passwd -S daodaotest
或
$ chage -l daodaotest
# 僅切換用戶(hù)
$ su daodaotest
# 切換用戶(hù),并同時(shí)切換環(huán)境變量
$ su - daodaotest
# 以 root 身份安裝軟件
$ sudo yum install jq -y
# 查看當(dāng)前有效用戶(hù)
$ whoami
# 查看當(dāng)前實(shí)際用戶(hù)
$ who am i
# 退出
$ exit
# 刪除用戶(hù),強(qiáng)制刪除并刪除與用戶(hù)的相關(guān)文件(home、郵件等)
$ userdel -rf daodaotest
# 刪除組
$ groupdel daodaotest
用戶(hù)和組相關(guān)文件
# Linux 用戶(hù)文件:
$ cat /etc/passwd
# 用戶(hù)名:口令:用戶(hù)標(biāo)識(shí)號(hào):組標(biāo)識(shí)號(hào):注釋性描述:主目錄:默認(rèn) Shell
pe:x:1001:1001::/home/pe:/bin/bash
# Linux 用戶(hù)影子文件
$ cat /etc/shadow
# 用戶(hù)名:加密密碼:最后一次修改時(shí)間:最小修改時(shí)間間隔:密碼有效期:密碼需要變更前的警告天數(shù):密碼過(guò)期后的寬限時(shí)間:賬號(hào)失效時(shí)間:保留字段
pe:$6$rounds=656000$qX8tIa/2E34tao1V$6xKEJc9pGhY/lqLFKPuzqt0Kd8nROPy3RdGS4a7HyCN.upgPfYZ.eF453P6.Y4u0GifVui8KdMPW4NdjhW1cn0:18239:0:99999:7:::
# Linux 用戶(hù)組文件
$ cat /etc/group
# 組名:口令:組標(biāo)識(shí)號(hào):組用戶(hù)列表
pe:x:1001:peftp,ruiftp,hx
# Linux 組影子文件
$ cat /etc/gshadow
# 組名:加密密碼:組管理員:組附加用戶(hù)列表
pe:!::peftp,ruiftp,hx
文件和目錄
文件類(lèi)型
| 文件類(lèi)型 | 說(shuō)明 |
|---|---|
| b | 面向塊的設(shè)備文件(block-oriented device file) |
| c | 面向字符的設(shè)備文件(charcter-oriented device file) |
| d | 目錄(directroy) |
| f | 文件(regular file) |
| l | 符號(hào)鏈接文件(symbolic link) |
| p | 管道文件(pipe)或命名管道文件(named pipe) |
命令列表
| 命令 | 說(shuō)明 |
|---|---|
ls |
列目錄內(nèi)容 |
cd |
改變工作目錄 |
pwd |
返回當(dāng)前的工作目錄 |
mkdir |
建立目錄 |
rmdir |
刪除目錄 |
touch |
創(chuàng)建新文件、修改文件權(quán)限和時(shí)間屬性 |
file |
查看文件類(lèi)型 |
cp |
復(fù)制文件和目錄 |
md5sum |
獲取 md5 值 |
diff |
比較文件 |
mv |
移動(dòng) (改名) 文件 |
rm |
移除文件或者目錄 |
tree |
樹(shù)狀圖列出目錄 |
cat |
從第一行開(kāi)始查看文本內(nèi)容 |
tac |
與 cat 相反,從最后一行開(kāi)始查看文本內(nèi)容 |
more |
按頁(yè)顯示文本內(nèi)容 |
less |
與 more 類(lèi)似,功能跟搶到,提供翻頁(yè)、跳轉(zhuǎn)、查找等命令 |
nl |
添加行號(hào)顯示出內(nèi)容 |
head |
查看文件的前面 N 行,默認(rèn)為 10 行 |
tail |
查看文件的后面 N 行,默認(rèn)為 10 行 |
wc |
統(tǒng)計(jì)行 |
cut |
截取文本 |
split |
切割文件 |
文件和目錄常用命令
# 長(zhǎng)數(shù)據(jù)格式列出所有目錄,并按時(shí)間排序
$ ls -lat
# 長(zhǎng)數(shù)據(jù)格式列出所有目錄,并按時(shí)間反序排序
$ ls -lart
# 長(zhǎng)數(shù)據(jù)格式列出所有目錄,并按大小反序排序
$ ls -larS
# 進(jìn)入 home 目錄
$ cd ~
或
$ cd
# 進(jìn)入上一次工作目錄
$ cd -
# 進(jìn)入上層目錄
$ cd ..
# 顯示當(dāng)前目錄
$ pwd
# 查看軟鏈接的實(shí)際路徑
$ pwd -P
# 遞歸創(chuàng)建目錄
$ mkdir -p daodaotest/test
# 遞歸刪除目錄
$ rmdir -p daodaotest/test
# 創(chuàng)建文本
$ touch 1.txt
# 查看文件類(lèi)型
$ file 1.txt
# 復(fù)制文件
$ cp 1.txt 2.txt
# 查看文件 md5
$ md5sum 1.txt 2.txt
# 比較文本
$ diff 1.txt 2.txt
# 遞歸復(fù)制目錄
$ cp -r daodaotest daodaotest2
# 修改文件名稱(chēng)
$ mv daodaotest2 daodaotest22
# 移動(dòng)文件或目錄
$ mv 2.txt daodaotest22
# 刪除文件
$ rm 2.txt
# 強(qiáng)制遞歸刪除
$ rm -rf daodaotest
# 顯示樹(shù)狀目錄和文件
$ tree .
# 僅顯示樹(shù)狀目錄
$ tree -d .
# 顯示指定層級(jí)目錄和問(wèn)題
$ tree -L 2 .
# 查看文本內(nèi)容
$ cat /etc/passwd
$ more /etc/passwd
$ less /etc/passwd
$ nl /etc/passwd
# 與 cat 相反,從最后一行開(kāi)始查看文本內(nèi)容
$ tac /etc/passwd
# 統(tǒng)計(jì)行數(shù)
$ ls -l | wc -l
$ cat /etc/passwd | wc -l
# 查看前幾行
$ head -5 /etc/passwd
# 動(dòng)態(tài)查看文本內(nèi)容
$ tail -f /var/log/messages
顯示部分行內(nèi)容
詳見(jiàn):Linux 打印文本部分行內(nèi)容(前幾行,指定行,中間幾行,跨行,奇偶行,后幾行,最后一行,匹配行)
查找
| 命令 | 說(shuō)明 |
|---|---|
which |
在 PATH 路徑中查找命令位置 |
whereis |
程序名查找,只搜索二進(jìn)制(-b),man 文件(-m),源代碼文件(-s),默認(rèn)返回所有 |
locate |
從數(shù)據(jù)庫(kù)中 /var/lib/mlocate/mlocate.db 查找文件,默認(rèn) |
find |
從磁盤(pán)中查找文件 |
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 結(jié)尾的文件
$ find . -name "*.sh"
# 查找當(dāng)前路徑下的所有目錄
$ find . -type d
# 查找當(dāng)前路徑下的所有文件
$ find . -type f
# 查找當(dāng)前路徑下的所有文件,并列出來(lái)
$ find . -type f -exec ls -l {} \
# 查找7天前的以 .log 結(jié)果的文件,確認(rèn)之后刪除
$ find . -name "*.log" -mtime +7 -ok rm {} \;
# 查找關(guān)鍵字
$ grep root /etc/passwd
# 正則表達(dá)式查找
$ 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
# 查找關(guān)鍵字,并打印前(-B),后(-A),前后(-C)各多少行
$ grep root -C 1 /etc/passwd
# 不區(qū)分大小寫(xiě)(-i)查找關(guān)鍵字,并打印行號(hào)(-n)
$ grep -i ROOT -n /etc/passwd
# 反向選擇,輸出沒(méi)有匹配的行
$ grep -v root /etc/passwd
權(quán)限
權(quán)限碼
| 權(quán)限 | 二進(jìn)制 | 八進(jìn)制 | 描述 |
|---|---|---|---|
| --- | 000 | 0 | 無(wú)權(quán)限 |
| --x | 001 | 1 | 只有執(zhí)行權(quán)限 |
| -w- | 010 | 2 | 只有寫(xiě)入權(quán)限 |
| -wx | 011 | 3 | 寫(xiě)和執(zhí)行權(quán)限 |
| r-- | 100 | 4 | 讀權(quán)限 |
| r-x | 101 | 5 | 讀取和執(zhí)行的權(quán)限 |
| rw- | 110 | 6 | 讀取的寫(xiě)入的權(quán)限 |
| rwx | 111 | 7 | 所有權(quán)限 |
常見(jiàn)權(quán)限表
| 權(quán)限 | 說(shuō)明 |
|---|---|
| -rw------- (600) | 只有擁有者有讀寫(xiě)權(quán)限 |
| -rw-r--r-- (644) | 只有擁有者有讀寫(xiě)權(quán)限;而屬組用戶(hù)和其他用戶(hù)只有讀權(quán)限 |
| -rwx------ (700) | 只有擁有者有讀、寫(xiě)、執(zhí)行權(quán)限 |
| -rwxr-xr-x (755) | 擁有者有讀、寫(xiě)、執(zhí)行權(quán)限;而屬組用戶(hù)和其他用戶(hù)只有讀、執(zhí)行權(quán)限 |
| -rwx--x--x (711) | 擁有者有讀、寫(xiě)、執(zhí)行權(quán)限;而屬組用戶(hù)和其他用戶(hù)只有執(zhí)行權(quán)限 |
| -rw-rw-rw- (666) | 所有用戶(hù)都有文件讀、寫(xiě)權(quán)限 |
| -rwxrwxrwx (777) | 所有用戶(hù)都有讀、寫(xiě)、執(zhí)行權(quán)限 |
命令列表
| 命令 | 說(shuō)明 |
|---|---|
chmod |
修改文件權(quán)限 |
chown |
更改文件屬主,也可以同時(shí)更改文件屬組 |
chgrp |
更改文件屬組 |
umask |
權(quán)限掩碼 |
umask
詳見(jiàn):linux知識(shí)點(diǎn)系列之 umask
權(quán)限常用命令
# 修改文件權(quán)限
$ chmod 755 test.txt
$ chmod +rw test.txt
# 修改文件權(quán)限,遞歸(-R)修改
$ chmod -R 755 /tmp/daodaotest
# 修改文件屬主用戶(hù)和屬組
$ chown jlh.jlh test.txt
# 修改文件屬組用戶(hù)
$ chgrp jlh test.txt
進(jìn)程
| 命令 | 說(shuō)明 |
|---|---|
top |
顯示當(dāng)前系統(tǒng)正在執(zhí)行的進(jìn)程的相關(guān)信息 |
ps |
查看進(jìn)程瞬時(shí)狀態(tài) |
kill |
殺死進(jìn)程 |
killall |
殺死指定名稱(chēng)的所有進(jìn)程 |
# 顯示當(dāng)前進(jìn)程情況,輸入 h 查看幫助
$ top
# 查看 java 進(jìn)程
$ ps -ef | grep java
# 強(qiáng)制 kill 掉進(jìn)程
$ kill -9 <pid>
# kill 所有進(jìn)程
$ killall -9 php-fpm
Linux 查詢(xún)應(yīng)用進(jìn)程號(hào)、端口、文件(知道其中之一查詢(xún)其他)
詳見(jiàn): Linux 查詢(xún)應(yīng)用進(jìn)程號(hào)、端口、文件(知道其中之一查詢(xún)其他)
壓縮解壓
Linux 常見(jiàn)的壓縮包格式:tar、gz、tar.gz、bz2、tar.bz2、zip
壓縮率一般來(lái)說(shuō):
tar.bz2 > tar.gz > zip > tar
| 命令 | 說(shuō)明 |
|---|---|
tar |
tar、tar.gz 壓縮解壓 |
zip |
zip 壓縮 |
unzip |
zip 解壓 |
gzip |
gz 壓縮 |
gunzip |
gz 解壓 |
tar
tar 是最常用的解壓縮命令。
參數(shù)說(shuō)明:
-c 建立新的壓縮文件
-r 添加文件到已經(jīng)壓縮的文件
-u 添加改變了和現(xiàn)有的文件到已經(jīng)存在的壓縮文件
-x 從壓縮的文件中提取文件
-t 顯示壓縮文件的內(nèi)容
-z 支持gzip解壓文件
-j 支持bzip2解壓文件
-v 顯示操作過(guò)程
-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
參數(shù)說(shuō)明:
# zip
-d 從壓縮文件內(nèi)刪除指定的文件。
-f 此參數(shù)的效果和指定"-u"參數(shù)類(lèi)似,但不僅更新既有文件,如果某些文件原本不存在于壓縮文件內(nèi),使用本參數(shù)會(huì)一并將其加入壓縮文件中。
-j 只保存文件名稱(chēng)及其內(nèi)容,而不存放任何目錄名稱(chēng)。
-r 遞歸處理,將指定目錄下的所有文件和子目錄一并處理。
-u 更換較新的文件到壓縮文件內(nèi)。
-v 顯示指令執(zhí)行過(guò)程或顯示版本信息。
-y 直接保存符號(hào)連接,而非該連接所指向的文件,本參數(shù)僅在UNIX之類(lèi)的系統(tǒng)下有效。
- <壓縮效率> 壓縮效率是一個(gè)介于1-9的數(shù)值。
# unzip
-l 顯示壓縮文件內(nèi)所包含的文件
-j 只保存文件名稱(chēng)及其內(nèi)容,而不存放任何目錄名稱(chēng)。
-o 以壓縮文件內(nèi)擁有最新更改時(shí)間的文件為準(zhǔn),將壓縮文件的更改時(shí)間設(shè)成和該
-v 顯示指令執(zhí)行過(guò)程或顯示版本信息。
-d 指定解壓目錄,目錄不存在會(huì)創(chuàng)建
# 打包 test 目錄下的文件
$ zip -r test.zip test/
# 打包 test 目錄下文件,且壓縮包不帶 test 目錄
$ zip -rj test.zip test/
# 指定壓縮比率,數(shù)值(1-9)越大,壓縮率越高,耗時(shí)越長(zhǎng)
$ zip -r8 test.zip test/*
# 解壓 zip 包
$ unzip test.zip -d dir
# 查看壓縮包中的文件
$ unzip -l test.zip
# 查看更多信息,例如crc校驗(yàn)信息等
$ unzip -v test.zip
# 解壓jar包
$ unzip -o java.jar -d dir
gzip & unzip
參數(shù)說(shuō)明:
-k 保留源文件
-d 解開(kāi)壓縮文件
-r 遞歸處理,將指定目錄下的所有文件及子目錄一并處理
-v 顯示指令執(zhí)行過(guò)程
# 壓縮
$ gzip test1.log
# 解壓
$ gunzip test1.log
磁盤(pán)
| 命令 | 說(shuō)明 |
|---|---|
df |
報(bào)告文件系統(tǒng)磁盤(pán)空間的使用情況 |
du |
報(bào)告磁盤(pán)空間使用情況 |
fdisk |
Linux分區(qū)表操作工具軟件 |
磁盤(pán)常用命令
# 查看磁盤(pán)使用情況,易讀方式
$ df -h
# 查看 inode 使用情況
$ df -i
# 查看磁盤(pán)占用空間,易讀方式
$ du -h
# 查看本目錄磁盤(pán)占用總大小
$ du -sh
# 查看指定層級(jí)目錄的大小
$ du -h --max-depth=2 .
$ du -h -d 2 .
# 查看系統(tǒng)硬盤(pán)
$ fdisk -l
json 解析命令 jq
詳見(jiàn): linux 下強(qiáng)大的 JSON 解析命令 jq
微信公眾號(hào):daodaotest