Linux 日常操作

背景

質(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容