史上最全Linux常用指令彙總,又一吃灰教程

碼霸霸發表於2020-12-22



開發人員,必不可少的需要和Linux打交道,這裡整理了經常會用到的一些Linux相關的操作,能 快速幫你熟悉並操作Linux伺服器

本教程會在後續的使用中持續更新

檔案

資料夾操作
  • 檢視當前所在目錄

    pwd
    
  • 檢視目錄下檔案

    ls -a
    ll  # 以列表形式顯示目錄下檔案
    
  • 開啟目錄

    cd /user/local  #從根目錄開始進入到/user/local目錄
    cd local  #從當前目錄開始,進入到local目錄
    cd ..  #返回到上級目錄
    
  • 建立資料夾

    mkdir /user/local/user  # 從根目錄開始,建立/user/local/user,此操作必須/user/local存在
    mkdir -p /user/local/user # 建立目錄,任何一級的目錄不存在,都會建立
    
  • 刪除檔案

    rm -ri /test  #刪除根目錄下的test;此操作會引導使用者確認;輸入y回車刪除
    rm -rf /test  #直接刪除,不需要再次確認
    
  • 移動或修改檔名

    mv /test1 /test2 # 將test1移動到test2 也可以理解為重新命名為test2
    
  • 本地拷貝

    cp -rf /test /user/local  # 將根目錄下的test拷貝到/user/local
    
  • 遠端拷貝

    scp -rf /test root@192.168.1.123:/user/local 
    # 將本機根目錄下的test目錄拷貝到192.168.1.123的/user/local目錄下
    # root為192.168.1.123的使用者名稱;回車之後需要輸入密碼
    # 如果設定了免密登入,會直接拷貝過去
    

檔案檢視
  • 檢視前n行內容

    head -n /testfile  # n為要查詢的行數 如 head -3 /testfile,表示查詢testfile的前三行
    
  • 檢視後n行內容

    tail -n /testfile  # n 和上面的意思一樣
    
  • cat輸出檔案的所有內容

    cat /testfile
    
  • 檢視檔案實時更新

    tail -f /testfile  # 檔案的更新會實時展示出來
    
  • 輸出內容到檔案

    echo "輸出內容" >> /testfile  # 追加內容到檔案後面
    echo "輸出內容" > /testfile   # 覆蓋原有內容
    
檔案壓縮解壓
  • tar.gz

    • 解壓

      tar -zxvf filename.tar.gz
      
    • 壓縮

      tar –czf filename.tar.gz filename.txt
      
  • tar.bz2

    • 解壓

      tar -jxvf filename.tar.bz2
      
    • 壓縮

      tar –cjf filename.tar.bz2 filename.txt
      
  • tar

    • 解壓

      tar –xvf filename.tar
      
    • 壓縮

      tar –cvf filename.tar filename.txt
      
  • tar.Z

    • 解壓

      tar –xZvf filename.tar.Z
      
    • 壓縮

      tar –cZf filename.tar.Z filename.txt
      
  • rar

    需要先安裝rar

    • 解壓

      unrar e filename.rar
      
    • 壓縮

      rar a filename.rar filename.txt
      
  • zip

    需要安裝zip的軟體

    • 解壓

      unzip filename.zip
      
    • 壓縮

      zip filename.zip filename.txt
      
檔案查詢
  • 根據名稱查詢

    find / -name testfile
    
檔案編輯
  • 編輯檔案

    vi /testfile  # 開始編輯testfile
    
  • 進入編輯模式

    i
    insert
    # 按鍵盤i或者insert會進入編輯模式,左下角會有個--insert--
    

  • 推出編輯模式

    按esc即可推出編輯模式,推出後上圖顯示的insert會消失

  • 進入命令列模式

    # 非編輯模式下使用shift加:(英文模式下)進入命令列
    shift + :
    

  • 關鍵次查詢

    查詢檔案中的關鍵詞

    :/要查詢的關鍵詞      #如要查詢34
    
    按n會往下查詢下一個
    按shift + n往上查詢上一個 n和shift + n都是滾動查詢的
    

  • 儲存並退出(命令列模式下)

    wq
    

  • 強制儲存並退出(慎用)

    多人同時操作的時候,wq儲存會失敗,可以使用強制儲存

    wq!
    

  • 強制退出放棄修改(慎用)

    q!
    

  • 檔案內複製貼上

    • 終端下

      ctrl + shift + c   # 複製
      ctrl + shift + v   # 貼上
      
    • 在控制檯

      ctrl + insert    # 複製
      shift + insert   # 貼上
      

服務

  • 查詢某個服務的程式

    如查詢java

    ps -ef | grep java
    

  • 服務操作;開啟、暫停、重啟、自啟動等

    systemctl start docker.service    #啟動一個服務
    systemctl stop docker.service     #關閉一個服務
    systemctl restart docker.service  # 重啟一個服務
    systemctl status docker.service   # 顯示一個服務的狀態
    systemctl enable docker.service   # 在開機時啟用一個服務
    systemctl disable docker.service  # 在開機時禁用一個服務
    systemctl is-enabled docker.service     # 檢視服務是否開機啟動
    systemctl list-unit-files|grep enabled  # 檢視已啟動的服務列表
    systemctl --failed  # 檢視啟動失敗的服務列表
    
  • 殺掉某個程式

    kill -9 程式號    # 如上可以使用kill -9 2336 即可殺掉2336對應的java程式
    
  • 服務埠檢視

    • 檢視埠監聽情況

      ss -tnl
      

    • 埠查程式

      ss -lnp | grep 80
      
    • 使用net-tools檢視埠

      yum install -y net-tools
      netstat -tunl | grep ':80'
      netstat -tunlp
      netstat -apn | grep ':80' 
      netstat -ntu      檢視連線數
      netstat -nat|grep -i "80"|wc -l
      

定時任務

crontab說明
crontab [-u username]
    -e      (編輯定時任務)
    -l      (列出定時任務裡的命令)
    -r      (刪除定時任務)
定時任務格式
  • 格式

    *  *  *  *  *   command
    分 時 日  月 周   指令
    
  • 操作符

    • *
      

      取值範圍內的所有數字

    • 斜槓

      /
      

      每過多少個數字

    • 橫槓

      -
      

      從X到Z

    • 逗號

      ,
      

      雜湊數字

示例
  • 示例1:每1分鐘執行一次執行

    * * * * * echo "hello" >> /test/hello.txt
    
  • 示例2:每小時的第3和第15分鐘執行

    3,15 * * * * echo "hello" >> /test/hello.txt
    
  • 示例3:在上午8點到11點的第3和第15分鐘執行

    3,15 8-11 * * * echo "hello" >> /test/hello.txt
    
  • 示例4:每隔兩天的上午8點到11點的第3和第15分鐘執行

    3,15 8-11 */2  *  * echo "hello" >> /test/hello.txt
    
  • 示例5:每週一上午8點到11點的第3和第15分鐘執行

    3,15 8-11 * * 1 echo "hello" >> /test/hello.txt
    
  • 示例6:每晚的21:30執行

    30 21 * * * echo "hello" >> /test/hello.txt
    
  • 示例7:每月1、10、22日的4 : 45執行

    45 4 1,10,22 * * echo "hello" >> /test/hello.txt
    
  • 示例8:每週六、週日的1 : 10執行

    10 1 * * 6,0 echo "hello" >> /test/hello.txt
    
  • 示例9:每天18 : 00至23 : 00之間每隔30分鐘執行

    0,30 18-23 * * * echo "hello" >> /test/hello.txt
    
  • 示例10:每星期六的晚上11 : 00 pm執行

    0 23 * * 6 echo "hello" >> /test/hello.txt
    
  • 示例11:每一小時執行

    * */1 * * * echo "hello" >> /test/hello.txt
    
  • 示例12:晚上11點到早上7點之間,每隔一小時執行

    * 23-7/1 * * * echo "hello" >> /test/hello.txt
    
注意事項
  • 目錄建立

    如上示例中,如果出現資料夾的輸出,那麼資料夾必須存在

  • 指令

    環境變數中的指令手動執行的時候,可以快捷輸入,但定時任務就必須輸入全路徑

許可權

許可權定義
-rw-r--r--. 1 root root 4 Dec 22 18:28 /testfile

[rw-]           [r--]           [r--]
檔案所有者的許可權   檔案所在組的許可權   其他組的許可權

使用者組操作
useradd    #用於建立使用者
groupadd   #用於建立組
usermod    #用於修改使用者屬性
許可權說明
  • 資料夾

    r     # 只能讀取檔案列表
    w     # 沒有任何作用
    x     # 可以進入目錄
    rw    # 可以讀檔案列表,依舊無法刪除檔案
    rx    # 讀取檔案列表,可以cd進mul,但是無法刪除目錄下的檔案,對檔案有w許可權可以清空或者寫入
    wx    # 可以增加和刪除目錄中檔案,可以cd進目錄,但是無法檢視目錄有哪些內容,知道檔名可以開啟檔案
    rwx   # 可以進入目錄,顯示目錄中內容,可以增刪目錄中檔案
    
  • 檔案

    r     # 讀取檔案內容
    w     # 寫入
    x     # 執行,單獨的執行許可權只能執行二進位制可執行檔案
    rw    # 可讀可寫
    rx    # 可以執行二進位制之外的編譯類或者指令碼類的檔案
    wx    # 可以修改內容,無法檢視,可以執行二進位制可執行檔案
    rwx   # 可以檢視檔案內容,可以增刪檔案內容,可以執行可執行檔案
    
數字許可權說明
r : 4
w : 2
x : 1

許可權拆解
[-rwxrwxrwx]
[r w x] [r w x] [r w x]
[4+2+1] [4+2+1] [4+2+1]  ==> 許可權值為:777

[-rwxr-xr--]
[r w x] [r - x] [r - -]
[4+2+1] [4+0+1] [4+0+0]  ==> 許可權值為:754
設定許可權
chmod 777 /testfile   # 其中777為根據上面的數字許可權方式計算出來的

機器相關

cpu
  • 檢視CPU個數

    • 檢視物理CPU的個數

      cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
      

    • 檢視邏輯CPU的個數

      cat /proc/cpuinfo |grep "processor"|wc -l
      

  • 檢視CPU核數

    cat /proc/cpuinfo | grep "cpu cores" | uniq
    

  • 檢視CPU型號

    cat /proc/cpuinfo | grep 'model name' |uniq
    

  • 檢視CPU的主頻

    cat /proc/cpuinfo |grep MHz|uniq
    

  • 檢視CentOS版本

    cat /etc/redhat-release
    

  • 檢視作業系統核心版本

    cat /proc/version
    

  • 檢視bios資訊

    dmidecode -t bios
    

記憶體
  • 檢視記憶體總數

    cat /proc/meminfo | grep MemTotal
    

  • 檢視記憶體條數

    dmidecode | grep -A16 "Memory Device$"
    

磁碟
  • 檢視硬碟大小

    fdisk -l | grep Disk
    

  • 檢視磁碟佔用

    • 檢視整個磁碟佔用全款

      df -h
      

    • 檢視當前所處目錄的磁碟佔用

      du -h --max-depth=1
      

    • 按空間佔用排序

      du -s * | sort -nr | head 選出排在前面的10個
      du -s * | sort -nr | tail 選出排在後面的10個
      

網路卡
  • 檢視網路卡硬體資訊

    lspci | grep -i 'eth'
    

  • 檢視系統的所有網路介面

    ip addr
    

時間
  • 檢視時間

    date
    
  • 更新時間

    # 安裝ntpdate
    yum install -y ntpdate
    # 更新時間
    ntpdate 0.asia.pool.ntp.org
    # 將系統時間同步到硬體,防止系統重啟後時間被還原
    hwclock --systohc
    

其他更多操作

  • 以下命令也是比較常用的

    uname -a   # 檢視核心/作業系統/CPU資訊的linux系統資訊  
    head -n l /etc/issue  # 檢視作業系統版本  
    cat /proc/cpuinfo     # 檢視CPU資訊  
    hostname  # 檢視計算機名的linux系統資訊命令  
    lspci -tv # 列出所有PCI裝置  
    lsusb -tv # 列出所有USB裝置的linux系統資訊命令  
    lsmod     # 列出載入的核心模組  
    env       # 檢視環境變數資源  
    free -m   # 檢視記憶體使用量和交換區使用量  
    df -h     # 檢視各分割槽使用情況  
    du -sh    # 檢視指定目錄的大小  
    grep MemTotal /proc/meminfo  # 檢視記憶體總量  
    grep MemFree /proc/meminfo   # 檢視空閒記憶體量  
    uptime    # 檢視系統執行時間、使用者數、負載  
    cat /proc/loadavg   # 檢視系統負載磁碟和分割槽  
    mount | column -t   # 檢視掛接的分割槽狀態  
    fdisk -l    # 檢視所有分割槽  
    swapon -s   # 檢視所有交換分割槽  
    hdparm -i /dev/hda   # 檢視磁碟引數(僅適用於IDE裝置)  
    dmesg | grep IDE     # 檢視啟動時IDE裝置檢測狀況網路  
    ifconfig      # 檢視所有網路介面的屬性  
    iptables -L   # 檢視防火牆設定  
    route -n      # 檢視路由表  
    netstat -lntp # 檢視所有監聽埠  
    netstat -antp # 檢視所有已經建立的連線  
    netstat -s    # 檢視網路統計資訊程式  
    ps -ef # 檢視所有程式  
    top    # 實時顯示程式狀態使用者  
    w      # 檢視活動使用者  
    id     # 檢視指定使用者資訊  
    last   # 檢視使用者登入日誌  
    cut -d: -f1 /etc/passwd   # 檢視系統所有使用者  
    cut -d: -f1 /etc/group    # 檢視系統所有組  
    crontab -l       # 檢視當前使用者的計劃任務服務  
    chkconfig –list  # 列出所有系統服務  
    chkconfig –list | grep on # 列出所有啟動的系統服務程式  
    rpm -qa # 檢視所有安裝的軟體包  
    cat /proc/cpuinfo     # 檢視CPU相關引數的linux系統命令  
    cat /proc/partitions  # 檢視linux硬碟和分割槽資訊的系統資訊命令  
    cat /proc/meminfo     # 檢視linux系統記憶體資訊的linux系統命令  
    cat /proc/version     # 檢視版本,類似uname -r  
    cat /proc/ioports     # 檢視裝置io埠  
    cat /proc/interrupts  # 檢視中斷  
    cat /proc/pci         # 檢視pci裝置的資訊  
    cat /proc/swaps       # 檢視所有swap分割槽的資訊  
    

部分內容參考於: dwz-9.cn/0S8fS

End


相關文章