文章目錄
- linux 系統命令總結大全
- 關于作者
- 作者介紹
- 0.IP 地址相關命令
- 0.1 ifconfig 命令 ---顯示網路設備資訊
- 02.ip 命令 ---顯示與操作路由
- 03.dhclient 命令 --- 動態獲取或釋放IP地址
- 04.nmtui ---界面修改網卡地址資訊
- 05.nmcli 命令 --- 設定ip地址
- 1.檔案目錄命令
- 1.1 ls 命令 --顯示目錄下的內容
- 1.2 cd 命令 ---切換目錄命令
- 1.3 cp 命令---復制檔案或目錄
- 1.4 mkdir ---創建目錄
- 1.5 rmdir 命令 --- 洗掉空目錄
- 1.6 tree 命令 ---查看目錄結構
- 1.7 mv 命令 --- 移動或改名檔案
- 1.8 pwd 命令 --- 顯示當前路徑
- 2.文本編輯命令
- 2.1 cat 命令 ---顯示檔案內容
- 2.2 vi/vim 命令 ---修改組態檔
- 2.3 touch 命令 --創建檔案、修改訪問時間
- 2.4 echo 命令 ---輸出命令
- 2.5 rm 命令 ---洗掉命令
- 2.6 tail 命令 ---查看檔案尾部內容
- 2.7 head命令 ---顯示檔案開頭內容
- 2.9 sort 命令 --排序命令
- 2.10 uniq 命名 ---去重
- 2.11 wc 命令 ---用于統計文本、字符(數字、符號、空格、行)
- 2.12 more 顯示文本檔案內容
- 2.13 less命令 --- 分頁顯示內容
- 2.14 stat 命令 -- 查看資料詳細屬性資訊
- 2.15 ln 命令 ---創建連接檔案
- 2.16 dd 命令 --- 模擬創建出指定大小的檔案
- 2.17 chattr 命令 --- 改變檔案屬性
- 3 .修改主機名
- 3.1 hostname 命令 ---查看修改主機名稱
- 3.2 hostnamectl --- 直接修改主機名稱(centos7)
- 4.linux 用戶及權限管理
- 4.1 useradd 命令 --- 創建用戶
- 4.2userdel 命令 ---洗掉用戶
- 4.3 usermod命令 ---修改用戶及組的屬性
- 4.4 groupadd 命令 ---創建用戶組
- 4.5 groupmod 命令 ---修改組名
- 4.6 chown 命令 --修改檔案/目錄屬主、陣列
- 4.7 chmod 命令 ---改變檔案或目錄權限
- 4.8 passwd 命令 ---修改用戶密碼
- 4.9 id /whoami 命令 ---檢查用戶身份
- 4.10 su 命令 ---切換用戶命令
- 4.11 w 命令 ---查看負載資訊/查看系統用戶登錄資訊
- 5.軟體包管理
- 5.1 rpm 命令 ---RPM 軟體包管理器
- 5.2 yum 命令 --- 軟體安裝、卸載
- 5.3 wget 命令 ---檔案下載
- 5.4 which命令 --- 顯示命令檔案所在路徑位置
- 5.5 whereis 命令 ---查看命令所在路徑以及命令相關手冊檔案所在路徑
- 5.6 alias/unalias 命令 ---設定命令別名
- 6.磁盤管理
- 6.1 df 命令 --- 顯示磁盤空間使用情況
- 6.2 fdisk 命令 ---磁盤磁區
- 6.3 lsblk 命令 ---查看系統的磁盤
- 6.4 free 命令 --- 顯示系統記憶體情況
- 6.5 du 命令 ---查看空間
- 7.設備管理
- 7.1 mount 命令 ---檔案系統掛載
- 7.2 umout 命令 ---卸載掛載
- 7.3 lsusb 命令 --- 顯示usb 設備串列
- 8. 網路通訊
- 8.1 ssh命令 --- 安全連接客戶端
- 8.2 netstat 命令 --- 顯示網路狀態
- 8.3 ping 命令 ---測驗主機間網路連通性
- 8.5 nslookup 命令 ---決議IP地址
- 8.6 route 命令 --- 顯示并設定路由
- 9.tar、zip命令 ---壓縮/解壓縮
- 10. 檔案傳輸
- 10.1 curl 命令 ---檔案傳輸工具
- 10.2 scp --- 遠程拷貝檔案
- 11 關機/重啟相關命令
- 11.1 shutdown 命令
- 11.2 init 命令
- 11.3 reboot 命令
- 11.4 poeroff 命令
- 11.5 halt 命令 ---直接關機
- 11.5 exit 命令--- 注銷
- 12 作業系統正則符號
- 12.1 系統特殊符號(路徑、重定向、邏輯、引號)
- 12.2 通配符號(* 、{})
- 12.3 系統正則符號()
- 13 shell 常用命令
- 13.1 find 命令 ---查找和搜索檔案
- 13.2 grep 命令 ---文本過濾
- 13.3 sed 命令 ---流編輯器,實作對文本的增刪改查
- 13.4 awk 命令 --- 指定分隔符,提取行
- 14 系統資源/行程先關命令
- 14.1 ps 命令 --- 查看系統行程資訊
- 14.2 kill命令 --- 洗掉指定行程
- 14.3 systemctl命令 ---管理服務程式的運行狀態
- 14.4 uptime 命令 --- 查看系統負載
- 14.5 vmstat 命令 ---監控CPU
- 14.6 top命令 ---實時監控系統CPU
- 14.7 iostat命令 ---磁盤I/O性能評估
- 14.8 netstat/ss --- 顯示網路埠狀態
- 16.9 firewall-cmd 命令 --- 防火墻相關命令
- 15.其它命令
- 常用快捷方式
- 總結
linux 系統命令總結大全
關于作者
-
作者介紹
📣 博客主頁:作者主頁
📣 簡介:云計算領域優質創作者🏆、學長的it故事 公眾號創作者👱、在校期間參與眾多計算機先關的校賽、省賽、國賽,斬獲系列獎項,2019年考取華為資深工程師、紅帽工程師等系列認證,
📣 關注我:簡歷模板、學習資料、檔案下載、技術支持
前言
? 今天呢,下了很大的決心,準備將linux命令做一個真正的總結、因為之前看了很多linux 命令先關的文章,都不全,所以,博主將這兩年沉淀下來的技術,通過自己的理解,將基礎命令、常用的都整理出來,對初學者或者linux 愛好者都有一定的作用,偶爾可以翻翻,查下基礎命令,
? 后續呢,博主將分享
docker、k8s、kvm、負載均衡、高可用等高級技術,
0.IP 地址相關命令
0.1 ifconfig 命令 —顯示網路設備資訊
-
案例演示
# 啟動/關閉指定網卡 [root@web_server01~]# ifconfig eth1 down [root@web_server01~]# ifconfig eth1 up # 臨時設定ip 地址 [root@web_server01~]# ifconfig eth0 192.168.1.100 [root@web_server01~]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0 [root@web_server01~]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.254 # 洗掉臨時IP 地址 [root@web_server01~]# ifconfig eth0 del 192.168.1.100 netmask 255.255.255.0
02.ip 命令 —顯示與操作路由
-
案例演示
# 用ip命令顯示網路設備的運行狀態: [root@web_server01~]# ip link list #顯示核心路由 [root@web_server01~]# ip route list [root@web_server01~]# ip route show # 查看eht0 網卡資訊(--> ip a) [root@web_server01~]# ip address show eth0
03.dhclient 命令 — 動態獲取或釋放IP地址
-
案例演示
# 在指定網路介面上發出DHCP請求: [root@web_server01~]# dhclient eth0 # 從指定的服務器獲取ip地址 [root@web_server01~]# dhclient -s 10.0.0.7 # 釋放IP地址: [root@web_server01~]# dhclient -r # 停止運行dhclient: [root@web_server01~]# dhclient -x
04.nmtui —界面修改網卡地址資訊
-
案例演示
[root@web_server01~]# nmtui
05.nmcli 命令 — 設定ip地址
-
案例演示
#顯示所有連接的串列: [root@web_server01~]# nmcli con show # 查看介面資訊: [root@web_server01~]#nmcli device show # 定義一個名字為default的新連接,它將使用DHCP通過eth0設備的以太網自動連接 : [root@web_server01~]# nmcli con add con-name "default" type ethernet ifname eth0 #關閉自動連接: [root@web_server01~]# nmcli connection modify "static" connection.autoconnect no # 添加DNS: [root@web_server01~]# nmcli connection modify team0 ipv4.dns 8.8.8.8
1.檔案目錄命令
1.1 ls 命令 --顯示目錄下的內容
-
案例演示
list=ls 查看檔案或目錄是否存在 #檔案或目錄路徑資訊 [root@web_server01~]# ls # 顯示目錄資訊 [root@web_server01~]# ll -d rivers/ drwxr-xr-x 2 root root 6 Sep 11 22:59 rivers/ #查看資料的屬性資訊(-->ll 命令) [root@web_server01~]# ls -l apache-tomcat-9.0.52.tar.gz -rw-r--r-- 1 root root 11524133 Jul 31 12:22 apache-tomcat-9.0.52.tar.gz # 查看目錄中隱藏檔案 [root@web_server01~]# ls -a #將目錄中的資訊按照時間進行排序顯示 [root@web_server01~]# ls -lt #按照時間資訊,進行反向排序 [root@web_server01~]# ls -ltr #顯示的資料資訊大小,以人類可讀方式顯示 [root@web_server01~]# ls -lh total 11M -rw-------. 1 root root 1.7K Aug 23 15:38 anaconda-ks.cfg -rw-r--r-- 1 root root 11M Jul 31 12:22 apache-tomcat-9.0.52.tar.gz drwxr-xr-x 2 root root 6 Sep 11 22:59 rivers
1.2 cd 命令 —切換目錄命令
-
案例演示
# change directory==cd 切換目錄命令 cd /xxx 絕對 cd xxx 相對 cd .. 上一級 cd ../../ 上多級 cd - 回傳上一次所在路徑 cd/cd ~ 回傳到用戶家目錄 [root@web_server01~]# cd /usr/local/ [root@web_server01/usr/local]# cd .. [root@web_server01/usr]# cd ../../ [root@web_server01/]# cd -- [root@web_server01~]# [root@web_server01~]# cd hbs/
1.3 cp 命令—復制檔案或目錄
-
案例演示
# 常用方式 cp 復制檔案或目錄資料到其他目錄中 cp -r 遞回復制目錄資料 \cp 強行覆寫資料 #復制目錄:將rivers目錄移動到/opt目錄 [root@web_server01~]# cp -R rivers/ /opt/ #將檔案test1改名為test2: -f 沒有提示, 或者 \cp [root@linuxcool ~]# cp -f test1 test2 #復制多個檔案:(將1.txt、2.txt、3.txt 復制到/opt/rivers) [root@web_server01~]# touch {1..3}.txt # 創建3個文本 [root@web_server01~]# cp 1.txt 2.txt 3.txt /opt/rivers/ #互動式地將目錄 /opt/rivers/ 中的所有.txt檔案復制到目錄 /root 中: [root@web_server01~]# cp /opt/rivers/*.txt /root/ cp: overwrite ‘/root/1.txt’? y cp: overwrite ‘/root/2.txt’? y cp: overwrite ‘/root/3.txt’? y 這里沒有加引數 f ,就會有提示
1.4 mkdir —創建目錄
-
案例演示
make directory=mkdir 創建目錄 mkdir -p 多級目錄 #在作業目錄下,建立一個名為 rivers02 的子目錄: [root@web_server01~]# mkdir rivers02 # 在目錄root/rivers02/下建立子目錄hbs,并且設定檔案屬主有讀、寫和執行權限,其他人無權訪問 [root@web_server01~]# mkdir -m 700 /root/rivers02/hbs # 同時創建子目錄a1,b1,c1: [root@web_server01~/rivers]# mkdir a1 b1 c1 [root@web_server01~/rivers]# ls a1 b1 c1 [root@web_server01~/rivers]# # 創建多級目錄/忽略錯誤提示(遞回創建目錄 -p) [root@web_server01~]# mkdir -p /a/b/c
1.5 rmdir 命令 — 洗掉空目錄
-
案例演示
# 洗掉目錄 [root@web_server01~/rivers]# ls a1 b1 c1 [root@web_server01~/rivers]# rmdir a1 b1 c1
1.6 tree 命令 —查看目錄結構
-
案例演示
[root@web_server01~/rivers02]# mkdir xixi [root@web_server01~/rivers02]# mkdir heihei # 只顯示n層目錄(n為數字): [root@web_server01~/rivers02]# tree -L 1 . ├── hbs ├── heihei └── xixi # 用檔案和目錄的更改時間排序: [root@web_server01~/rivers02]# tree -t . ├── heihei ├── xixi └── hbs 以相反次序排序: [root@web_server01~/rivers02]# tree -r . ├── xixi ├── heihei └── hbs # 在每個檔案或目錄之前,顯示完整的相對路徑: [root@web_server01~/rivers02]# tree -f . ├── ./hbs ├── ./heihei └── ./xixi # 只顯示目錄: [root@web_server01~/rivers02]# tree -d . ├── hbs ├── heihei └── xixi #顯示所有檔案和目錄: [root@web_server01~/rivers02]# tree -a . ├── hbs ├── heihei └── xixi
1.7 mv 命令 — 移動或改名檔案
-
案例演示
# 常用引數 -i 若存在同名檔案,則向用戶詢問是否覆寫 -f 覆寫已有檔案時,不進行任何提示 -b 當檔案存在時,覆寫前為其創建一個備份 -u 當源檔案比目標檔案新,或者目標檔案不存在時,才執行移動此操作 # 將 1.txt 重命名 100.php [root@web_server01~]# mv 1.txt 100.php # 將 2.txt 移動到 /opt [root@web_server01~]# mv 2.txt /opt/ # 將目錄hbs移動目錄rivers中(前提是目錄hbs已存在,若不存在則改名): [root@web_server01~]# mv hbs/ /root/rivers # 將./rivers/hbs/目錄下的檔案移動到當前目錄下: [root@web_server01~]# mv ./rivers/hbs/* .
1.8 pwd 命令 — 顯示當前路徑
-
案例演示
# 查看當前作業目錄路徑: [root@web_server01~/rivers02]# pwd /root/rivers02
2.文本編輯命令
2.1 cat 命令 —顯示檔案內容
-
案例演示
#查看檔案的內容: [root@nginx-server~]# cat lan.txt world hello world hello [root@nginx-server~]# #查看檔案的內容,并顯示行數編號: [root@nginx-server~]# cat -n lan.txt 1 world 2 hello world 3 hello [root@nginx-server~]# #查看檔案的內容,并輸出到另外一個檔案中: [root@nginx-server~]# cat -n lan.txt > ndy.txt [root@nginx-server~]# cat ndy.txt 1 world 2 hello world 3 hello [root@nginx-server~]# # 清空檔案的內容: [root@nginx-server~]# cat /dev/null > /root/ndy.txt [root@nginx-server~]# cat ndy.txt # 持續寫入檔案內容,碰到EOF符后結束并保存: [root@nginx-server~]# cat > index.html <<EOF > ni daye de > EOF [root@nginx-server~]#
2.2 vi/vim 命令 —修改組態檔
-
案例演示
# 命令列模式 命令模式-->插入模式 i --- 表示從游標所在位置進入編輯狀態 I --- 表示將游標移動到一行的行首,再進入編輯狀態 o --- 在游標所在行的下面,新起一行進行編輯 O --- 在光變所在行的上面,新起一行進行編輯 a --- 將游標移動到右邊的下一個字符,進行編輯 A --- 將游標移動到一行的行尾,進入到編輯狀態 C --- 將游標到行尾內容進行洗掉,并進入編輯狀態 cc --- 將整行內容進行洗掉并進入編輯狀態 大寫字母G 將游標快速切換尾部 小寫字母gg 將游標快速切換首部 ngg n表示移動到第幾行 $ 將游標移動到一行的結尾 0/^ 將游標移動到一行的行首 # 末行模式 :wq --- 保存并退出 :w :q :wq!--- 強制保存退出 :q! --- 強制退出 # 快速洗掉命令 d$:表示洗掉當前游標所在位置到行尾的內容 d^:表示洗掉當前游標所在位置到第一個行首非空白字符位置的內容 dd:洗掉當前游標所在行整行 5dd:洗掉包括當前游標所在行在內的5行 %d: 表示全部洗掉 # 使用技巧 將一行內容進行洗掉(剪切) deletedelete=dd 將多行內容進行洗掉(剪切) 3dd 將內容進行粘貼 p 粘貼多次內容 3p 復制一行內容 yy 復制多行內容 3yy 操作錯誤如何還原 小寫字母u undo ------------------------------------------------ ctrl +v 選中想選的,然后shift+d 批量洗掉 ctrl +v 選中想選的,然后shift+i,輸入# ,然后按2次esc 批量注釋 ctrl +v 選中想選的,然后d ,批量取消注釋,
2.3 touch 命令 --創建檔案、修改訪問時間
-
案例演示
# 創建空檔案 [root@web_server01~]# touch lan.txt # 批量創建檔案 [root@web_server01~]# touch {1..2}.txt # 修改訪問時間 [root@web_server01~]# stat 1.txt # 查看訪問時間 File: ‘1.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 134398235 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2021-09-12 09:40:34.112793455 +0800 Modify: 2021-09-12 09:40:34.112793455 +0800 Change: 2021-09-12 09:40:34.112793455 +0800 Birth: - [root@web_server01~]# touch -t 2003141314 1.txt # 修改訪問時間,20年3月14日13:14分 [root@web_server01~]# stat 1.txt File: ‘1.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 134398235 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-03-14 13:14:00.000000000 +0800 Modify: 2020-03-14 13:14:00.000000000 +0800 Change: 2021-09-12 09:45:31.331419636 +0800 Birth: - # -a 只更改訪問時間; # -m 只更改修改時間
2.4 echo 命令 —輸出命令
-
案例演示
-
主要用于列印字符或者回顯
-
常常和管道符連用
-
“>” 覆寫
-
“>>” 追加
-
擴展 -e,主要用于寫腳本,以多行的方式寫入
# 輸出一段字符 [root@web_server01~]# echo 'i love you' i love you # 輸出變數提取后的值 [root@web_server01~]# echo $PS1 [\[\e[31;1m\]\u\[\e[0m\]\[\e[32;1m\]@\h\[\e[0m\]\[\e[36;1m\]\w\[\e[0m\]]\$ # 將字符 重定向到 檔案里 [root@web_server01~]# echo '人生只若如初見' > hh.txt # 使用反引號執行命令,并將結果顯示在終端 [root@web_server01~]# echo `date` Sun Sep 12 10:07:59 CST 2021 [root@web_server01~]# # 擴展 -e,主要用于寫腳本 \033[30m 黑色字 \033[0m \033[31m 紅色字 \033[0m \033[32m 綠色字 \033[0m \033[33m 黃色字 \033[0m \033[34m 藍色字 \033[0m \033[35m 紫色字 \033[0m \033[36m 天藍字 \033[0m \033[37m 白色字 \033[0m \033[40;37m 黑底白字 \033[0m \033[41;37m 紅底白字 \033[0m \033[42;37m 綠底白字 \033[0m \033[43;37m 黃底白字 \033[0m \033[44;37m 藍底白字 \033[0m \033[45;37m 紫底白字 \033[0m \033[46;37m 天藍底白字 \033[0m \033[47;30m 白底黑字 \033[0m -
多行寫入方式 \n
[root@web_server01~]# echo "rivers01\nrivers02\nrivers03" rivers01\nrivers02\nrivers03 [root@web_server01~]# echo -e "rivers01\nrivers02\nrivers03" rivers01 rivers02 rivers03 [root@web_server01~]# echo -e "rivers01\nrivers02\nrivers03" > file1.txt [root@web_server01~]# cat file1.txt rivers01 rivers02 rivers03 [root@web_server01~]
2.5 rm 命令 —洗掉命令
-
案例演示
# 溫馨提示: 我們在執行rm之前最好先確認一下在哪個目錄,到底要洗掉什么東西,操作時保持高度清醒的頭腦,很多時候翻車都翻在這里, # 常用引數 -f 忽略不存在的檔案,不會出現警告資訊 -i 洗掉前會詢問用戶是否操作 -r/R 遞回洗掉 -v 顯示指令的詳細執行程序 # 洗掉前逐一詢問確認: [root@web_server01~]# rm -i 1.txt 2.txt 3.txt rm: remove regular empty file ‘1.txt’? y rm: remove regular empty file ‘2.txt’? y rm: remove regular file ‘3.txt’? y [root@web_server01~]# #直接洗掉,不會有任何提示 [root@web_server01~]# rm -f 100.php # 遞回洗掉目錄及目錄下所有檔案: [root@web_server01~]# ls rivers02/ 1.txt hbs heihei xixi [root@web_server01~]# rm -rf rivers02/ [root@web_server01~]# # 洗掉當前目錄下所有檔案: [root@web_server01~/rivers]# ls 1 hbs [root@web_server01~/rivers]# rm -rf * [root@web_server01~/rivers]# ls [root@web_server01~/rivers]# #清空系統中所有的檔案(謹慎):如果是用了,準備跑路吧 [root@web_server01~]# rm -rf /*
2.6 tail 命令 —查看檔案尾部內容
-
案例演示
#顯示檔案shadow的最后10行: [root@web_server01~]# tail /etc/shadow #顯示檔案anaconda-ks.cfg 的內容,從第20行至檔案末尾: [root@web_server01~]# tail +20 anaconda-ks.cfg #顯示檔案shadow的最后10個字符: [root@web_server01~]# tail -c 10 /etc/shadow 862:::::: [root@web_server01~]# #一直變化的檔案總是顯示后10行:(主要用于看日志) [root@web_server01~]# tail -f /var/log/yum.log #顯示幫助資訊: [root@web_server01~]# tail --help
2.7 head命令 —顯示檔案開頭內容
-
案例演示
# 顯示前3行檔案內容: [root@web_server01~]# head -n 3 /etc/shadow # 顯示檔案名資訊,并顯示檔案前兩行: [root@web_server01~]# head -v -n 2 lan.txt ==> lan.txt <== i love you 1234151 [root@web_server01~]# #顯示檔案前5個字符: [root@web_server01~]# head -c 10 lan.txt i love you
2.9 sort 命令 --排序命令
-
案例演示
# sort命令是在Linux里非常有用,它將檔案進行排序,并將排序結果標準輸出,sort命令既可以從特定的檔案,也可以從stdin中獲取輸入, # -r 以相反的順序來排序 # -f 忽略大小寫 #-b 忽略每行前面開始出的空格字符 # -o <輸出檔案> 將排序后的結果存入制定的檔案 # 忽略大小寫排序 [root@web_server01~]# sort -f xixi.txt a B c # 將排序結果 輸出到 hbs/a.txt里面 [root@web_server01~]# sort xixi.txt -o hbs/a.txt [root@web_server01~]# cat hbs/a.txt a B c # 忽略每行前面開始出現的空格字符 [root@web_server01~]# cat lan.txt i love you 1234151 asdfdbsd aa [root@web_server01~]# sort -b lan.txt 1234151 aa asdfdbsd i love you [root@web_server01~]# # 以相反的順序取反 [root@web_server01~]# sort -r xixi.txt c B a
2.10 uniq 命名 —去重
-
案例演示
# 常用引數 -c 列印每行在文本中重復出現的次數 -d 只顯示有重復的紀錄,每個重復紀錄只出現一次 -u 只顯示沒有重復的紀錄 # 列印每行在檔案中出現重復的次數 [root@web_server01~]# cat hh.txt a a b c [root@web_server01~]# uniq -c hh.txt 2 a 1 b 1 c [root@web_server01~]# #只顯示有重復的紀錄,且每個紀錄只出現一次 [root@web_server01~]# uniq -d hh.txt a [root@web_server01~]# # 只顯示沒有重復的紀錄 [root@web_server01~]# uniq -u hh.txt b c [root@web_server01~]# # 洗掉連續檔案中連續的重復行: [root@web_server01~]# uniq hh.txt a b c
2.11 wc 命令 —用于統計文本、字符(數字、符號、空格、行)
-
案例演示
# 常用引數 -w 統計字數,或--words:只顯示字數,一個字被定義為由空白、跳格或換行字符分隔的字串 -c 統計位元組數,或--bytes或--chars:只顯示Bytes數 -l 統計行數,或--lines:只顯示列數 [root@web_server01~]# cat lan.txt world hello world hello [root@web_server01~]# # 統計字數 [root@web_server01~]# wc -w lan.txt 4 lan.txt #統計行數 [root@web_server01~]# wc -l lan.txt 3 lan.txt # 列印最長行的長度 [root@web_server01~]# wc -L lan.txt 11 lan.txt
2.12 more 顯示文本檔案內容
-
案例演示
# more命令用于將內容較長的文本檔案內容(不能在一屏顯示完)進行分屏顯示,并且支持在顯示時定位關鍵字,而對于內容較少的文本檔案內容則推薦使用cat命令查看, #顯示檔案anaconda-ks.cfg的內容,每5行顯示一次,而且在顯示之前先清屏: [root@web_server01~]# more -c -5 anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom [root@web_server01~]# #顯示檔案file的內容,每5行顯示一次,而且在顯示之后再清屏: [root@web_server01~]# more -p -5 anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom --More--(7%) #從第 20 行開始顯示 anaconda-ks.cfg 之檔案內容 : [root@web_server01~]# more +20 anaconda-ks.cfg # 使用技巧 Space鍵:顯示文本的下一屏內容 Enter鍵:向下n行,需要定義,默認為1行 斜線符\:接著輸入一個模式,可以在文本中尋找下一個相匹配的模式 H鍵:顯示幫助屏 B鍵:顯示上一屏內容 Q鍵:退出more命令 Ctrl+F、空格鍵:向下滾動一屏 Ctrl+B:回傳上一屏 =: 輸出當前的行號 :f:輸出檔案名和當前的行號 V:呼叫vi編輯器 !:呼叫Shell,并執行命令
2.13 less命令 — 分頁顯示內容
-
案例演示
#瀏覽文字檔案的內容,用less命令顯示檔案時,PageUp鍵向上翻頁,PageDown鍵向下翻頁,要退出less程式,應按Q鍵, less的作用與more十分相似,不同點為less命令允許用戶向前或向后瀏覽檔案,而more命令只能向前瀏覽 , #查看檔案 : [root@web_server01~]# less anaconda-ks.cfg #ps查看行程資訊并通過less分頁顯示: [root@linuxcool ~]# ps -ef |less
2.14 stat 命令 – 查看資料詳細屬性資訊
-
案例演示
# 常用引數 -L 支持符號鏈接 -f 顯示檔案系統的資訊 -t 以簡潔的方式輸出 --help 顯示命令幫助資訊 # 查看檔案 anaconda-ks.cfg 的三種時間狀態:Access,Modify,Change: [root@web_server01~]# stat anaconda-ks.cfg File: ‘anaconda-ks.cfg’ Size: 1681 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 134318467 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2021-09-12 10:26:28.679267897 +0800 Modify: 2021-08-23 15:38:37.120883350 +0800 Change: 2021-08-23 15:38:37.120883350 +0800 Birth: - # 查看檔案系統資訊 [root@web_server01~]# stat -f anaconda-ks.cfg File: "anaconda-ks.cfg" ID: 80300000000 Namelen: 255 Type: xfs Block size: 4096 Fundamental block size: 4096 Blocks: Total: 25757146 Free: 25197394 Available: 25197394 Inodes: Total: 51539456 Free: 51473814
2.15 ln 命令 —創建連接檔案
-
案例演示
# 常用引數 ln 源檔案 鏈接檔案 創建硬鏈接 ln -s 創建軟鏈接 # 將解壓的mysql 鏈接到 mysql5.7 [root@web_server01~]#ln -s mysql-5.7.22-linux-glibc2.12-x86_64/ mysql5.7
2.16 dd 命令 — 模擬創建出指定大小的檔案
-
案例演示
# 模擬創建出指定大小的檔案 #從哪取出資料 放到哪 占用1個block多少空間 總共使用多少個block [root@web_server01~]# dd if=/dev/zero of=/opt/liuaoni.txt bs=10 count=100 100+0 records in 100+0 records out 1000 bytes (1.0 kB) copied, 0.000335941 s, 3.0 MB/s [root@web_server01~]# # 查看 liuaoni.txt 檔案大小 [root@web_server01~]# du -h /opt/liuaoni.txt 4.0K /opt/liuaoni.txt
2.17 chattr 命令 — 改變檔案屬性
-
案例演示
# 常用引數 a:讓檔案或目錄僅供附加用途, b:不更新檔案或目錄的最后存取時間, c:將檔案或目錄壓縮后存放, d:將檔案或目錄排除在傾倒操作之外,當dump程式執行時,該檔案或目錄不會被dump備份 i:不得任意更動檔案或目錄, s:保密性洗掉檔案或目錄, S:即時更新檔案或目錄, u:預防意外洗掉, # 用chattr命令防止系統中某個關鍵檔案被修改: [root@web_server01~]# touch mm.sh [root@web_server01~]# chattr +i mm.sh #會顯示如下屬性 [root@web_server01~]# lsattr mm.sh ----i----------- mm.sh 讓某個檔案只能往里面追加資料,但不能洗掉,適用于各種日志檔案: [root@web_server01~]# chattr +a /var/log/messages # 創建一個連root 都無法刪除的檔案 [root@web_server01~]# chattr -u mm.sh [root@web_server01~]# rm -f mm.sh rm: cannot remove ‘mm.sh’: Operation not permitted [root@web_server01~]# ll mm.sh -rw-r--r-- 1 root root 0 Sep 13 17:08 mm.sh [root@web_server01~]# chmod 777 mm.sh chmod: changing permissions of ‘mm.sh’: Operation not permitted [root@web_server01~]# rm -rf mm.sh rm: cannot remove ‘mm.sh’: Operation not permitted # 解除 檔案屬性 [root@web_server01~]# chattr -i mm.sh [root@web_server01~]# [root@web_server01~]# rm -rf mm.sh # 影藏 chattr 命令 [root@web_server01~]# mv /usr/bin/cha chacl chage chattr [root@web_server01~]# mv /usr/bin/chattr /opt/chattr/ [root@web_server01~]# mv chattr h -->更改命令,使用別名h隱藏身份 [root@web_server01~]# /opt/ftl/h +i /home/omd/h.txt -->利用h 行駛chattr命令 # 查看加密資訊 lsattr /home/omd/h.txt -->查看加密資訊 #恢復隱藏命令 mv h /usr/bin/chattr chattr -i /home/omd/h.txt lsattr /home/omd/h.txt
3 .修改主機名
3.1 hostname 命令 —查看修改主機名稱
-
案例演示
# 查看主機名 [root@web_server01~]# hostname web_server01 # 臨時修改主機名,重啟就恢復了 [root@web_server01~]# hostname nginx-server [root@web_server01~]# bash [root@nginx-server~]#
3.2 hostnamectl — 直接修改主機名稱(centos7)
-
案例演示
#示當前主機名稱的配置資訊: [root@nginx-server~]# hostnamectl status Static hostname: web_server01 Transient hostname: nginx-server Icon name: computer-vm Chassis: vm Machine ID: 6995341f51984532aa0222cddb7a2bd0 Boot ID: 416ee9b854804fa1aaa1bad439c5bb24 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-957.el7.x86_64 Architecture: x86-64 # 使用set-hostname命令來設定或修改主機名稱: [root@nginx-server~]# hostnamectl set-hostname web01-server
4.linux 用戶及權限管理
4.1 useradd 命令 — 創建用戶
-
案列演示
# 創建一個系統登錄用戶 nginx [root@nginx-server~]# useradd -M -s /sbin/nologin nginx # 新建hbs用戶,并加入到root,itboy附屬組 [root@nginx-server~]# useradd -G root,itboy hbs #新建 hbs01 用戶,并制定新的家兗,同時制定其登錄的shell [root@nginx-server~]# useradd hbs01 -d /tmp/ -s /bin/bash
4.2userdel 命令 —洗掉用戶
-
案例演示
#保留用戶的家目錄 [root@nginx-server~]# userdel hbs01 #洗掉用戶及用戶家目錄,用戶login系統無法洗掉 [root@nginx-server~]# userdel -r hbs01 #強制洗掉用戶及該用戶家目錄,不論是否login系統 [root@nginx-server~]# userdel -rf hbs01
4.3 usermod命令 —修改用戶及組的屬性
-
案例演示
#將hbs用戶屬組修改為root,itboy附屬組; [root@nginx-server~]#usermod -G root,itboy hbs #將hbs用戶加入到itboy,root附屬組,-a為添加新組,原組保留; [root@nginx-server~]# usermod -a -G itboy,root hbs #修改hbs用戶,并指定新的家目錄,同時指定其登陸的SHELL; [root@nginx-server~]# usermod -d /tmp/ -s /bin/sh hbs #將hbs用戶名修改為rivers; [root@nginx-server~]# usermod -l hbs rivers #鎖定rivers用戶及解鎖rivers用戶方法; [root@nginx-server~]# usermod -L rivers [root@nginx-server~]# usermod -U rivers
4.4 groupadd 命令 —創建用戶組
-
案例演示
# 創建一個itboy 用戶組 [root@nginx-server~]# groupadd itboy # 新建一個teacher 組,并指定GID 1000 [root@nginx-server~]# groupadd -g 1000 teacher # 新建一個system 組,組名為adminroot [root@nginx-server~]# groupadd -r system adminroot
4.5 groupmod 命令 —修改組名
-
案例演示
# groupmod修改組GID號,將原eacher組gid改成gid 999; [root@nginx-server~]# groupmod -g 999 teacher # groupmod修改組名稱,將teacher組名,改成student [root@nginx-server~]# groupmod -n student teacher
4.6 chown 命令 --修改檔案/目錄屬主、陣列
-
案例演示
# 常用引數 -R 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更 -c 若該檔案擁有者確實已經更改,才顯示其更改動作 -f 若該檔案擁有者無法被更改也不要顯示錯誤訊息 -h 只對于連結(link)進行變更,而非該 link 真正指向的檔案 -v 顯示擁有者變更的詳細資料 # 將rivers/ 目錄屬主陣列 改成hbs [root@nginx-server~]# chown hbs.hbs rivers # 將laoni/ 屬主改成 hbs [root@nginx-server~]# chown -R hbs laoni/ # 將laoni/* 所有檔案 屬主改成 hbs [root@nginx-server~]# chown -R hbs laoni/*
4.7 chmod 命令 —改變檔案或目錄權限
-
案例演示
# 常用引數 -c 若該檔案權限確實已經更改,才顯示其更改動作 -f 若該檔案權限無法被更改也不顯示錯誤訊息 -v 顯示權限變更的詳細資料 -R 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的方式逐個變更) #將檔案 file1.txt 設為所有人皆可讀取: [root@nginx-server~]# touch file1.txt [root@nginx-server~]#chmod a+r file.txt #將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 : [root@nginx-server~]# chmod -R a+r * # 將 file.txt 設定為只有該檔案擁有者可以執行: [root@nginx-server~]# chmod u+x file.txt # 授予 hbs用戶 對 rivers 目錄有用所有rwx權限 [root@nginx-server~]# chmod -R u+rwx rivers/ # 授予 hbs組對 rivers 目錄有用所有rwx權限 [root@nginx-server~]# chmod -R g+rwx rivers/ # 授予 用戶、組、其他人對 heihei 有rwx 權限 [root@nginx-server~]# chmod -R u+rwx,g+rwx,o+rwx rivers/ # 撤銷用戶對rivers 的w 權限 [root@nginx-server~]# chmod u-w rivers/ ------------------- chomod 二進制權限設定 Linux權限可以將rwx用二進制來表示,其中有權限用1表示,沒有權限用0表示; Linux權限用二進制顯示如下: rwx=111 r-x=101 rw-=110 r--=100 # 授予 hbs用戶 對 rivers 目錄有用所有rwx權限 [root@nginx-server~]# chmod -R 755 rivers/
4.8 passwd 命令 —修改用戶密碼
-
案例演示
# 常用引數 d 洗掉密碼 -l 鎖定用戶密碼,無法被用戶自行修改 -u 解開已鎖定用戶密碼,允許用戶自行修改 -e 密碼立即過期,下次登陸強制修改密碼 -k 保留即將過期的用戶在期滿后能仍能使用 -S 查詢密碼狀態 # 互動式修改密碼 [root@nginx-server~]# passwd rivers # 免互動式修改密碼 [root@nginx-server~]# echo 123456|passwd --stdin hbs Changing password for user hbs. passwd: all authentication tokens updated successfully. # 鎖定密碼不允許用戶修改 [root@nginx-server~]# passwd -l rivers Locking password for user rivers. passwd: Success [root@nginx-server~]# # 解除鎖定密碼,允許用戶修改 [root@nginx-server~]# passwd -u rivers # 下次登錄強制修改密碼 [root@nginx-server~]# passwd -e rivers Expiring password for user rivers. passwd: Success [root@nginx-server~]#
4.9 id /whoami 命令 —檢查用戶身份
-
案例演示
# 檢查用戶是否存在 [root@web_server01~]# id hbs uid=1002(hbs) gid=1003(hbs) groups=1003(hbs) # 確認用戶身份 [root@web_server01~]# who root pts/0 2021-09-12 09:39 (10.0.0.1) root pts/1 2021-09-12 19:17 (10.0.0.1) [root@web_server01~]# whoami root
4.10 su 命令 —切換用戶命令
-
案例演示
# 切換用戶身 [hbs@web_server01/root]$ su hbs Password:
4.11 w 命令 —查看負載資訊/查看系統用戶登錄資訊
-
案例演示
[hbs@web_server01/root]$ w 19:35:11 up 9:55, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 09:39 3:38m 1.15s 0.55s bash root pts/1 10.0.0.1 19:17 7.00s 0.19s 0.00s w [hbs@web_server01/root]$
5.軟體包管理
5.1 rpm 命令 —RPM 軟體包管理器
-
案例演示
# rpm 管理軟體程式包的 # rpm -qa 軟體名稱 查看軟體大禮包是否安裝成功 # rpm -ql 軟體名稱 查看軟體大禮包中都有什么 # rpm -qf 檔案名稱(絕對路徑) 查看檔案屬于哪個軟體大禮包 #直接安裝軟體包: [root@nginx-server~]# rpm -ivh packge.rpm # 卸載rpm包: [root@nginx-server~]# rpm -e package.rpm #忽略報錯,強制安裝: [root@nginx-server~]# rpm --force -ivh package.rpm #列出所有安裝過的包: [root@nginx-server~]# rpm -qa #查詢rpm包中的檔案安裝的位置: [root@nginx-server~]# rpm -ql httpd #升級軟體包: [root@nginx-server~]# rpm -U file.rpm
5.2 yum 命令 — 軟體安裝、卸載
-
案例演示
yum install -y 名稱 直接安裝軟體 yum groupinstall -y 包組名稱 直接安裝軟體包組 yum repolist 查看yum源資訊 yum list 查看哪些軟體可以安裝/查看所有系統已安裝的軟體 yum grouplist 查看哪些軟體包組可以安裝/查看所有系統已安裝的軟體包組 yum --help help引數可以只顯示命令的引數幫助資訊 yum provides locate 獲取命令屬于哪個軟體大禮包
5.3 wget 命令 —檔案下載
-
案例演示
# 常用引數 -V –-version 顯示wget的版本后退出 -h –-help 列印語法幫助 -b, –-background 啟動后轉入后臺執行 -e –-execute=COMMAND wget命令用來從指定的URL下載檔案,wget非常穩定,它在帶寬很窄的情況下和不穩定網路中有很強的適應性,如果是由于網路的原因下載失敗,wget會不斷的嘗試,直到整個檔案下載完畢,如果是服務器打斷下載程序,它會再次聯到服務器上從停止的地方繼續下載,這對從那些限定了鏈接時間的服務器上下載大檔案非常有用, wget支持HTTP,HTTPS和FTP協議,可以使用HTTP代理,所謂的自動下載是指,wget可以在用戶退出系統的之后在后臺執行,這意味這你可以登錄系統,啟動一個wget下載任務,然后退出系統,wget將在后臺執行直到任務完成,相對于其它大部分瀏覽器在下載大量資料時需要用戶一直的參與,這省去了極大的麻煩, 語法格式: wget [引數] 常用引數: -V –-version 顯示wget的版本后退出 -h –-help 列印語法幫助 -b, –-background 啟動后轉入后臺執行 -e –-execute=COMMAND #使用wget下載單個檔案: [root@nginx-server~]# wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.3-m13-1.linux_glibc2.5.x86_64.rpm-bundle.tar #下載并以不同的檔案名保存: [root@nginx-server~]# wget -O mysql.tar.gz https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.3-m13-1.linux_glibc2.5.x86_64.rpm-bundle.tar #wget限速下載: [root@nginx-server~]# wget --limit-rate=300k https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.3-m13-1.linux_glibc2.5.x86_64.rpm-bundle.tar #使用wget后臺下載: [root@nginx-server~]# wget -b https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.3-m13-1.linux_glibc2.5.x86_64.rpm-bundle.tar
5.4 which命令 — 顯示命令檔案所在路徑位置
-
案例演示
# 查看命令安裝路徑 [root@web_server01~]# which vim /usr/bin/vim [root@web_server01~]#
5.5 whereis 命令 —查看命令所在路徑以及命令相關手冊檔案所在路徑
-
案例演示
# 查看命令所在路徑以及命令相關手冊檔案所在路徑 [root@web_server01~]# whereis vim vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz [root@web_server01~]#
5.6 alias/unalias 命令 —設定命令別名
-
案例演示
# 設定別名 alias 別名='命令資訊' [root@web_server01~]# alias eth11='cat /etc/sysconfig/network-scripts/ifcfg-eth1' [root@web_server01~]# eth11 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none IPADDR=172.16.1.7 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=eth1 DEVICE=eth1 ONBOOT=yes AUTOCONNECT_PRIORITY=-999 [root@web_server01~]# # 取消別名 #unalias 取消系統別名命令 #unalias 別名 # [root@web_server01~]# unalias eth11
6.磁盤管理
6.1 df 命令 — 顯示磁盤空間使用情況
-
案例演示
# 常用引數 -a 顯示所有系統檔案 -h 以容易閱讀的方式顯示 # 以容易閱讀的方式顯示磁盤磁區使用情況: [root@nginx-server~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 99G 2.0G 97G 2% / devtmpfs 442M 0 442M 0% /dev tmpfs 453M 0 453M 0% /dev/shm tmpfs 453M 7.2M 446M 2% /run tmpfs 453M 0 453M 0% /sys/fs/cgroup /dev/sda1 197M 105M 93M 54% /boot tmpfs 91M 0 91M 0% /run/user/0 # 顯示指定檔案所在磁區的磁盤使用情況 [root@nginx-server~]# df -h /opt/ Filesystem Size Used Avail Use% Mounted on /dev/sda3 99G 2.0G 97G 2% / [root@nginx-server~]#
6.2 fdisk 命令 —磁盤磁區
-
案例演示
[root@nginx-server~]# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb # 查看所有磁區情況 [root@nginx-server~]# fdisk -l # 選擇磁區磁盤 [root@nginx-server~]# fdisk /dev/sda2 -
linux磁盤磁區
6.3 lsblk 命令 —查看系統的磁盤
-
案例演示
#列出所有塊設備 [root@nginx-server~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 1.5G 0 part [SWAP] └─sda3 8:3 0 98.3G 0 part / sdb 8:16 0 10G 0 disk sr0 11:0 1 4.3G 0 rom [root@nginx-server~]# # 默認選項不會列出所有空設備 [root@nginx-server~]# lsblk -a -
linux 磁盤磁區實戰
6.4 free 命令 — 顯示系統記憶體情況
-
案例演示
# 顯示記憶體使用情況: [root@nginx-server~]# free total used free shared buff/cache available Mem: 926264 96024 685304 7288 144936 671300 Swap: 1572860 0 1572860 # 用MB顯示記憶體使用情況 [root@nginx-server~]# free -m total used free shared buff/cache available Mem: 904 93 669 7 141 655 Swap: 1535 0 1535 [root@nginx-server~]# # 用KB顯示記憶體使用情況: [root@nginx-server~]# free -k # 以總和的形式顯示記憶體的使用資訊: [root@nginx-server~]# free -t # 周期性查詢記憶體使用情況: [root@nginx-server~]# free -s 10
6.5 du 命令 —查看空間
-
案例演示
# 常用引數 -a 顯示目錄中所有檔案大小 -k 以KB為單位顯示檔案大小 -m 以MB為單位顯示檔案大小 -g 以GB為單位顯示檔案大小 -h 以易讀方式顯示檔案大小 -s 僅顯示總計 # 常用命令 [root@nginx-server~]# du -sh /tmp/ 查看當前目錄所有檔案及檔案及的大小 #以易讀方式顯示檔案夾內及子檔案夾大小 : [root@nginx-server~]# du -h scf/ #以易讀方式顯示檔案夾內所有檔案大小 : [root@nginx-server~]# du -ah scf/ #輸出當前目錄下各個子目錄所使用的空間 : [root@nginx-server~]# du -hc --max-depth=1 scf/ #顯示指定檔案所占空間 : [root@nginx-server~]# du log2021.log
7.設備管理
7.1 mount 命令 —檔案系統掛載
-
案例演示
#常用引數 -t 指定掛載型別 -l 顯示已加載的檔案系統串列 -h 顯示幫助資訊并退出 -V 顯示程式版本 -n 加載沒有寫入檔案“/etc/mtab”中的檔案系統 -r 將檔案系統加載為只讀模式 -a 加載檔案“/etc/fstab”中描述的所有檔案系統 #查看版本: [root@nginx-server~]# mount -V #啟動所有掛載: [root@nginx-server~]# mount -a #掛載 /dev/cdrom 到 /mnt: [root@nginx-server~]# mount /dev/cdrom /mnt # 掛載nfs格式檔案系統: [root@nginx-server~]#mount -t nfs /123 /mnt #掛載第一塊盤的第一個磁區到/etc目錄 : [root@nginx-server~]#mount -t ext4 -o loop,default /dev/sda1 /etc
7.2 umout 命令 —卸載掛載
-
案例演示
#mount 存盤設備檔案 掛載點 umount 對存盤設備進行卸載 umount 掛載點 # 卸載 /mnt 掛載點 [root@web_server01~]# umount /mnt/
7.3 lsusb 命令 — 顯示usb 設備串列
-
案例演示
# 顯示有關CPU架構的資訊: [root@nginx-server~]# lscpu
8. 網路通訊
8.1 ssh命令 — 安全連接客戶端
-
案例演示
#登錄遠程服務器: [root@linuxcool ~]# ssh 10.0.0.7 #用hbs用戶連接遠程服務器: [root@nginx-server~]# ssh -l hbs 10.0.0.7 #查看磁區串列: [root@nginx-server~]# ssh root@10.0.0.7 /sbin/fdisk -l root@10.0.0.7's password:
8.2 netstat 命令 — 顯示網路狀態
-
案例演示
# 常用引數 -a 顯示所有連線中的Socket -p 顯示正在使用Socket的程式識別碼和程式名稱 -u 顯示UDP傳輸協議的連線狀況 -i 顯示網路界面資訊表單 -n 直接使用IP地址,不通過域名服務器 [root@nginx-server~]# netstat -lnutp|grep 22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6837/sshd tcp6 0 0 :::22 :::* LISTEN 6837/sshd # 同時還可以使用 ss -lant [root@nginx-server~]# ss -lant State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* ESTAB 0 148 10.0.0.7:22 10.0.0.1:58713 LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
8.3 ping 命令 —測驗主機間網路連通性
-
案例演示
# 常用引數 #檢測與www.baidu.com網站的連通性: [root@nginx-server~]# ping www.baidu.com #連續ping4次: [root@nginx-server~]# ping -c 4 www.baidu.com #設定次數為4,時間間隔為3秒: [root@nginx-server~]# ping -c 4 -i 3 www.baidu.com #利用ping命令獲取指定網站的IP地址: [root@nginx-server~]# ping -c 1 baidu.com | grep from | cut -d " " -f 4 220.181.38.251 [root@nginx-server~]#
8.5 nslookup 命令 —決議IP地址
-
案例演示
# 常用引數 exit 退出命令 server 指定決議域名的服務器地址 set type=soa 設定查詢域名授權起始資訊 set type=a 設定查詢域名A記錄 set type=mx 設定查詢域名郵件交換記錄 # 安裝nslookup工具 [root@nginx-server~]# yum -y install bind-utils # 在非互動模式下查詢域名基本資訊 [root@nginx-server~]# nslookup www.baiud.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: www.baiud.com Address: 103.51.144.90
8.6 route 命令 — 顯示并設定路由
-
案例演示
# 常用引數 - C 列印linux核心的路由快取 -n 不執行DNS反向查找,直接顯示數字形式的ip地址 -net 到一個網路的路由表 -host 到一個主機的路由表 Add 增加指定的路由記錄 Del 洗掉指定的路由記錄 gw 設定默認網關 dev 路由記錄所表示的網路介面 # 顯示當前路由 [root@nginx-server~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 172.16.1.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1 root@nginx-server~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 172.16.1.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1 [root@nginx-server~]# # 臨時添加一條路由記錄: [root@nginx-server~]# ip route add 192.168.10.100 via 172.16.1.254 dev eth1 # 洗掉路由記錄 [root@nginx-server~]# ip route del 192.168.10.100 via 172.16.1.254 dev eth1 # 永久配置 在/etc/sysconfig/network-scripts/目錄下創建route-eth*組態檔,其中eth*為對應的網卡編號,即靜態路由的出口網卡,該組態檔中的路由出口資訊,必須與此檔案名編號一致,否者將造成網卡啟動失敗,導致斷網, # cat /etc/sysconfig/network-scripts/route-eth1 192.168.10.0/24 via 172.16.1.254 dev eht1
9.tar、zip命令 —壓縮/解壓縮
-
案例演示
# 常用幾種格式 .tar.gz (tar) .tar.bz2 (tar),需要安裝bzip2安裝包 .tar.xz (tar) .zip (zip) 跨平臺的 壓縮比:gz<bz<xz (xz壓縮效果最好,推薦使用tar.xz) 常用壓縮檔案選項 -zcf 創建一個gz的檔案壓縮包 -jcf 創建一個bz2的檔案壓縮包 -Jcf 創建一個xz格式的檔案壓縮包 -常用解壓檔案選項 -xf 解壓指定檔案(gz、xz用) -xvf 解壓指定檔案并顯示解壓程序(gz、xz用) -xjf 解壓bz2檔案的 查看壓縮的檔案 -tvf 不解壓查看一個檔案 -c 創建歸檔 -z 壓縮成gz格式 -j 壓縮成bz2格式 -v 顯示詳細資訊 -t 不解壓查看壓縮包內容 -f 指定要壓碩訓解壓縮的檔案 -x 解壓縮 -C 將壓縮檔案解壓到指定目錄 #查看bzip2安裝包 [root@localhost ~]# ls /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm [root@localhost ~]# rpm -ivh /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm 安裝bzip2安裝包 warning: /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] package bzip2-1.0.6-13.el7.x86_64 is already installed #將數字、大小寫字母 壓縮為hehe.tar.bz2包 [root@localhost ~]# tar -jcf hehe.tar.bz2 [[:alnum:]] #將所有檔案壓縮成 tar.xz格式 [root@localhost ~]# tar -Jcf big.tar.xz * #不解壓查看big.tar.xz 壓縮包 [root@localhost ~]# tar -tvf big.tar.xz # 解壓digit(單個數字)壓縮包 [root@localhost opt]# tar xf digit.tar.gz [root@localhost opt]# ls 1 2 3 4 8 alnum.tar.bz2 big.tar.xz digit.tar.gz hehe.tar.bz2 # 洗掉數字 [root@localhost opt]# rm -f [[:digit:]] [root@localhost opt]# ls alnum.tar.bz2 big.tar.xz digit.tar.gz hehe.tar.bz2 [root@localhost opt]# tar -xvf digit.tar.gz # 解壓到家目錄 [root@localhost opt]# tar -xvf digit.tar.gz -C ~ # zip 命令 和gz2一樣,也需要單獨安裝zip和unzip(看情況) zip xx.zip 壓縮 unzip xx.zip 解壓縮 #查看有沒有zip 命令 [root@localhost opt]# which zip /usr/bin/which: no zip in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) [root@localhost opt]# ls /mnt/Packages/zip-3.0-11.el7.x86_64.rpm /mnt/Packages/zip-3.0-11.el7.x86_64.rpm [root@localhost opt]# rpm -ivh /mnt/Packages/zip-3.0-11.el7.x86_64.rpm 安裝zip命令 warning: /mnt/Packages/zip-3.0-11.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:zip-3.0-11.el7 ################################# [100%] [root@localhost opt]# # 將數字壓縮zip格式 [root@localhost ~]# zip liuaoni.zip [[:digit:]] adding: 1 (stored 0%) adding: 2 (stored 0%) adding: 3 (stored 0%) adding: 4 (stored 0%) adding: 8 (stored 0%) # 解壓zip檔案 [root@localhost ~]# unzip liuaoni.zip
10. 檔案傳輸
10.1 curl 命令 —檔案傳輸工具
-
案例演示
# 常用引數 -u 通過服務端配置的用戶名和密碼授權訪問 -o 指定下載到目錄 -i 顯示 http response 的頭資訊 -v 顯示通訊請求程序 # 將阿里云鏡像源下載到 本地 /etc/yum.repo.d/,名字為CentOS-Base.repo [root@localhost ~]#curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo # 可以查看頁面代碼 [root@nginx-server~]# curl www.dy.com # 顯示 http response 的頭資訊,連同網頁代碼一起 [root@nginx-server~]# curl -i www.sina.com # 顯示一次 http 通信的整個程序,包括埠連接和 http request 頭資訊 [root@nginx-server~]# curl -v www.sina.com
10.2 scp — 遠程拷貝檔案
-
案例演示
-
# 常用引數 - cp是 secure copy的縮寫. - scp是linux系統下基于ssh登陸進行安全的遠程檔案拷貝命令, - linux的scp命令可以在linux服務器之間復制檔案和目錄, - scp命令用于在Linux下進行遠程拷貝檔案的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的,可能會稍微影響一下速度, 當你服務器硬碟變為只讀read only system時,用scp可以幫你把檔案移出來,另外,scp還非常不占資源,不會提高多少系統負荷,在這一點上,rsync就遠遠不及它了, - 雖然 rsync比scp會快一點,但當小檔案眾多的情況下,rsync會導致硬碟I/O非常高,而scp基本不影響系統正常使用, #從遠程復制檔案到本地目錄: [root@web_server01~]# scp root@192.168.10.10:/opt/soft/rhel-server-7.3-x86_64.tar.gz /opt/soft/ #從遠程復制目錄到本地: [root@web_server01~]# scp -r root@10.10.10.10:/opt/soft/mysql /opt/soft/ #上傳本地檔案到遠程機器指定目錄: [root@web_server01~]# scp /opt/soft/rhel-server-7.3-x86_64.tar.gz root@192.168.10.10:/opt/soft/scptest #上傳本地目錄到遠程機器指定目錄: [root@web_server01~]# scp -r /opt/soft/mysql root@192.168.10.10:/opt/soft/scptest #保留檔案的最后修改時間,最后訪問時間和權限模式: [root@web_server01~]# scp -p /root/install.log root@192.168.10.10:/tmp
11 關機/重啟相關命令
11.1 shutdown 命令
-
案例演示
[root@nginx-server~]# shutdown -h 5 指定關機時間 (推薦) [root@nginx-server~]# shutdown -r 5 重啟主機時間 (推薦) [root@nginx-server~]# shutdown -c 取消關機或重啟計劃 [root@nginx-server~]# shutdown -h now/0 立即關機 [root@nginx-server~]# shutdown -r now/0 立即重啟
11.2 init 命令
-
案例演示
[root@nginx-server~]# init 0 #關機 [root@nginx-server~]# init 3 #進入3級別字符界面 [root@nginx-server~]# init 5 #進入5級別圖形界面 [root@nginx-server~]# systemctl get-default 查蘭當前默認啟動級別 multi-user.target [root@nginx-server~]#
11.3 reboot 命令
-
案例演示
# 重啟 [root@nginx-server~]#reboot
11.4 poeroff 命令
-
案例演示
# 關機 [root@nginx-server~]# poweroff
11.5 halt 命令 —直接關機
-
案例演示
# 引數解釋 w 并不是真正的重啟或關機,只是寫wtmp(/var/log/wtmp)紀錄 -d 不寫wtmp紀錄(已包含在選項[-n]中) -f 沒有呼叫shutdown而強制關機或重啟 -i 關機(或重啟)前關掉所有的網路介面 -p 該選項為預設選項,就是關機時呼叫poweroff # 使用-p引數關閉作業系統,等同于poweroff 命令,并關閉了作業系統的電源 [root@web_server01~]# halt -p #使用-f引數強制關機,作業系統電源未關閉: [root@web_server01~]# halt -f
11.5 exit 命令— 注銷
-
案例演示
# 注銷,退出登錄 [root@nginx-server~]# exit
12 作業系統正則符號
12.1 系統特殊符號(路徑、重定向、邏輯、引號)
-
案例演示
# 常見的系統符號 1.系統常用符號 # $ ! | 2.路徑系統符號 ~ - .. . 3.重定向符號 > >> 2> 2>> < << 4.邏輯符號 && || 5.引號符號 “” , '' , `` # 井號符號:# 表示檔案內容注釋符號 表示用戶命令提示符號 超級用戶為 # 普通用戶為 $ #引號符號系列: 美元括號: $() 表示命令執行結果留下,用于其他命令呼叫 單號符號:‘’ 表示輸入內容,就是輸出內容(所見即所得) 雙引號:“” 表示輸入內容,就是輸出內容,但是部分資訊會被決議 反引號:`` 表示命令執行結果留下,用于其他命令呼叫 # 重定向符號系列 小于符號:單個小于符號< 標準輸入重定向符號 兩個小于符號: << 標準輸入追加重定向符號 大于符號: 單個大于符號 > 標準輸出重定向符號 /2> 錯誤輸出重定向符號 兩個大于符號: >> 標準輸出追加重定向符號 /2>> 錯誤輸出追加重定向符號 # 路徑資訊系列 單點符號: . 表示當前目錄 雙點符號: .. 表示上級目錄 波浪符號 :~ 表示用戶家目錄資訊 超級用戶:/root /home/用戶名稱 # 邏輯符號系列 并且符號:&& 表示前面的名稱執行成功,再執行后面的命令 或者符號:|| 表示前面的名稱執行失敗,再執行后面的命令
12.2 通配符號(* 、{})
-
案例演示
# 通配符號 * {} 根據檔案名稱進行匹配資訊 * 表示匹配所有內容資訊 {} 表示生成序列資訊
12.3 系統正則符號()
-
案例演示
# 基礎正則符號 基礎正則符號: 1.尖角符號:^ 表示以什么字符開頭的一行資訊 2. 美元符號: $ 表示以什么字符結尾的一行資訊 3.空行符號 :^$ 表示過濾空行資訊 4.點號符號:. 表示匹配任意一個且只有一個字符 5. *號符號:* 表示前一個字符連續出現了1次或0次以上 6. 點* 符號: .* 表示匹配檔案中所有資訊(包含空行) ^.* xx 表示從開頭到什么字符為止的內容(貪婪匹配) ^.* xx$ 表示以什么開頭,并且以什么結尾的資訊進行匹配出來 7.轉義符號: \ \.$ 表示查詢以點 結尾的行資訊 \ r 或者\ n 表示陪陪一個換行符號 \ t 表示匹配一個制表符號 8.括號符號:[] 表示包含括號中的資訊 [abc] 表示匹配包含a或b或c資訊的字符 ^[abc] 表示匹配包含a或b或c資訊的字符開頭的資訊 [a-zA-Z0-9] 找出所有以小寫字母大寫字母和數字資訊的字符 [a-Z]找出所有以小寫字母或大寫字母組成字符(只能grep/egrep使用) ^[a-z].*[.!]$ 表示以小寫字母開頭并且以點或嘆號結尾的資訊過濾出來 9.排除符號:[^] 表示排除括號中資訊的 [^abc] 表示排除包含a或b或c資訊的字符 ^[^abc] 表示排除包含a或b或c資訊的字符開頭的行(不包含空行) [a-z0-9_]+\@[a-z0-9_]+\.[a-z]{2,4} 匹配一個郵箱地址 [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 匹配IP地址 # 擴展正則運算式 1.加號符號:+ 表示前一個字符連續出現了1次或多次以上 2.豎線符號:| 表示匹配多個滿足條件的資訊(或者) 3.括號符號:() 表示匹配一個整體資訊 4.括號符號:{} 表示定義前面字符出現次數 5.問號符號:? 表示定義前面字符出現0次或1次
13 shell 常用命令
13.1 find 命令 —查找和搜索檔案
-
案例演示
# find命令可以根據給定的路徑和運算式查找的檔案或目錄,find引數選項很多,并且支持正則,功能強大,和管道結合使用可以實作復雜的功能,是系統管理者和普通用戶必須掌握的命令, # 常用引數 -name 按名稱查找 -size 按大小查找 -user 按屬性查找 -type 按型別查找 -iname 忽略大小寫 處理動作:默認為顯示到螢屏上 -print 顯示 -ls 類似ls -l的形式顯示每一個檔案的詳細資訊 -delete 洗掉查找到的檔案 -fls /path/to/somefile 查找到的所有檔案的長格式資訊保存至指定檔案中 -ok COMMAND {} \; 對查找到的每個檔案執行COMMAND,每次操作都需要用戶確認 -exec COMMAND {} \; 對查找到的每個檔案執行COMMAND,操作不需要確認 #找名字是 abc的 [root@localhost ~]# find / -name abc /root/abc /opt/abc #忽略大小寫的 [root@localhost ~]# find / -iname abc /root/abc /opt/abc /opt/ABC #找沒有user的 [root@localhost ~]# find / -nouser tom #找目錄 [root@localhost ~]# find -type d . ./a ./a/b ./a/b/e #小于1m的檔案 [root@localhost ~]# find -size -1M 小于1m的檔案 ./00:00:00 ./2021 # 大于1k的檔案 [root@localhost ~]# find -size +1k . ./.bash_history ./anaconda-ks.cfg #一分鐘前改變的 [root@localhost ~]# find -mmin +1 一分鐘前改變的 ./.bash_logout ./.bash_profile ./.bashrc # 必須是目錄,名字是 5的目錄 [root@localhost ~]# find -type d -name 5 ./5 # 必須是檔案,名字是5 的檔案 [root@localhost ~]# find -type f -name 5 [root@localhost ~]# #組合命令 [root@localhost ~]# find -type d -name 5 -ls 組合命令 33576693 0 drwxr-xr-x 2 root root 6 Apr 8 10:25 ./5 [root@localhost ~]# #查找 名字為he.txt的檔案,并且列印出來 [root@localhost ~]# find -type f -name he.txt -print ./he.txt [root@localhost ~]# #查找名字是 5的檔案,并洗掉 [root@localhost ~]# find -type f -name 5 -delete # 將當前檔案 名為 .sh 的檔案移動到 /OPT下 [root@localhost opt]# find ./ -type f -name *.sh -exec mv {} /opt/ \; #查找最近30分鐘修改的當前目錄下的.php檔案 [root@web_server01~]# find . -name '*.php' -mmin -30 -ls 134398238 4 -rw-r--r-- 1 root root 27 Sep 13 09:12 ./index.php [root@web_server01~] #查找最近24小時修改的當前目錄下的.php檔案 [root@web_server01~]# find . -name '*.php' -mmin -0 #查找當前目錄下,最近24-48小時修改過的常規檔案, [root@web_server01~]# find . -type f -mtime 1 #查找當前目錄下,最近1天前修改過的常規檔案, [root@web_server01~]# find . -type f -mtime +1
13.2 grep 命令 —文本過濾
-
實戰演示
# 常用選項: -e的作用是匹配多個運算式; -R遞回,-n表示匹配的行號,-o只輸出匹配內容,-E支持擴展正則運算式; -c統計匹配次數,-v取反; -l顯示匹配的檔案名,-L顯示不匹配的檔案名; -A顯示匹配行后的行數、-B顯示匹配行前的行數, grep -B n 顯示指定資訊前幾行內容 grep -A n 顯示指定資訊后幾行內容 grep -C n 顯示指定資訊前后幾行內容 grep -c 顯示指定資訊在檔案中有多少行出現 grep -v 進行取反或者排除 grep -E/egrep 識別擴展正則符號 grep -o 顯示過濾程序資訊 grep -n 過濾資訊并顯示資訊行號 grep -i 過濾資訊忽略大小寫 #查看系統記憶體、快取、交換磁區-e的作用是匹配多個運算式 [root@web_server01~]# cat /proc/meminfo |grep Men -e Cache -e Swap grep: Men: No such file or directory [root@web_server01~]# cat /proc/meminfo |grep -e Mem -e Cache -e Swap MemTotal: 926264 kB MemFree: 205068 kB MemAvailable: 645276 kB Cached: 554564 kB SwapCached: 0 kB SwapTotal: 1572860 kB SwapFree: 1572860 kB #查找/etc目錄下的所有檔案中的郵件地址;-R遞回,-n表示匹配的行號,-o只輸出匹配內容,-E支持擴展正則運算式, [root@web_server01~]# grep -R -o -n -E '[a-z0-9_]+\@[a-z0-9_]+\.[a-z]{2,4}' /etc/ /etc/grub.d/00_tuned:6:jskarvad@redhat.com /etc/libreport/events.d/abrt_event.conf:102:password@server.name /etc/libreport/plugins/ureport.conf:8:foo@example.com Binary file /etc/alternatives/libnssckbi.so.x86_64 matches Binary file /etc/alternatives/nmap matches /etc/alternatives/jre/THIRD_PARTY_README:429:policy@w3.org /etc/alternatives/jre/THIRD_PARTY_README:1112:team@lists.sour /etc/alternatives/jre/THIRD_PARTY_README:1146:team@lists.sour #查找/etc/目錄下檔案中包含“HOSTNAME”的次數,-c統計匹配次數,-v取反 [root@ns ~]# grep -R -c 'HOSTNAME' /etc/ |grep -v "0$" #查找包含“HOSTNAME”的檔案名,-l顯示匹配的檔案名,-L顯示不匹配的檔案名 [root@web_server01~]# grep -R -l 'HOSTNAME' /etc/ [root@web_server01~]# dmesg | grep -n --color=auto 'eth' #查找內核日志中eth的行,顯示顏色及行號 [root@web_server01~]# dmesg | grep -n -A3 -B2 --color=auto 'eth' #用 dmesg 列出核心資訊,再以 grep 找出內含 eth 那行,在關鍵字所在行的前兩行與后三行也一起找出出來顯示 #統計系統中能登錄的用戶的個數 [root@web_server01~]# cat /etc/passwd |grep -c bash$ [root@web_server01~]# cd /tmp [root@web_server01~]# touch /tmp/{123,123123,456,1234567}.txt [root@web_server01~]# ls |grep -E '(123)+' [root@web_server01~]# ls |grep '\(123\)\+' [root@web_server01~]# ls |egrep '(123)+' #統計httpd行程數量 [root@web_server01~]# ps -ef |grep -c httpd #顯示games匹配的“-C”前后4行 [root@web_server01~]# grep -C 4 'games' --color /etc/passwd #查看adm組的資訊 [root@web_server01~]#grep ^adm /etc/group #獲取網卡名稱 [root@web_server01~]# ip a |grep -E '^[0-9]' |awk -F : '{print $2}' \ #截取ip地址,[^ ]*表示以非空字符作為結束符,[0-9.]*表示數字和點的組合 [root@ns ~]# ifconfig eth0 |grep -E -o 'inet addr:[^ ]*' |grep -o '[0-9.]*' #截取MAC地址 [root@web_server01~]# ifconfig eth0 |grep -i hwaddr |awk '{print $5}'
13.3 sed 命令 —流編輯器,實作對文本的增刪改查
-
案例演示
# sed流編輯器:實作對文本的增刪改查 1.改(替換):語法sed -i '/s/#/#/g' 檔案名 # 將網卡組態檔的 dhcp 替換成 static 的 [root@web_server01~]# sed -i 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-eth1 # 準備測驗內容 [root@web_server01~]# vim ip ##撰寫測驗檔案 IP1=dhcp IP2=dhcp IP=dhcp :wq #將所有的dhcp替換為static [root@web_server01~]# sed -i 's/dhcp/static/g' ip #將IP1開頭的行替換 [root@web_server01~]# sed -i '/^IP1/s/static/dhcp/g' ip #指定特定行號2行替換 [root@web_server01~]# sed -i '2s/static/dhcp/g' ip #查看并顯示行號 [root@web_server01~]# cat -n /etc/selinux/config #開啟selinux [root@web_server01~]# sed -i '7s/disabled/enforcing/g' /etc/selinux/config # 關閉selinux [root@web_server01~]# sed -i 's/enforcing/disabled/g' /etc/selinux/config 2.刪:sed '/運算式/d' 檔案 #添加空行 [root@web_server01~]# vim ip #洗掉空行并顯示在螢屏上 [root@web_server01~]# sed '/^$/d' ip #洗掉包含IP1的行 [root@web_server01~]# sed -i '/IP1/d' ip #洗掉以IP2開頭的行 [root@web_server01~]# sed -i '/^IP2/d' ip #洗掉第二行 [root@web_server01~]# sed -i '2d' ip 3.增:sed ' /運算式/a "需要添加的文字"' 檔案 #每一行后都加上IP3=static [root@ns ~]# sed 'a IP3=static' ip #只在第3行后加上IP3=static,并顯示不修改 [root@ns ~]# sed '3a IP3=static' ip #只在第3行前加上IP3=static,顯示不修改 [root@ns ~]# sed '3i IP3=static' ip #修改,不顯示 [root@ns ~]# sed -i '3a IP3=static' ip #在以IP3開頭的行后添加 [root@ns ~]# sed -i '/^IP3/a "test add"' ip 4.查:sed -n '/運算式/p' 檔案 #查看第二行 [root@web_server01~]# sed -n '2p' /etc/hosts #查看包含www的決議記錄 [root@web_server01~]# sed -n '/www/p' /var/named/chroot/var/named/linuxfan.cn.zone #查看以.100結尾的行 [root@web_server01~]# sed -n '/.100$/p' /var/named/chroot/var/named/linuxfan.cn.zone #從第二行,每隔兩行顯示 [root@web_server01~]#sed -n '2~2p' ip # sed 取出IP地址 [root@web_server01~]# ip add show eth0|sed -n '3p' inet 10.0.0.7/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@web_server01~]# ip a s eth0|sed -n '3p'|sed -nr 's#^.*et (.*)/24.*eth0$#\1#gp' 10.0.0.7
13.4 awk 命令 — 指定分隔符,提取行
-
演示案例
# AWK 介紹 awk的作用是將檔案格式化(根據你的要求排版,注意區別于磁區的格式化)后顯示資訊, #語法: awk [選項] '模式{ 動作(action) }' 檔案1 檔案2 ... 最常見的動作:print,printf,BEGIN(開始處理第一行文本之前的操作),END(處理完最后一行文本之后的操作) #AWK 變數 FS:列分隔符,默認位空白 RS:行分隔符,默認位換行符 OFS:輸出列分隔符 ORS :輸出行分隔符 awk內置變數 NR:處理中行數 FNR:單個檔案的行數 NF:列的個數 #awk的基本原理特征: 1)每一次取一行 2)根據指定的分隔符(不指定為空白字符)將該行切割為列,使用$0(整行),$1,$2,$3...(第一列,第二列,...) 3)可以指定行號,列號,切割符,操作后分隔符 # 常用引數 -F 指定輸入時用到的欄位分隔符 -v 自定義變數 -f 從腳本中讀取awk命令 -m 對val值設定內在限制 #列印每一行的第二和第三個欄位: [root@web_server01~]# awk '{print $2,$3}' hh.txt hello world 10.0.0.1 #以截取eth1 的IP 地址: [root@web_server01~]# ifconfig eth1|grep netmask|awk '{print $2}' 172.16.1.7 # 截取eht0 的IP 地址 [root@web_server01~]# ip address show eth0 |awk 'NR==3' inet 10.0.0.7/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@web_server01~]# ip address show eth0 |awk 'NR==3' |awk '{print $2}' 10.0.0.7/24 [root@web_server01~]# 正則運算式(regexp),格式為:/regular expression/ [root@web_server01~]# awk -F : '/^h/{print $1}' /etc/passwd halt hbs [root@web_server01~]# 運算式(expression),值為非0或為非空是滿足條件,如$1 ~ /foo/或 $1 == "root" #列印普通用戶 [root@web_server01~]# awk -F : '$3>=500{print $1,$3,$7}' /etc/passwd polkitd 999 /sbin/nologin nginx 1001 /sbin/nologin hbs 1002 /bin/bash rivers 1003 /bin/bash #UID在10-100之間的用戶 [root@web_server01~]# awk -F : '$3+1<=100&&$3+1>=10{print $1,$3,$7}' /etc/passwd operator 11 /sbin/nologin games 12 /sbin/nologin ftp 14 /sbin/nologin nobody 99 /sbin/nologin dbus 81 /sbin/nologin tss 59 /sbin/nologin sshd 74 /sbin/nologin postfix 89 /sbin/nologin ntp 38 /sbin/nologin named 25 /sbin/nologin [root@web_server01~]# #檢查未初始化密碼的用戶 [root@web_server01~]# awk -F : '$2=="!!"{print $1,$2}' /etc/shadow systemd-network !! dbus !! polkitd !! tss !! abrt !! sshd !! postfix !! ntp !! nginx !! rivers !! named !! #列印密碼為空的用戶 [root@web_server01~]#awk -F : '$2==""{print $1}' /etc/shadow
14 系統資源/行程先關命令
14.1 ps 命令 — 查看系統行程資訊
-
案例演示
# 常用引數 ps 查看系統行程資訊 ps -ef 查看所有詳細的行程資訊 # 查看httpd 行程 [root@web_server01~]# ps -ef |grep httpd root 11176 1 0 15:03 ? 00:00:01 /usr/sbin/httpd -DFOREGROUND apache 11177 11176 0 15:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 11178 11176 0 15:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 11179 11176 0 15:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 11180 11176 0 15:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 11181 11176 0 15:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 12336 11691 0 21:26 pts/0 00:00:00 grep --color=auto httpd
14.2 kill命令 — 洗掉指定行程
-
案例演示
kill pid 洗掉指定pid號碼的行程 kill -9 pid 強制洗掉指定pid號碼的行程 [root@web_server01~]# kill -9 11177
14.3 systemctl命令 —管理服務程式的運行狀態
-
案例演示
# 常用引數 systemctl start 服務名稱 --- 啟動服務 systemctl stop 服務名稱 --- 停止服務 systemctl restart 服務名稱 --- 重啟服務 systemctl status 服務名稱 --- 查看服務詳細的運行狀態 systemctl disable 服務名稱 --- 讓服務開機不要運行 systemctl enable 服務名稱 --- 讓服務開機運行 systemctl is-active 服務名稱 --- 檢查確認服務是否運行 systemctl is-enabled 服務名稱 --- 檢查確認服務是否開機運行 # 一個命令關閉 開機自啟動/關閉防火墻 [root@web_server01~]# systemctl disable firewalld --now [root@web_server01~]#
14.4 uptime 命令 — 查看系統負載
-
案例演示
[root@web_server01~]# uptime 04:15:24 up 2 days, 13:05, 1 user, load average: 0.01, 0.02, 0.05 [root@web_server01~]# 現在時間、系統已經運行了多長時間、目前有多少登錄用戶、load average:系統在過去的1分鐘、5分鐘和15分鐘內的平均負載, load average:這三個值的大小一般不能大于系統CPU的個數,例如,本輸出中系統有8個CPU,如果load average的三個值長期大于8時,說明CPU很繁忙,負載很高,可能會影響系統性能,但是偶爾大于8時,倒不用擔心,一般不會影響系統性能, [root@web_server01~]# uptime -p #以漂亮的格式顯示機器正常運行的時間 up 2 days, 13 hours, 9 minutes [root@web_server01~]#uptime -s #系統自開始運行時間 年-月-日 小時-分鐘-秒 2021-06-08 15:09:34 [root@web_server01~]# uptime -h #顯示幫助資訊 服務器1: load average: 0.15, 0.08, 0.01 1核 服務器2: load average: 4**.15,** 6**.08,** 6**.01** 1核 服務器3: load average: 10**.15,** 10**.08,** 10**.01** 4核 答案:服務器2
14.5 vmstat 命令 —監控CPU
-
案例演示
[root@web_server01~]#vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 3059368 2104 230268 0 0 0 0 28 26 0 0 100 0 0 r串列示運行和等待cpu時間片的行程數,這個值如果長期大于系統CPU的個數,說明CPU不足,需要增加CPU, b串列示在等待資源的行程數,比如正在等待I/O、或者記憶體交換等, us列顯示了用戶行程消耗的CPU 時間百分比,us的值比較高時,說明用戶行程消耗的cpu時間多,但是如果長期大于50%,就需要考慮優化程式或演算法, sy列顯示了內核行程消耗的CPU時間百分比,Sy的值較高時,說明內核消耗的CPU資源很多, 根據經驗,us+sy的參考值為80%,如果us+sy大于 80%說明可能存在CPU資源不足,
14.6 top命令 —實時監控系統CPU
-
案例演示
[root@web_server01~]# top top - 04:50:43 up 2 days, 13:41, 1 user, load average: 0.10, 0.06, 0.06 Tasks: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3865308 total, 2912528 free, 573852 used, 378928 buff/cache KiB Swap: 524284 total, 524284 free, 0 used. 3028580 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 38151 root 20 0 0 0 0 S 0.3 0.0 0:01.93 kworker/0:0 1 root 20 0 125332 3828 2496 S 0.0 0.1 0:04.48 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.33 kthreadd top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個行程的資源占用狀況,常用于服務端性能分析, 第一行資料相當于uptime命令輸出,11:00:54是當前時間,up 54 days,23:55 是系統已經運行的時間,6 users表示當前有6個用戶在登錄,load average:16.32,18.75,21.04分別表示系統一分鐘平均負載,5分鐘平均負載,15分鐘平均負載, 平均負載 平均負載表示的平均活躍行程數,包括正在running的行程數,準備running(就緒態)的行程數,和處于不可中斷睡眠狀態的行程數,如果平均負載數剛好等于CPU核數,那證明每個核都能得到很好的利用,如果平均負載數大于核數證明系統處于過載的狀態,通常認為是超過核數的70%認為是嚴重過載,需要關注,還需結合1分鐘平均負載,5分鐘平均負載,15分鐘平均負載看負載的趨勢,如果1分鐘負載比較高,5分鐘和15分鐘的平均負載都比較低,則說明是瞬間升高,需要觀察,如果三個值都很高則需要關注下是否某個行程在瘋狂消耗CPU或者有頻繁的IO操作,也有可能是系統運行的行程太多,頻繁的行程切換導致,比如說上面的演示環境是一臺8核的centos機器,證明系統是長期處于過載狀態在運行, 第二行的Tasks資訊展示的系統運行的整體行程數量和狀態資訊,102 total 表示系統現在一共有102個用戶行程,1 running 1個行程正在處于running狀態,101 sleeping 表示101 個行程正處于sleeping狀態,0 stopped 表示 0 個行程正處于stopped狀態,0 zombie表示 有0個僵尸行程, 第3行的%Cpu(s)表示的是總體CPU使用情況, us user 表示用戶態的CPU時間比例 sy system 表示內核態的CPU時間比例 ni nice 表示運行低優先級行程的CPU時間比例 id idle 表示空閑CPU時間比例 wa iowait 表示處于IO等待的CPU時間比例 hi hard interrupt 表示處理硬中斷的CPU時間比例 si soft interrupt 表示處理軟中斷的CPU時間比例 st steal 表示當前系統運行在虛擬機中的時候,被其他虛擬機占用的CPU時間比例, 第4,5行顯示的是系統記憶體使用情況,單位是KiB,totol 表示總記憶體,free 表示沒使用過的內容,used是已經使用的記憶體,buff表示用于讀寫磁盤快取的記憶體,cache表示用于讀寫檔案快取的記憶體,avail表示可用的應用記憶體, 第6行開始往后表示的是具體的每個行程狀態: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND PID 行程ID USER 行程所有者的用戶名,例如root PR 行程調度優先級 NI 行程nice值(優先級),越小的值代表越高的優先級 VIRT 行程使用的虛擬記憶體 RES 行程使用的物理記憶體(不包括共享記憶體) SHR 行程使用的共享記憶體 CPU 行程使用的CPU占比 MEM 行程使用的記憶體占比 TIME 行程啟動后到現在所用的全部CPU時間 COMMAND 行程的啟動命令(默認只顯示二進制,top -c能夠顯示命令列和啟動引數)
14.7 iostat命令 —磁盤I/O性能評估
-
案例演示
iostat被用于監視系統輸入輸出設備和CPU的使用情況,它的特點是匯報磁盤活動統計情況,同時也會匯報出CPU使用情況, [root@web_server01~]# iostat -bash: iostat: command not found [root@web_server01~]# yum -y install sysstat [root@web_server01~]#iostat -d 1 10 #沒隔1秒,持續10次 Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 06/11/2021 _x86_64_ (2 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.08 1.36 0.66 304530 146757 scd0 0.00 0.00 0.00 1028 0 dm-0 0.00 0.01 0.00 2228 0 對上面每項的輸出解釋如下: kB_read/s表示每秒讀取的資料塊數, kB_wrtn/s表示每秒寫入的資料塊數, kB_read表示讀取的所有塊數, kB_wrtn表示寫入的所有塊數, 可以通過kB_read/s和kB_wrtn/s的值對磁盤的讀寫性能有一個基本的了解,如果kB_wrtn/s值很大,表示磁盤的寫操作很頻繁,可以考慮優化磁盤或者優化程式,如果kB_read/s值很大,表示磁盤直接讀取操作很多,可以將讀取的資料放入記憶體中進行操作,
14.8 netstat/ss — 顯示網路埠狀態
-
案例演示
# 常用引數 -a 顯示所有連線中的Socket -p 顯示正在使用Socket的程式識別碼和程式名稱 -u 顯示UDP傳輸協議的連線狀況 -i 顯示網路界面資訊表單 -n 直接使用IP地址,不通過域名服務器 # 查看httpd 服務埠狀態 [root@web_server01/etc/yum.repos.d]# netstat -lntup|grep httpd tcp6 0 0 :::80 :::* LISTEN 11176/httpd # 顯示埠 [root@web_server01/etc/yum.repos.d]# ss -lant State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* ESTAB 0 0 10.0.0.7:22 10.0.0.1:53220 ESTAB 0 52 10.0.0.7:22 10.0.0.1:55483 LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* [root@web_server01/etc/yum.repos.d]#
16.9 firewall-cmd 命令 — 防火墻相關命令
-
案例演示
# 開啟/關閉防火墻 systemctl start|stop firewalld.service # 查看防火墻轉態 [root@web_server01~]# firewall-cmd --state running [root@web_server01~]# 、 # 查看防火墻配置埠 [root@web_server01~]# firewall-cmd --list-all # 放行防火8080 埠 [root@web_server01~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent success [root@web_server01~]# firewall-cmd --reload success # 查看現有規則 [root@web_server01~]# firewall-cmd --zone=public --list-ports 8080/tcp #添加多個埠 [root@web_server01~]# firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp #洗掉某個埠 [root@web_server01~]#-cmd --permanent --zone=public --remove-port=81/tcp # 針對某個 IP開放埠 [root@web_server01~]#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.7" port protocol="tcp" port="6379" accept" # 洗掉某個IP [root@web_server01~]#firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.0.0.7" accept" # 針對一個ip段訪問 [root@web_server01~]#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept" [root@web_server01~]#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"
15.其它命令
-
案例演示
#設定日期 date 查看時間資訊和修改時間資訊 date "+%F_%T" date -s 設定系統時間 date -d 顯示未來或過去的時間資訊 # apt 常用命令 #列出所有可更新的軟體清單命令:sudo apt update #升級軟體包:sudo apt upgrade #列出可更新的軟體包及版本資訊: apt list --upgradeable #升級軟體包,升級前先洗掉需要更新軟體包: sudo apt full-upgrade #安裝指定的軟體命令: sudo apt install <package_name> #安裝多個軟體包: sudo apt install <package_1> <package_2> <package_3> #洗掉軟體包命令: sudo apt remove <package_name> #清理不再使用的依賴和庫檔案: sudo apt autoremove #查找軟體包命令: sudo apt search <keyword> #列出所有已安裝的包: apt list --installed #列出所有已安裝的包的版本資訊: apt list --all-versions
常用快捷方式
-
案例演示
# 快捷方式: 01. ctrl+c 中斷命令執行操作程序 02. ctrl+l 清屏操作 03. ctrl+d 注銷功能 04. tab 補全快捷鍵 補全目錄路徑或檔案名稱資訊/命令 05. 方向鍵上下 調取之前輸入過的歷史命令 06. ctrl+a 快速將游標移動到行首 a b c d 07. ctrl+e 快速將游標移動到行尾 08. ctrl+左右方向鍵 按照一個英文單詞進行移動游標 09. esc+. 將上一個命令最后一個資訊進行調取 10. ctrl+u 將游標所在位置到行首內容進行洗掉(剪切) 11. ctrl+k 將游標所在位置到行尾內容進行洗掉(剪切) 12. ctrl+y 粘貼剪切的內容 13. ctrl+s xshell進入到了鎖定狀態 suo鎖 14. ctrl+q 解除鎖定狀態 quit推出鎖定狀態 15. ctrl+r 快速搜索歷史命令
總結
堅持很難,但最后一定會有所識訓,linux 學習的程序是一個很枯燥的事情,對于很多剛入門的人來說,命令太多,引數太多,根本記不住的 困惑,其實作為 過來人,學習方式就是四個字熟能生巧,
我們可以找一個好的教材,然后找一份質量好的視頻,看一遍,然后對著教材在學習一遍,形成自己的筆記,建議第一遍紙質的筆記,第二遍可以是電子檔的,每一遍都要重復的去實驗,做到理論+實踐,相信進過1年,你會有質的飛躍,以上的命令總結是平時用的較多,整理的,想起來了的命令,就會慢慢積累,如果你覺得有用,就收藏起來吧!
以夢為馬,不負韶華,流年笑擲,未來可期
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300477.html
標籤:其他
