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、列出目錄及文件名:lsll

  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、編輯文件:vivim

  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

 

 
Tags: