Linux 平常操做

背景

質量團隊 Linux 平常操做培訓,提高團隊總體 Linux 水平。php

注: 如下全部命令都是在 Centos 操做系統來進行演示。html

幫助命令及工具

詳見: Linux 幫助命令及工具java

用戶和用戶組

命令 說明
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

文件和目錄

文件類型node

文件類型 說明
b 面向塊的設備文件(block-oriented device file)
c 面向字符的設備文件(charcter-oriented device file)
d 目錄(directroy)
f 文件(regular file)
l 符號連接文件(symbolic link)
p 管道文件(pipe)或命名管道文件(named pipe)

命令列表linux

命令 說明
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

權限

權限碼shell

權限 二進制 八進制 描述
--- 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) 全部用戶都有讀、寫、執行權限

命令列表json

命令 說明
chmod 修改文件權限
chown 更改文件屬主,也能夠同時更改文件屬組
chgrp 更改文件屬組
umask 權限掩碼

umask

詳見:linux知識點系列之 umaskbash

權限經常使用命令

# 修改文件權限
$ 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、bz二、tar.bz二、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

詳見: linux 下強大的 JSON 解析命令 jq

微信公衆號:daodaotest

相關文章
相關標籤/搜索