Linux運維-常用操作-培訓用例
一、伺服器環境
Centos 7.9
二、常用連接工具(免費)
1、Finalshell
2、MobaXterm
3、Putty + WinSCP
三、Linux 系統目錄結構

/bin :是 Binaries (二進位文件) 的縮寫, 這個目錄存放著最經常使用的命令。
/boot:這裡存放的是啟動 Linux 時使用的一些核心文件,包括一些連接文件以及鏡像文件。
/dev :是 Device(設備) 的縮寫, 該目錄下存放的是 Linux 的外部設備,在 Linux 中訪問設備的方式和訪問文件的方式是相同的。
/etc: 是 Etcetera(等等) 的縮寫,這個目錄用來存放所有的系統管理所需要的配置文件和子目錄。
/home:用戶的主目錄,在 Linux 中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的帳號命名的,如上圖中的 alice、bob 和 eve。
/lib: 是 Library(庫) 的縮寫這個目錄里存放著系統最基本的動態連接共享庫,其作用類似於 Windows 里的 DLL 文件。幾乎所有的應用程式都需要用到這些共享庫。
/lost+found:這個目錄一般情況下是空的,當系統非法關機後,這裡就存放了一些文件。
/media:linux 系統會自動識別一些設備,例如 U 盤、光碟機等等,當識別後,Linux 會把識別的設備掛載到這個目錄下。
/mnt:系統提供該目錄是為了讓用戶臨時掛載別的文件系統的,我們可以將光碟機掛載在 /mnt/ 上,然後進入該目錄就可以查看光碟機里的內容了。
/opt:是 optional(可選) 的縮寫,這是給主機額外安裝軟體所擺放的目錄。比如你安裝一個 ORACLE 資料庫則就可以放到這個目錄下。默認是空的。
/proc: 是 Processes(進程) 的縮寫,/proc 是一種偽文件系統(也即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,這個目錄是一個虛擬的目錄,它是系統記憶體的映射,我們可以通過直接訪問這個目錄來獲取系統資訊。這個目錄的內容不在硬碟上而是記憶體里,我們也可以直接修改裡面的某些文件,比如可以通過下面的命令來屏蔽主機的 ping 命令,使別人無法 ping 你的機器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:該目錄為系統管理員,也稱作超級許可權者的用戶主目錄。
/sbin:s 就是 Super User 的意思,是 Superuser Binaries (超級用戶的二進位文件) 的縮寫,這裡存放的是系統管理員使用的系統管理程式。
/selinux:這個目錄是 Redhat/CentOS 所特有的目錄,Selinux 是一個安全機制,類似於 windows的防火牆,但是這套機制比較複雜,這個目錄就是存放 selinux 相關的文件的。
/srv:該目錄存放一些服務啟動之後需要提取的數據。
/sys:這是 Linux2.6 內核的一個很大的變化。該目錄下安裝了 2.6 內核中新出現的一個文件系統 sysfs 。
sysfs 文件系統集成了下面 3 種文件系統的資訊:針對進程資訊的 proc 文件系統、針對設備的 devfs 文件系統以及針對偽終端的 devpts 文件系統。
該文件系統是內核設備樹的一個直觀反映。當一個內核對象被創建的時候,對應的文件和目錄也在內核對象子系統中被創建。
/tmp:是 temporary(臨時) 的縮寫這個目錄是用來存放一些臨時文件的。
/usr:是 unix shared resources(共享資源) 的縮寫,這是一個非常重要的目錄,用戶的很多應用程式和文件都放在這個目錄下,類似於 windows 下的 program files 目錄。
/usr/bin:系統用戶使用的應用程式。
/usr/sbin:超級用戶使用的比較高級的管理程式和系統守護程式。
/usr/src:內核源程式碼默認的放置目錄。
/var:是 variable(變數) 的縮寫,這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌文件。
/run:是一個臨時文件系統,存儲系統啟動以來的資訊。當系統重啟時,這個目錄下的文件應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。
四、Linux 與 Windows 默認目錄對比
/usr:系統級的目錄,可以理解為 C:/Windows/
/usr/lib:理解為 C:/Windows/System32。
/usr/local:用戶級的程式目錄,可以理解為 C:/Progrem Files/。用戶自己編譯的軟體默認會安裝到這個目錄下。
/opt:用戶級的程式目錄,可以理解為 D:/Software,opt 有可選的意思,這裡可以用於放置第三方大型軟體(或遊戲),當你不需要時,直接 rm -rf 掉即可。在硬碟容量不夠時,也可將/opt 單獨掛載到其他磁碟上使用。
/home:是一般賬戶所在目錄,可以理解為 C:/Users,軟體的用戶級配置文件就在該一般賬戶所對應的目錄下
五、Linux 運維常用命令
1、 關機:shutdown
shutdown -h now # 立即關機
halt
poweroff
2、 重啟:
reboot # 立即重啟
shutdown -r now
3、 查看當前用戶:
whoami # 顯示當前用戶
4、 查看所有用戶和組:
cat /etc/passwd # 查看所有用戶資訊
cat /etc/group # 查看所有組資訊
5、 切換用戶:
su # 默認切換到 root
su - # 默認切換到 root
su user01 # 臨時切換到 user01 用戶,環境變數不變
su – user01 # 徹底切換到 user01 用戶
ps:使用 su 命令時,有-和沒有-是完全不同的,-選項表示在切換用戶身份的同時,連當前使用的環境變數也切換成指定用戶的。初學者可以這樣理解它們之間的區別,即有-選項,切換用戶身份更徹底
6、 設置用戶密碼:passwd
passwd # 設置/修改當前用戶密碼
passwd [用戶名] # 設置/修改指定用戶密碼,需 root 許可權
passwd -d [用戶名] # 刪除用戶密碼,需 root 許可權
passwd -l [用戶名] # 停用賬戶,需 root 許可權
passwd -u [用戶名] # 啟用賬戶,需 root 許可權
7、 切換目錄:cd [目錄路徑]
cd / # 切換到根目錄
cd /usr/local # 切換到/usr/local 目錄
cd .. # 切換到上一級目錄
8、 查看作業系統發行資訊:
cat /etc/centos-release # 查看作業系統發行資訊
9、 查看內核版本:
uname -a # 查看內核版本
10、查看 CPU 及記憶體使用率:
top # 顯示進程動態,類似 Windows 任務管理器
#常用交互命令如下:
c: 顯示完整的命令
i: 忽略閑置和僵死進程
M: 根據記憶體資源使用大小進行排序
P: 根據 CPU 資源使用大小進行排序
q: 退出 top 命令
< : 向前翻頁,或使用PageUp
> : 向後翻頁,或使用PageDown
11、查看磁碟空間:df
df -h # 查看磁碟空間使用情況
12、查看目錄或文件大小:du
du -h # 查看當前目錄下所有子目錄的大小
du -sh # 統計當前目錄佔用空間總大小
du -sh * # 統計當前目錄每個子目錄及文件的大小
du -sh * --time # 統計大小並顯示修改時間
du -sh * | sort -rh # 查看當前目錄文件大小並按大小排序倒序輸出
13、查看當前路徑:pwd
pwd # 顯示當前路徑
14、查看 ip:ip/ifconfig
ip a # 顯示網路資訊
ip addr
ip address
ifconfig # 顯示網路資訊
15、查看軟體進程:ps
ps -ef | grep java # 查看 java 相關的進程
16、查看埠佔用情況:netstat
netstat -ntlp | grep 8080 # 查看佔用 8080 埠的進程
17、殺掉進程:kill -9 [PID 進程號]
kill -9 35322 # 殺掉進程號 35322,-9 表示強制殺掉
18、防火牆配置:
systemctl start firewalld # 開啟防火牆,需 root 驗證
systemctl stop firewalld # 停止防火牆,需 root 驗證
systemctl restart firewalld # 重啟防火牆,需 root 驗證
systemctl status firewalld # 查看防火牆狀態
firewall-cmd --state # 查看防火牆狀態
firewall-cmd --reload # 重載防火牆配置
firewall-cmd --add-service=ftp # 臨時開放 ftp 服務
firewall-cmd --add-service=ftp --permanent # 永久開放 ftp 服務
firewall-cmd --remove-service=ftp --permanent # 永久移除 ftp 服務
firewall-cmd --add-port=80/tcp # 臨時添加 80 埠
firewall-cmd --add-port=80/tcp --permanent # 永久添加 80 埠
firewall-cmd --remove -port=80/tcp --permanent # 永久移除 80 埠
firewall-cmd --list-ports # 查看已經開放的埠
19、列出目錄及文件名:ls或ll
ls # 列出目錄及文件
ls -a # 列出目錄及文件,包含隱藏文件
ll # 是ls -l 的別名,列出目錄及文件的詳細資訊
20、搜索文件位置:find/locate/whereis/which
1) find <指定目錄> -option <指定條件> <指定動作>
- <指定目錄>: 所要搜索的目錄及其所有子目錄。默認為當前目錄
- <指定條件>: 所要搜索的文件的特徵
- <指定動作>: 對搜索結果進行特定的處理
- option:過濾方式,最常用的是-name,按名稱查找
ps:如果什麼參數也不加,find 默認搜索當前目錄及其子目錄,並且不過濾任何結果(也就是返回所有文件),將它們全都顯示在螢幕上
find . -name my* # 搜索當前目錄下名字是 my 開頭的目錄或文件
find / -name java # 全盤搜索名字為 java 的目錄或文件
find /usr -name *.log -ls # 搜索/usr 下的.log 文件,並顯示詳細資訊
find /usr/ -size +10M -ls # 搜索/usr 下大於 10M 的文件
2) locate
locate命令其實是「find -name」的另一種寫法,但是要比後者快得多,原因在於它不搜索具體目錄,而是搜索一個資料庫(/var/lib/locatedb),這個資料庫中含有本地所有文件資訊。Linux 系統自動創建這個資料庫,並且每天自動更新一次,所以使用 locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用 locate 之前,先使用updatedb命令,手動更新資料庫
locate java # 查看 java 相關的目錄及文件
locate /usr/my*.log # 查看/usr 中 my 開頭的 log 文件
ps:CentOS7 默認沒有安裝該命令
3) whereis
whereis 命令只能用於程式名的搜索,而且只搜索二進位文件(參數-b)、man 說明文件(參數-m)和源程式碼文件(參數-s)。如果省略參數,則返回所有資訊
whereis nginx # 查看 nginx 的位置
4) which
which 命令的作用是,在 PATH 變數指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用 which 命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令
which java # 查看 java 命令的位置
21、創建目錄:mkdir [目錄名]
mkdir test # 創建 test 目錄
mkdir /usr/local/test # 創建 test 目錄
22、創建文件:touch [文件名]
touch aaa.txt # 創建aaa.txt文件
touch /usr/local/aaa.txt # 創建aaa.txt文件
23、複製文件或目錄:cp -r [源目錄名或源文件名] [目標目錄名或目標文件名]
cp aaa.txt aaa_bak.txt # 複製aaa.txt文件並命名為 aaa_bak.txt
cp aaa.txt /usr/local # 複製aaa.txt 到/usr/local 目錄下
cp -r nginx /usr/local # 將 nginx 目錄複製到/usr/local 目錄下
24、移動文件或目錄:mv [源目錄名或源文件名] [目標目錄名或目標文件名]
mv aaa.txt bbb.txt # 相當於文件重命名
mv aaa.txt /usr # 將文件移動到/usr 目錄下
mv nginx /usr/local # 將 nginx 目錄移動到/usr/local 目錄下
25、刪除文件或目錄:rm -rf [目錄名或文件名]
rm -rf aaa.txt # 刪除文件
rm -rf /usr/test # 刪除目錄
26、查看文件:cat/less/more/tail
cat aaa.txt # 全部顯示
less aaa.txt # 分頁顯示(向前向後都可以翻)
more aaa.txt # 分頁顯示(只能向後翻)
head aaa.txt # 默認顯示開頭 10 行
tail aaa.txt # 默認顯示最後 10 行
27、實時查看文件(常用於追蹤日誌資訊):tail
tail -fn 1000 aaa.txt # 實時顯示最後 1000 行
28、編輯文件:vi或vim
vi aaa.txt # vi 文本編輯器 vim aaa.txt(推薦) # vi 的升級版本,功能更多,語法高亮 #常用命令 i # 進入輸入模式,此時可編輯文件 [ESC] # 退出輸入模式 [PageUp] # 向上翻頁 [PageDown] # 向下翻頁 / + n # 查找字元串,如/java,按 n 可以查找下一個 gg # 移動到文件首行 G # 移動到文檔最後一行 dd # 刪除游標所在的一行 10dd # 刪除游標所在的向下 10 行 dG # 刪除游標所在到最後一行的所有數據 ggdG # 刪除所有數據 yy # 複製游標所在的一行 10yy # 複製游標所在的向下 10 行 yG # 複製游標所在到最後一行的所有數據 ggyG # 複製所有數據 p # 粘貼,相當於 windows 中的 ctrl+v u # 撤銷上次操作,相當於 windows 中的 ctrl+z :set nu # 顯示行號 :q # 退出編輯器 :q! # 強制退出編輯器,不保存已修改內容 :w # 保存 :wq # 保存並退出 :saveas aaa2.txt # 另存為
29、修改文件所有者:chown
chown root /usr/aaa.txt # 把/usr/aaa.txt的所有者設置為 root
chown -R mysql:mysql /logs # 更改 logs 目錄的所有者和組
30、修改文件讀寫許可權:chmod
只有文件所有者和root 用戶可以修改文件或目錄的許可權
可以使用符號模式和絕對模式(八進位數字模式)指定文件的許可權
Linux 的文件調用許可權分為三級 : User(文件所有者)、Group(用戶組)、Other Users(其它用戶)

1) 符號模式
chmod ugo+r aaa.txt # 把aaa.txt設置為所有人可讀
chmod a+rwx aaa.txt # 最大許可權,a 代表 all,等同於 ugo
2) 絕對模式(八進位數字模式)
chmod 444 aaa.txt # 把aaa.txt設置為所有人可讀
chmod 754 aaa.txt # 常用許可權
chmod 777 aaa.txt # 最大許可權
31、系統日誌查看:journalctl
journalctl # 默認顯示所有的資訊(從舊到新)
journalctl -r # -r 參數表示反序輸出(從新到舊)
journalctl -f # -f 實時輸出最新日誌
journalctl -n 50 # -n 指定輸出 50 行
journalctl -p 3 # -p 過濾日誌級別
# 0: emer 系統的嚴重問題日誌
# 1: alert 系統中立即要更改的資訊
# 2: crit 嚴重級別會導致系統軟體不能工作
# 3: err 程式報錯
# 4: warning 程式警告
# 5: notice 重要資訊的普通日誌
# 6: info 普通訊息
# 7: debug 程式排錯資訊
#顯示指定時間段內發生的事件日誌,通過since和until 參數來實現,其中日期的格式是「YYYY-MM-DD HH:MM:SS」
journalctl –since “2022-02-25 10:00:00” –until “2022-02-25 12:00:00”
journalctl -u nginx.service # -u 查看某些服務的日誌
journalctl _UID=123 # 查看某個用戶的日誌,「id [用戶]」查看 uid
journalctl -k # 查看內核日誌
journalctl -b # 查看系統啟動日誌
journalctl –disk-usage # 查看日誌佔用空間
journalctl –vacuum-size=1G # 限制 journal 佔用磁碟空間大小
journalctl –vacuum-time=1months # 限制 journal 日誌保存時間
六、Java 環境
1、查看 java 版本
java -version # 查看版本
2、查看路徑
whereis java # 查看路徑
3、配置環境變數
vim /etc/profile # 配置環境變數
#/etc/profile 最下方添加
export JAVA_HOME=[java 安裝路徑]
export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile # 使配置立刻生效
七、Tomcat 環境
1、 設置埠號及字元編碼
vim /usr/local/soft/apache-tomcat-7.0.99-8080/conf/server.xml
2、 啟動/停止
systemctl status tomcat8080 # 運行狀態
systemctl start tomcat8080 # 開啟
systemctl stop tomcat8080 # 停止
systemctl restart tomcat8080 # 重啟
3、 應用部署
cd /usr/local/soft/apache-tomcat-7.0.99-8080/webapps/
4、 查看運行日誌
cd /usr/local/soft/apache-tomcat-7.0.99-8080/logs # 進入 logs 目錄
tail -f catalina.out # 實時查看運行日誌
八、Nginx 環境
1、 查看 nginx 版本
nginx -v # 查看版本
2、 查看路徑
whereis nginx # 查看路徑
3、 修改 nginx 配置文件
vim /usr/local/soft/nginx/conf/nginx.conf
4、 啟動/停止
systemctl status nginx # 運行狀態
systemctl start nginx # 開啟
systemctl stop nginx # 停止
systemctl restart nginx # 重啟
5、 查看運行日誌
cd /usr/local/soft/nginx/logs # 進入 logs 目錄
tail -f access.log # 實時查看運行日誌
九、Mysql 環境
1、 查看 mysql 版本
mysql -V # 查看版本,大寫
SQL> select version(); # 查看版本
2、 查看路徑
whereis mysql # 查看路徑
3、 配置文件
vim /etc/my.cnf # 配置文件
4、 啟動/停止
systemctl status mysql # 運行狀態
systemctl start mysql # 啟動
systemctl stop mysql # 停止
systemctl restart mysql # 重啟
十、Redis 環境
1、 查看 redis 版本
redis-server -v # 查看版本
redis-cli -v # 查看版本
2、 修改 redis 配置文件
vim /usr/local/soft/redis/bin/redis.conf
bind 127.0.0.1 # 只有指定的網段才能遠程訪問這個 redis
protected-mode no # 默認是 yes 的, 改為 no 表示允許遠程訪問
daemonize yes # 表明需要在後台運行
requirepass XXXX # 設置連接密碼,保障遠程訪問的安全性
3、 啟動/停止
systemctl status redis # 查看服務當前狀態
systemctl start redis # 啟動 redis 服務
systemctl stop redis # 停止 redis 服務
systemctl restart redis # 重新啟動服務
4、 常用命令
redis-cli # 連接 redis
redis-cli -a XXXX # 使用密碼連接
select [0~15] # 切換資料庫
keys * # 查看所有 key
keys aaa* # 模糊查詢 key
set aaa 123 # 新增/修改 aaa 的值
get aaa # 查詢 aaa 的值
del aaa # 刪除 aaa 的值
type aaa # 查看返回值類型
dbsize # 查看當前數據的 key 的數目
expire aaa 10 # 設置 aaa 的過期時間為 10 秒
ttl aaa # 查看 aaa 的剩餘存活時間
flushdb # 刪除當前資料庫的所有 key
flashall # 刪除所有資料庫的所有 key


