整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          你知道這些Linux命令嗎?165條技術人需要了解的Linux系統命令

          源:banana 童

          www.cnblogs.com/bananaaa/p/7774467.html

          linux 命令是對 Linux 系統進行管理的命令。對于 Linux 系統來說,無論是中央處理器、內存、磁盤驅動器、鍵盤、鼠標,還是用戶等都是文件, Linux 系統管理的命令是它正常運行的核心,與之前的 DOS 命令類似。linux 命令在系統中有兩種類型:內置 Shell 命令和 Linux 命令。

          1.線上查詢及幫助命令(2個)

          man

          查看命令幫助,命令的詞典,更復雜的還有 info,但不常用。

          help

          查看 Linux 內置命令的幫助,比如 cd 命令

          2.文件和目錄操作命令 (18 個)

          ls

          全拼 list,功能是列出目錄的內容及其內容屬性信息。

          cd

          全拼 change directory,功能是從當前工作目錄切換到指定的工作目錄。

          cp

          全拼 copy,其功能為復制文件或目錄。

          find

          查找的意思,用于查找目錄及目錄下的文件。

          mkdir

          全拼 make directories,其功能是創建目錄。

          mv

          全拼 move,其功能是移動或重命名文件。

          pwd

          全拼 print working directory,其功能是顯示當前工作目錄的絕對路徑。

          rename

          用于重命名文件。

          rm

          全拼 remove,其功能是刪除一個或多個文件或目錄。

          rmdir

          全拼 remove empty directories,功能是刪除空目錄。

          touch

          創建新的空文件,改變已有文件的時間戳屬性。

          tree

          功能是以樹形結構顯示目錄下的內容。



          dirname

          顯示文件或目錄路徑。

          chattr

          改變文件的擴展屬性。

          lsattr

          查看文件擴展屬性。

          file

          顯示文件的類型。

          md5sum

          計算和校驗文件的 MD5 值。

          3.查看文件及內容處理命令(21 個)

          cat

          全拼 concatenate,功能是用于連接多個文件并且打印到屏幕輸出或重定向到指定文件中。

          tac

          tac 是 cat 的反向拼寫,因此命令的功能為反向顯示文件內容。

          more

          分頁顯示文件內容。

          less

          分頁顯示文件內容,more 命令的相反用法。

          head

          顯示文件內容的頭部。

          tail

          顯示文件內容的尾部。

          cut

          將文件的每一行按指定分隔符分割并輸出。

          split

          分割文件為不同的小片段。

          paste

          按行合并文件內容。

          sort

          對文件的文本內容排序。

          uniq

          去除重復行。oldboy

          wc

          統計文件的行數、單詞數或字節數。

          iconv

          轉換文件的編碼格式。

          dos2unix

          將 DOS 格式文件轉換成 UNIX 格式。

          diff

          全拼 difference,比較文件的差異,常用于文本文件。

          vimdiff

          命令行可視化文件比較工具,常用于文本文件。

          rev

          反向輸出文件內容。

          grep/egrep

          過濾字符串,三劍客老三。

          join

          按兩個文件的相同字段合并。

          tr

          替換或刪除字符。

          vi/vim

          命令行文本編輯器。

          4.文件壓縮及解壓縮命令(4 個)

          tar

          打包壓縮。oldboy

          unzip

          解壓文件。

          gzip

          gzip 壓縮工具。

          zip

          壓縮工具。

          5.信息顯示命令(11 個)

          uname

          顯示操作系統相關信息的命令。

          hostname

          顯示或者設置當前系統的主機名。

          dmesg

          顯示開機信息,用于診斷系統故障。

          uptime

          顯示系統運行時間及負載。

          stat

          顯示文件或文件系統的狀態。

          du

          計算磁盤空間使用情況。

          df

          報告文件系統磁盤空間的使用情況。

          top

          實時顯示系統資源使用情況。

          free

          查看系統內存。

          date

          顯示與設置系統時間。

          cal

          查看日歷等時間信息。

          6.搜索文件命令(4 個)

          which

          查找二進制命令,按環境變量 PATH 路徑查找。

          find

          從磁盤遍歷查找文件或目錄。

          whereis

          查找二進制命令,按環境變量 PATH 路徑查找。

          locate

          從數據庫 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新庫。

          7.用戶管理命令(10 個)

          useradd

          添加用戶。

          usermod

          修改系統已經存在的用戶屬性。

          userdel

          刪除用戶。

          groupadd

          添加用戶組。

          passwd

          修改用戶密碼。

          chage

          修改用戶密碼有效期限。

          id

          查看用戶的 uid,gid 及歸屬的用戶組。

          su

          切換用戶身份。

          visudo

          編輯 / etc/sudoers 文件的專屬命令。

          sudo

          以另外一個用戶身份(默認 root 用戶)執行事先在 sudoers 文件允許的命令。

          8.基礎網絡操作命令(11 個)

          telnet

          使用 TELNET 協議遠程登錄。

          ssh

          使用 SSH 加密協議遠程登錄。

          scp

          全拼 secure copy,用于不同主機之間復制文件。

          wget

          命令行下載文件。

          ping

          測試主機之間網絡的連通性。

          route

          顯示和設置 linux 系統的路由表。

          ifconfig

          查看、配置、啟用或禁用網絡接口的命令。

          ifup

          啟動網卡。

          ifdown

          關閉網卡。

          netstat

          查看網絡狀態。

          ss

          查看網絡狀態。

          9.深入網絡操作命令(9 個)

          nmap

          網絡掃描命令。

          lsof

          全名 list open files,也就是列舉系統中已經被打開的文件。

          mail

          發送和接收郵件。

          mutt

          郵件管理命令。

          nslookup

          交互式查詢互聯網 DNS 服務器的命令。

          dig

          查找 DNS 解析過程。

          host

          查詢 DNS 的命令。

          traceroute

          追蹤數據傳輸路由狀況。

          tcpdump

          命令行的抓包工具。

          10.有關磁盤與文件系統的命令(16 個)

          mount

          掛載文件系統。

          umount

          卸載文件系統。

          fsck

          檢查并修復 Linux 文件系統。

          dd

          轉換或復制文件。

          dumpe2fs

          導出 ext2/ext3/ext4 文件系統信息。

          dump

          ext2/3/4 文件系統備份工具。

          fdisk

          磁盤分區命令,適用于 2TB 以下磁盤分區。

          parted

          磁盤分區命令,沒有磁盤大小限制,常用于 2TB 以下磁盤分區。

          mkfs

          格式化創建 Linux 文件系統。

          partprobe

          更新內核的硬盤分區表信息。

          e2fsck

          檢查 ext2/ext3/ext4 類型文件系統。

          mkswap

          創建 Linux 交換分區。

          swapon

          啟用交換分區。

          swapoff

          關閉交換分區。

          sync

          將內存緩沖區內的數據寫入磁盤。

          resize2fs

          調整 ext2/ext3/ext4 文件系統大小。

          11.系統權限及用戶授權相關命令(4 個)

          chmod

          改變文件或目錄權限。

          chown

          改變文件或目錄的屬主和屬組。

          chgrp

          更改文件用戶組。

          umask

          顯示或設置權限掩碼。

          12.查看系統用戶登陸信息的命令(7 個)

          whoami

          顯示當前有效的用戶名稱,相當于執行 id -un 命令。

          who

          顯示目前登錄系統的用戶信息。

          w

          顯示已經登陸系統的用戶列表,并顯示用戶正在執行的指令。

          last

          顯示登入系統的用戶。

          lastlog

          顯示系統中所有用戶最近一次登錄信息。

          users

          顯示當前登錄系統的所有用戶的用戶列表。

          finger

          查找并顯示用戶信息。

          13.內置命令及其它(19 個)

          echo

          打印變量,或直接輸出指定的字符串

          printf

          將結果格式化輸出到標準輸出。

          rpm

          管理 rpm 包的命令。

          yum

          自動化簡單化地管理 rpm 包的命令。

          watch

          周期性的執行給定的命令,并將命令的輸出以全屏方式顯示。

          alias

          設置系統別名。

          unalias

          取消系統別名。

          date

          查看或設置系統時間。

          clear

          清除屏幕,簡稱清屏。

          history

          查看命令執行的歷史紀錄。

          eject

          彈出光驅。

          time

          計算命令執行時間。

          nc

          功能強大的網絡工具。

          xargs

          將標準輸入轉換成命令行參數。

          exec

          調用并執行指令的命令。

          export

          設置或者顯示環境變量。

          unset

          刪除變量或函數。

          type

          用于判斷另外一個命令是否是內置命令。

          bc

          命令行科學計算器

          14.系統管理與性能監視命令 (9 個)

          chkconfig

          管理 Linux 系統開機啟動項。

          vmstat

          虛擬內存統計。

          mpstat

          顯示各個可用 CPU 的狀態統計。

          iostat

          統計系統 IO。

          sar

          全面地獲取系統的 CPU、運行隊列、磁盤 I/O、分頁(交換區)、內存、 CPU 中斷和網絡等性能數據。

          ipcs

          用于報告 Linux 中進程間通信設施的狀態,顯示的信息包括消息列表、共享內存和信號量的信息。

          ipcrm

          用來刪除一個或更多的消息隊列、信號量集或者共享內存標識。

          strace

          用于診斷、調試 Linux 用戶空間跟蹤器。我們用它來監控用戶空間進程和內核的交互,比如系統調用、信號傳遞、進程狀態變更等。

          ltrace

          命令會跟蹤進程的庫函數調用, 它會顯現出哪個庫函數被調用。

          15.關機 / 重啟 / 注銷和查看系統信息的命令(6 個)

          shutdown

          關機。

          halt

          關機。

          poweroff

          關閉電源。

          logout

          退出當前登錄的 Shell。

          exit

          退出當前登錄的 Shell。

          Ctrl+d

          退出當前登錄的 Shell 的快捷鍵。

          16.進程管理相關命令(15 個)

          bg

          將一個在后臺暫停的命令,變成繼續執行 (在后臺執行)。

          fg

          將后臺中的命令調至前臺繼續運行。

          jobs

          查看當前有多少在后臺運行的命令。

          kill

          終止進程。

          killall

          通過進程名終止進程。

          pkill

          通過進程名終止進程。

          crontab

          定時任務命令。

          ps

          顯示進程的快照。

          pstree

          樹形顯示進程。

          nice/renice

          調整程序運行的優先級。

          nohup

          忽略掛起信號運行指定的命令。

          pgrep

          查找匹配條件的進程。

          runlevel

          查看系統當前運行級別。

          init

          切換運行級別。

          service

          啟動、停止、重新啟動和關閉系統服務,還可以顯示所有系統服務的當前狀態。

          Linux常用命令速查手冊】關注【入門小站】,后臺回復 「1001」 自取。

          route命令用來顯示并設置Linux內核中的網絡路由表,route命令設置的路由主要是靜態路由。要實現兩個不同的子網之間的通信,需要一臺連接兩個網絡的路由器,或者同時位于兩個網絡的網關來實現。

          在Linux系統中設置路由通常是為了解決以下問題:該Linux系統在一個局域網中,局域網中有一個網關,能夠讓機器訪問Internet,那么就需要將這臺機器的ip地址設置為Linux機器的默認路由。要注意的是,直接在命令行下執行route命令來添加路由,不會永久保存,當網卡重啟或者機器重啟之后,該路由就失效了;可以在/etc/rc.local中添加route命令來保證該路由設置永久有效。

          命令語法

          route(選項)(參數)

          命令選項

          • -A:設置地址類型;
          • -C:打印將Linux核心的路由緩存;
          • -v:詳細信息模式;
          • -n:不執行DNS反向查找,直接顯示數字形式的IP地址;
          • -e:netstat格式顯示路由表;
          • -net:到一個網絡的路由表;
          • -host:到一個主機的路由表。

          命令參數

          • add:增加指定的路由記錄;
          • del:刪除指定的路由記錄;
          • target:目的網絡或目的主機;
          • gw:設置默認網關;
          • mss:設置TCP的最大區塊長度(MSS),單位MB;
          • window:指定通過路由表的TCP連接的TCP窗口大小;
          • dev:路由記錄所表示的網絡接口。

          顯示當前路由

          > route
          

          顯示當前路由表(顯示ip地址)

          > route -n
          

          route -n不執行DNS反向查找,直接顯示數字形式的IP地址,列出速度會比route快

          字段說明

          含義

          Destination

          目標網絡或目標主機。Destination 為 default(0.0.0.0)時,表示這個是默認網關,所有數據都發到這個網關(這里是 10.139.128.1)

          Gateway

          網關地址,0.0.0.0 表示當前記錄對應的 Destination 跟本機在同一個網段,通信時不需要經過網關

          Genmask

          Destination 字段的網絡掩碼,Destination 是主機時需要設置為 255.255.255.255,是默認路由時會設置為 0.0.0.0

          Flags

          標記,含義參考表格后面的解釋

          Metric

          路由距離,到達指定網絡所需的中轉數,是大型局域網和廣域網設置所必需的 (不在Linux內核中使用。)

          Ref

          路由項引用次數 (不在Linux內核中使用。)

          Use

          此路由項被路由軟件查找的次數

          Iface

          網卡名字,例如 eth0

          Flags 含義

          • U 路由是活動的
          • H 目標是個主機
          • G 需要經過網關
          • R 恢復動態路由產生的表項
          • D 由路由的后臺程序動態地安裝
          • M 由路由的后臺程序修改
          • ! 拒絕路由

          主機路由

          路由表中指向單個 IP 地址或主機名的路由記錄,其 Flags 字段為 H。下面示例中,對于 10.0.0.8 這個主機,通過網關 192.168.0.1 網關路由:

          > route add -net 10.0.0.8 gateway 192.168.0.1 netmask 255.255.255.255 dev eth0
          > route -n 
          Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
          10.0.0.8        192.168.0.1     255.255.255.255 UGH   0      0        0 eth0
          

          網絡路由

          主機可以到達的網絡。下面示例中,對于10.0.0.0/24這個網絡,通過網關192.168.0.1網關路由:

          > route add -net 10.0.0.0/24 gateway 192.168.0.1   dev eth0
          > route -n
          Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
          10.0.0.0        192.168.0.1     255.255.255.0   UG    0      0        0 eth0
          
          //或者
          
          > route add -net 10.0.0.0 gateway 192.168.0.1  dev eth0
          

          默認路由

          當目標主機的 IP 地址或網絡不在路由表中時,數據包就被發送到默認路由(默認網關)上。默認路由的 Destination 是 default 或 0.0.0.0。

          > route
          default         gateway         0.0.0.0         UG    100    0        0 eth0
          

          添加同一個局域網的主機

          不指定 gw 選項時,添加的路由記錄不使用網關:

          > route add -net 10.10.1.0 netmask 255.255.255.0 dev eth0
          > route
          Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
          10.10.1.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
          

          屏蔽路由

          > route add -net 10.10.1.0 netmask 255.255.255.0 reject
          > route
          Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
          10.10.1.0       -               255.255.255.0   !     0      -        0 -
          

          刪除可用路由

          > route del -net 10.0.0.0 netmask 255.255.255.0
          

          同時匹配多個路由表時,執行一次刪除一條

          刪除和添加設置默認網關

          添加或刪除默認網關時,Linux 會自動檢查網關的可用性:

          > route add default gw 192.168.1.1
          SIOCADDRT: Network is unreachable
          > route del default gw 192.168.1.1
          SIOCDELRT: No such process
          

          原文鏈接:https://rumenz.com/rumenbiji/linux-route.html
          微信公眾號:入門小站

          【Linux常用命令速查手冊】關注【入門小站】,后臺回復 「1001」 自取。

          信大家對 Linux 肯定是不陌生的,很多同學在學習 Linux 的時候比較頭疼,覺得比較難學,命令多記不住,其實我們在學習 Linux 的時候,要把我們的大腦當成內存來用,而不是硬盤。

          本文用的是 Ubuntu 操作系統,版本為 ubuntu-21.04-desktop-amd64.iso。下載地址:

          http://mirrors.aliyun.com/ubuntu-releases/

          用的遠程連接工具為 FinalShell,下載地址:

          http://www.hostbuf.com/t/988.html

          幫助命令

          Linux 中有很多命令,命令也有很多參數,那我們要怎么去學習呢?我們可以借助幫助文檔,這里給大家介紹 3 個幫助命令:

          • man
          • help
          • info

          man

          man 是 manual 的縮寫,有問題找男人,當時這是一句開玩笑的話。

          man 命令的使用也非常簡單,示例如下:

          man ls
          

          man 也是一條命令,分為 9 章,可以使用 man 命令獲得 man 的幫助:

          man man 
          

          有的同學一定會好奇,為什么 man 命令給我們 9 章,這是因為命令和系統文件有的時候會出現重名的情況,比如:

          passwd        # 這是命令
          /etc/passwd    # 這是配置文件
          

          如果不知道是命令還是配置文件,加上 -a 參數:

          man -a passwd
          

          這個時候會先查看 passwd 命令,退出后會顯示:

          可以根據提示繼續查看,還是跳過當前的命令查看下一個命令:

          help 幫助

          這里我先要說一個內部命令和外部命令的概念,shell 自帶的命令稱為內部命令,其他的是外部命令。

          那要怎么區分到底是內部還是外部呢?通過 type,后面跟上命令。

          juran@juran-virtual-machine:~$ type cd
          cd 是 shell 內建
          

          如果是內部命令使用 help:

          help cd
          

          如果是外部命令使用 --help:

          ls --help
          

          info 幫助

          info 幫助比 help 更詳細,作為 help 的補充,大多數的情況下,我們使用 man 和 help 就足夠了。

          命令格式

          終端的命令組成:

          command [-options] [parameter]
          
          • command:命令名,
          • [-options]:選項,可以有零個、一個或者多個選項,多個選項可以合并,命令的選項用于調整命令功能
          • [parameter]:參數,可以有零個、一個 或者 多個參數,參數是命令的操作對象,一般文件、目錄、用戶和進程等可以作為參數被命令操作
          • []:代表可選

          查看目錄命令

          在 Linux 中一切皆文件,而且 Linux 中是沒有盤符的概念的,所有的文件都在根目錄下,接下來我們就來看下查看目錄的命令有哪些。

          ls 命令:列出文件夾中的內容,ls 只能查看一層目錄信息:

          ls     # 查看當前文件夾的內容
          
          ls /bin    # 查看 bin 目錄下的文件
          

          ls 命令還有一些比較常用的選項:

          命令選項

          說明

          -l

          以列表方式顯示

          -h

          件大小單位顯示,默認是字節

          -a

          顯示隱藏文件和隱藏目錄

          tree 命令:以樹狀方式顯示目錄信息,tree 可以查看多層目錄信息。

          tree        # 以樹狀方式顯示當前目錄信息
          
          tree /bin    # 如果提示沒有 tree 命令,可以通過 apt install tree 進行安裝
          

          查看當前目錄路徑

          pwd 命令:查看當前目錄路徑,是 print work directory 的縮寫。

          切換目錄命令

          cd 命令:切換目錄,是 change directory 的縮寫。

          cd 命令有幾個常用的寫法:

          命令

          說明

          cd 目錄

          切換到指定目錄

          cd ~

          切換到當前用戶的主目錄

          cd ..

          切換到上一級目錄

          cd .

          切換到當前目錄

          cd -

          切換到上一次目錄

          注意:cd 命令切換目錄時,這個目錄必須存在。cd 后面不寫目錄等價于 cd ~。

          創建、刪除文件及目錄命令

          touch 命令:創建指定文件

          touch abc.txt        # Linux 里面文件可以沒有后綴的
          
          touch a b c            # 可以一次創建多個文件
          

          mkdir 命令:創建目錄(文件夾)

          mkdir movie        # 創建 movie 目錄
          
          mkdir a b c        # 創建 a b c 目錄
          

          如果我想創建雙層的目錄,來試試:

          mkdir movie/active        # 想要創建 movie 下面的 active 目錄,而且 movie 目錄是沒有被創建過的
          
          mkdir: 無法創建目錄 “movie/active”: 沒有那個文件或目錄
          

          這是我們可以通過選項 -p:

          mkdir movie/active -p         # 選項和參數之間是沒有順序的,先寫那個都可以
          

          我們也可以通過查看幫助文檔,man mkdir:

          rm 命令:刪除指定文件或者目錄

          rm 命令刪除文件:

          rm abc.txt    
          

          rm 命令刪除目錄:

          mkdir juran
          rm juran
          rm: 無法刪除 'juran': 是一個目錄
          

          rm 命令是無法直接刪除目錄的,需要加上選項 -r:

          rm -r juran 
          

          可以通過 man rm 查看選項,下面來自幫助文檔:

          -r, -R, --recursive
              remove directories and their contents recursively
          

          rmdir 命令:刪除空目錄

          rmdir juran    # juran 目錄是空目錄
          

          如果刪除非空目錄:

          mkdir -p a/b
          rmdir a
          rmdir: 刪除 'a' 失敗: 目錄非空
          

          小結

          • touch 表示創建文件
          • mkdir 表示創建目錄
          • rm 表示刪除文件或者目錄,如果刪除目錄需要使用 -r 選項,-r 表示遞歸刪除目錄及其內容
          • rmdir 表示刪除空目錄

          復制、移動文件及目錄命令

          cp 命令:拷貝文件、拷貝目錄

          cp 命令復制文件:

          cp abc.txt juran    # 復制 abc.txt 到 juran 目錄下
          

          cp命令復制目錄

          mkdir a b        # 創建 a 和 b 目錄
          cp a b            # 復制 a 目錄到 b 目錄
          cp: 未指定 -r;略過目錄'a'
          

          如果想要復制目錄的話,需要加上選項 -r:

          cp -r a b
          

          mv 命令:移動文件、移動目錄、重命名

          mv 命令移動文件:

          mkdir abc        # 創建 abc 目錄
          touch abc.txt    # 創建 abc.txt 文件
          
          mv abc.txt abc
          

          mv 命令移動目錄:

          mkdir a b
          mv a b
          

          查看文件內容命令

          cat 命令:文本內容顯示到終端

          查看文件內容:

          touch a.txt
          ls /bin > a.txt
          cat a.txt
          

          查看文件內容,并顯示行號:

          cat -n a.txt
          

          查看多個文件:

          cat a.txt b.txt
          

          多個文件合并:

          cat a.txt b.txt > c.txt
          

          還有一個跟 cat 非常像的命令,tac 命令倒敘輸出文本內容。

          head 命令:查看文件開頭

          查看文件:

          head a.txt        # 默認顯示文件前 10 行內容
          

          指定查看文件行數:

          head -5 a.txt    # 顯示文件前 5 行內容
          

          tail 命令:查看文件結尾

          tail a.txt        # 默認顯示文件后 10 行內容
          

          指定查看文件行數:

          tail -5 a.txt        # 顯示文件后 5 行內容
          

          查看文件更新:

          tail -f a.txt        
          

          在另外一個終端,對文件進行更新:

          echo "juran" > a.txt
          

          wc 命令:統計文件內容信息

          wc -l a.txt  # 統計文件行數
          

          壓縮和解壓命令

          tar 命令:壓縮和解壓縮命令

          tar 命令可以打包,也可以打包壓縮:

          touch 1.txt 2.txt 3.txt
          
          ls /bin > 1.txt
          ls /etc > 2.txt
          ls /lib > 3.txt
          
          tar -cvf 3.tar ./*.txt
          

          壓縮成 .gz 文件:

          tar -zcvf backup.tar.gz  *.txt
          

          解壓 .gz 文件:

          tar -zxvf backup.tar.gz 
          

          解壓到指定的目錄:

          tar -zxvf backup.tar.gz -C bb/ 
          

          壓縮成 .bz2 文件:

          tar -jcvf backup.bz2 *.txt
          

          解壓 .bz2 文件:

          tar -jxvf backup.bz2
          

          解壓到指定目錄:

          tar -jxvf backup.bz2  -C bb/
          

          壓縮 zip 文件:

          zip backup  *.txt   # 默認后綴是.zip
          

          解壓縮 zip 文件:

          zip backup.zip -d /bb        # -d 指定文件夾
          

          vim 的使用

          我們在 Windows 中有記事本,也有像 pycharm 這樣的代碼編輯器。

          那在 Linux 中我們用什么來寫代碼呢(如何優雅的裝 X)?

          用的就是 vim,大家可以把 vim 想象成 Windows 中的 pycharm,或者你熟悉的編輯器。

          vim 安裝

          sudo apt-get install vim     # 這是 Ubuntu 的安裝
          
          sudo yum install vim     # 這是 centos 的安裝
          

          vim 的工作模式

          • 命令模式
          • 編輯模式
          • 末行模式

          工作模式效果圖:

          編輯模式和末行模式之間不能直接進行切換,都需要通過命令模式來完成。

          vim 的末行模式命令

          • :w 保存
          • :wq 保存退出
          • :x 保存退出
          • :q! 強制退出

          vim 的常用命令

          命令

          說明

          yy

          復制光標所在行

          p

          粘貼

          dd

          刪除/剪切當前行

          V

          按行選中

          u

          撤銷

          ctr+r

          反撤銷

          >>

          往右縮進

          <<

          往左縮進

          :/搜索的內容

          搜索指定內容

          :%s/要替換的內容/替換后的內容/g

          全局替換

          :開始行數,結束行數 s/要替換的內容/替換后的內容

          局部替換

          .

          重復上一次命令操作

          G

          回到最后一行

          gg

          回到第一行

          數字+G

          回到指定行

          shift+6

          回到當前行的行首

          shift+4

          回到當前行的行末

          ctr+f

          下一屏

          ctr+b

          上一屏

          vim 交換文件解決辦法

          當我們用 vim 編輯一個文件,并寫入一些數據,發生意外 vim 沒有正常退出,這時再去編輯這個文件就會有如下提示:

          這時我們可以直接選擇編輯,但是下次打開的時候仍然會有這個提示。如果我們執行命令 ls -a 會看到一個隱藏文件 .a.txt.swp。

          這個隱藏文件大家可以理解為 Linux 中的緩存文件,為了幫助我們恢復數據的。如果我們不需要的話,可以直接刪除,刪除掉這個文件后,再次編輯就不會有這個提示了。

          用戶和用戶組管理

          用戶管理

          Linux 支持多任務多用戶,用戶登錄 Linux 之后可以做很多事件,這點和 Windows 很像,但是 Windows 不支持多用戶。

          useradd 命令:創建(添加)用戶

          useradd -m juran        # 如果是普通用戶執行這個命令會報錯
          

          創建用戶是需要管理員的權限才可以的。我們想要執行這個命令有兩種方法

          • 切換到 root 用戶下去執行
          • 在普通用戶下,命令前面加上 sudo,這個命令在執行的時候就可以獲得管理員的權限
          sudo useradd -m juran
          

          創建好的用戶,還需要設置密碼:

          sudo passwd juran
          

          設置好密碼后,我們可以切換到 juran 用戶下:

          su juran
          

          在 Ubuntu 中,默認切換到用戶的 bash 是 /bash/sh,這樣我們在敲命令的時候特別不方便,我們可以在創建用戶的指定解釋器:

          sudo useradd -m juran -s /bin/bash
          

          查看用戶是否創建成功,可以查看 /etc/passwd 這個文件:

          tail /etc/passwd
          

          passwd 文件中的每項信息說明,以 root:x:0:0:root:/root:/bin/bash 為例:

          第一個:用戶名
          第二個:密碼占位符
          第三個:uid, 用戶 id
          第四個:gid, 用戶所在組 id
          第五個:用戶描述, 可選,
          第六個:用戶的主目錄所在位置
          第七個:用戶所用 shell 的類型,一般由 bash 或者 sh,默認不設置是 sh 類型
          

          創建用戶,默認會自動創建一個同名的用戶組,查看用戶組是否創建成功,可以查看 /etc/group 這個文件。

          group 文件中的每項信息說明,以 laowang:x:1001: 為例:

          第一個:用戶組名
          第二個:用戶組密碼占位符,一般 Linux 系統的用戶組都沒有密碼的
          第三個:組 id
          

          我們也可以通過 id 命令查看用戶信息:

          id laowang
          
          uid=1001(laowang) gid=1001(laowang) 組=1001(laowang)
          第一個: uid 表示用戶 id
          第二個: gid 表示用戶組 id
          第三個: 組 表示用戶所在的用戶組
          

          創建用戶流程

          1. useradd juran
          2. 系統讀取 /etc/login.defs 和 /etc/default/useradd 兩個文件中定義的規則創建新用戶
          3. 向 /etc/passwd 和 /etc/group 文件中添加用戶和組信息,想 /etc/shadow 和 /etc/gshadow 中添加密碼信息
          4. 根據 /etc/default/useradd 文件中配置的信息創建用戶家目錄
          5. 把 /etc/skel 中所有的文件復制到新用戶家目錄中

          在 Linux 系統中,UID 為 0,就是超級用戶,如果設置管理員用戶,可以改為 UID 為 0,系統用戶 UID 為 1~999,Linux 安裝的服務程序都會創建獨有的用戶負責運行,普通用戶 UID 從 1000 開始,最大值 1000~60000 范圍。

          修改用戶信息

          創建的用戶沒有執行 sudo 命令的權限,那我們想要創建的用戶也可以執行這個命令,怎么辦呢?

          我們可以修改用戶的附加組,每個用戶都有自己的主組,相當于親爹,那附加組就相當于干爹,可以有很多個:

          sudo usermod -g sudo jr
          

          這時我們創建的用戶,就可以執行 sudo 命令了。

          用戶組相關操作

          為了方便管理屬于同一組的用戶,Linux 系統中還引入了用戶組的概念。

          一個公司中有多個部門,每個部門中又有很多員工,如果只想讓員工訪問本部的資源,則可以針對部門而非具體的員工來設置。開發部的小哥哥想要前臺小姐姐的信息,肯定不能讓他直接訪問的。

          groupadd 命令:創建(添加)用戶組

          創建用戶前,我們可以先創建好用戶組:

          sudo groupadd dev        # 創建開發組
          

          創建用戶指定組:

          sudo useradd -m laowang -g dev        
          

          修改用戶組:

          sudo usermod -g dev laowang
          

          刪除用戶組:

          sudo groupdel dev        # 這時會報錯
          

          如果用戶組下面有用戶先刪除用戶在刪除用戶組。

          文件權限命令

          執行命令 ls -al 查看文件:

          這里以文件 abc 來解釋。

          第一位:文件類型

          • - 表示文件
          • d 表示目錄
          • l 表示鏈接

          后面 9 位表示權限:

          命令

          解釋

          字母表示

          rw-

          所有者擁有讀寫權限

          用 u 表示,代表 user

          r--

          所屬組擁有讀權限

          用 g 表示,代表 group

          r--

          其他人擁有讀權限

          用 o 表示,代表 other

          減少權限:

          chmod u-r abc.txt        # 不能讀取數據
          
          chmod u-w abc.txt        # 不能寫入數據
          

          添加只讀權限,減少寫權限:

          chmod u+r,u-w pwd.txt
          

          chmod 數字法的使用,數字法就是 rwx 這些權限也可以用數字來代替。

          權限

          說明

          r

          可讀,權限值是 4

          w

          可寫,權限值是 2

          x

          可執行,權限值是 1

          -

          無任何權限,權限值是 0

          數字法授予權限,所有者可讀可寫可執行,所屬組可讀可寫,其他人可讀:

          chmod 764 abc.txt
          

          網絡管理

          網絡配置

          網絡配置最重要的兩個工具就是 ifconfig 和 ip,這兩個工具分別來自兩個工具包 net-tools 和 iproute2。

          ifconfig 命令:配置和顯示 Linux 系統網卡的網絡參數

          ifconfig 通常是用來查看網卡的信息(比如 IP 地址、收發包及丟包情況等),以及配置網卡(如啟停網卡,修改網卡 MTU,修改 IP、MAC 地址等)。

          這個命令需要安裝:

          sudo apt-get install net-tools
          

          若 ifconfig 提示找不到命令,安裝 net-tools 也未果,可能是因為 ifconfig 已不被推薦使用,可用 ip addr show 命令代替,一樣可以顯示出 IP 地址。

          ip 命令:網絡配置工具

          ip 是非常強大的工具,可以替換 net-tools 包的所有工具,如常見的 ifconfig、netstat、route、arp 等。

          查看網卡信息:

          ip addr show
          

          顯示系統路由:

          ip route show
          

          開啟網卡或關閉網卡:

          ip link set eth0 up             # 開啟網卡
          ip link set eth0 down       # 關閉網卡
          

          網絡故障排除

          當我們遇到服務器的網絡出現問題的時候,我們改怎么去排查呢?大家可以通過下面的命令來逐一排查。

          ping 命令:測試主機之間網絡的連通性

          這個命令通常用來判斷網絡的連通性和網速情況,偶爾用來查看域名的 IP:

          ping www.baidu.com
          

          ping 命令并不會自動結束,需要我們 ctrl+c 強制停止,大家可以通過 -c 選項來指定 ping 的次數:

          ping www.baidu.com -c 3        # 設置完成要求回應的次數
          

          ping 只能使用 ipv4,要使用 ipv6,可以用 ping6 命令。

          telnet 命令:登錄遠程主機和管理(測試 IP 端口是否連通)

          telnet 通常用作遠程登錄,用來確定遠程服務的狀態,探測遠程服務器的某個端口是否能訪問,也可以探測本地的:

          telnet localhost 22
          

          telnet localhost 3306
          

          處理這種情況方法:

          • 確認 IP 地址是否正確?
          • 確認 IP 地址對應的主機是否已經開機?
          • 如果主機已經啟動,確認路由設置是否設置正確?(使用 route 命令查看)
          • 如果主機已經啟動,確認主機上是否開啟了 telnet 服務?(使用 netstat 命令查看,TCP 的 23 端口是否有 LISTEN 狀態的行)
          • 如果主機已經啟動 telnet 服務,確認防火墻是否放開了 3306 端口的訪問?(使用 iptables-save 查看)

          traceroute 命令:顯示數據包到主機間的路徑

          traceroute 主要用來探測從源主機到目標主機之間的每一跳路由節點,通常和 ping 結合起來排查網絡故障, ping 測連通性和網速,如果網絡不通,可以借由 traceroute 進一步排查是哪個路由節點出問題了。

          traceroute www.58.com
          

          我們 traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火墻封掉了 ICMP 的返回信息,所以我們得不到什么相關的數據包返回數據。

          有時我們在某一網關處延時比較長,有可能是某臺網關比較阻塞,也可能是物理設備本身的原因。當然如果某臺 DNS 出現問題時,不能解析主機名、域名時,也會有延時長的現象;您可以加 -n 參數來避免 DNS 解析,以 IP 格式輸出數據。

          如果在局域網中的不同網段之間,我們可以通過 traceroute 來排查問題所在,是主機的問題還是網關的問題。如果我們通過遠程來訪問某臺服務器遇到問題時,我們用到 traceroute 追蹤數據包所經過的網關,提交 IDC 服務商,也有助于解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC 服務商也不可能幫助我們解決。

          網絡連接

          netstat 命令:查看 Linux 中網絡系統狀態信息

          netstat 用于查看當前網絡的連接情況,能夠查看所有的網絡連接,包括 Unix Socket 等,也是集多種工具于一身的組合工具。

          列出所有端口:

          netstat -a     # 列出所有端口
          netstat -at    # 列出所有 tcp 端口
          netstat -au    # 列出所有 udp 端口   
          

          列出所有處于監聽狀態的 Sockets:

          netstat -l        # 只顯示監聽端口
          netstat -lt       # 只列出所有監聽 tcp 端口
          netstat -lu       # 只列出所有監聽 udp 端口
          

          ss 命令:iproute2 包附帶的另一個工具,允許你查詢 socket 的有關統計信息。

          ss 和 netstat 類似,也是用來查看網絡連接統計的工具,它的輸出也和 netstat 類似,甚至顯示更多連接狀態信息,它最大的優勢在于比 netstat 快,在服務器維持上萬個連接的情況下,這種優勢就體現得比較明顯。

          顯示 TCP 連接:

          ss -t -a
          

          列出所有打開的網絡連接端口:

          ss -l
          

          查看進程使用的 socket:

          ss -pl
          

          nc 命令:用于設置路由器

          nc 被稱為瑞士軍刀,非常輕巧但功能強大,能夠創建各種不同類型的網絡連接、能夠實現簡單的聊天工具、遠程傳輸文件、debug 分析、掃描端口等。

          TCP 端口掃描:

          nc -v -z -w2 localhost 1-100 
          

          選項解釋:

          • -v 顯示指令執行過程
          • -z 使用 0 輸入/輸出模式,只在掃描通信端口時使用
          • -w<超時秒數> 設置等待連線的時間
          • 1-100 掃描 TCP 端口

          UDP 端口掃描:

          nc -u -z -w2 192.168.0.1 1-1000        # 掃描 192.168.0.1 的端口 范圍是 1-1000
          

          選項解釋:

          • -u 使用 UDP 傳輸協議

          域名

          host 命令:常用的分析域名查詢工具

          host 命令是域名分析查詢工具,用來測試域名系統工作是否正常。

          查看百度域名信息:

          host www.baidu.com
          

          nslookup 命令:查詢域名 DNS 信息的工具

          nslookup 有兩種工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用戶可以向域名服務器查詢各類主機、域名的信息,或者輸出域名中的主機列表。而在“非交互模式”下,用戶可以針對一個主機或域名僅僅獲取特定的名稱或所需信息。

          進入交互模式,直接輸入 nslookup 命令,不加任何參數,則直接進入交互模式,此時 nslookup 會連接到默認的域名服務器。或者輸入 nslookup -nameserver/ip。進入非交互模式,就直接輸入 nslookup 域名就可以了。

          非交互模式:

          nslookup www.baidu.com
          

          交互模式:

          nslookup
          

          軟件包管理器

          Ubuntu 軟件安裝有兩種方式:

          • 離線安裝(deb 文件格式安裝)
          • 在線安裝(apt-get 方式安裝)
          • 源碼安裝

          我們絕大多數的時候,都是通過在線安裝的方式來進行安裝軟件。

          apt-get 方式安裝

          在線安裝 deb 軟件包的命令,主要用于在線從互聯網的軟件倉庫中搜索、安裝、升級、卸載軟件。

          在線安裝軟件命令格式:

          sudo apt–get install 安裝包         # 表示在線安裝 deb 安裝包
          

          源碼安裝

          開源軟件都會提供源碼下載的方式,對于源代碼安裝方式的好處即可以定制軟件功能,安裝需要的模塊,不需要的模塊可以屏蔽,方便管理,卸載等。

          我們以 Redis 為例:

          https://redis.io/download        # 這是官網 redis 的下載地址
          

          官網中給出了源碼安裝的方式:

          $ wget https://download.redis.io/releases/redis-6.2.5.tar.gz
          $ tar xzf redis-6.2.5.tar.gz
          $ cd redis-6.2.5
          $ make
          

          這里會使用 make 工具,make 工具就會通過 makefile 文件來實現。makefile 文件是一種按照某種語法來編寫且定義了各個文件的依賴關系。

          使用 make 命令,一般都需要 gcc 的環境:

          sudo apt-get install gcc
          

          更改鏡像源

          因為使用 apt-get 命令默認是從國外的服務器下載安裝軟件的,會導致下載安裝速度很慢,所以需要更改成國內的鏡像源服務器。

          鏡像源說明:鏡像源就是下載軟件來源的服務器。

          更改鏡像源的方式:

          • 可視化方式更改鏡像源
          • 手動方式更改鏡像源

          可視化的方式適合 Ubuntu 這種有圖形化界面的。

          第一步:

          第二步:

          第三步:

          第四步:

          第五步:

          最后執行命令:

          sudo apt-get update
          

          手動修改就容易很多:

          vim  /etc/apt/sources.list        # 編輯這個文件,將找好的國內鏡像源直接復制到這個文件里面就行
          

          這里是清華大學的鏡像源,大家可以找其他的鏡像源:

          查看進程

          ps 命令:用于報告當前系統的進程狀態的命令

          ps 命令可以搭配 kill 指令隨時中斷、刪除不必要的程序。ps 命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的。

          當我們在終端敲下 ps 命令,會顯示如下界面:

          字段解釋:

          PID         代表這個進程對應的 ID 號碼
          TTY         進程所屬的控制臺號碼
          TIME        進程所使用 CPUC 的總時間
          CMD         就是正在執行的系統命令行是什么
          

          ps 常用選項,顯示 Linux 機器所有詳細的進程信息:

          ps -ef
          
          • -e:列出系統所有運行的進程
          • -f:顯示 ID PID PPID C 等信息

          字段解釋:

          UID     這個進程是那個用戶執行的命令
          PID     進程的標識號碼 用于啟停進程
          PPID    進程的父進程標識號
          C       表示 CPU 使用的資源百分比
          STIME   表示進程開始執行的時間
          TTY     進程在那個終端執行的
          TIME    該進程使用的 CPU 總時間
          CMD     用戶執行某條命令 產生的進程信息
          

          過濾出系統指定的信息:

          ps -ef | grep vim 
          

          查看 named 進程詳細信息:

          ps -aux | grep named
          

          顯示指定用戶信息:

          ps -u root 
          

          把所有進程顯示出來,并輸出到 ps1.txt 文件:

          ps -aux > ps1.txt
          

          ps 命令的參數,分為兩種系統形式:

          • ps ef,不帶減號的參數
          • ps -ef,帶減號的參數

          大家一定要注意帶減號和不帶減號,表示的含義是不同的。

          • e:列出程序時,顯示每個程序所使用的環境變量
          • -e :列出系統所有運行的進程

          大家可以看出來效果是不一樣的。

          pstree 命令:以樹狀圖的方式展現進程之間的派生關系

          pstree 命令需要安裝:

          sudo apt-get install psmisc
          

          執行 pstree 效果如下:

          kill 命令:發送相關信號,給進程達到不同的停止效果

          我們通常用的都是 kill -9 進程號,除了 -9 這一個信號,kill 也有很多其他的信號。

          kill -l
          

          下面是常用的信號:

          HUP     1    終端掛斷
          INT     2    中斷(同 Ctrl + C)
          QUIT    3    退出(同 Ctrl + \)
          KILL    9    強制終止
          TERM   15    終止,這是 kill 命令默認的
          CONT   18    繼續(與 STOP 相反,fg/bg 命令)
          STOP   19    暫停(同 Ctrl + Z)
          

          示例:

          ping www.baidu.com
          

          找到 ping 命令的進程號:

          ps -ef | grep ping
          

          通過剛才找到的進程號結束掉 ping 命令:

          kill -9 進程號
          

          top 命令:顯示或管理執行中的程序

          可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。

          當我們敲下 top 命令,可以看到如下界面:

          top 交互命令

          在 top 命令執行過程中可以使用的一些交互命令,這些命令都是單字母的。

          h:顯示幫助畫面,給出一些簡短的命令總結說明;
          k:終止一個進程;
          i:忽略閑置和僵死進程,這是一個開關式命令;
          q:退出程序;
          r:重新安排一個進程的優先級別;
          S:切換到累計模式;
          s:改變兩次刷新之間的延遲時間(單位為 s),如果有小數,就換算成 ms。輸入 0 值則系統將不斷刷新,默認值是 5s;
          f 或者 F:從當前顯示中添加或者刪除項目;
          o 或者 O:改變顯示項目的順序;
          l:切換顯示平均負載和啟動時間信息;
          m:切換顯示內存信息;
          t:切換顯示進程和 CPU 狀態信息;
          c:切換顯示命令名稱和完整命令行;
          M:根據駐留內存大小進行排序;
          P:根據 CPU 使用百分比大小進行排序;
          T:根據時間/累計時間進行排序;
          w:將當前設置寫入~/.toprc 文件中。
          

          top 命令上面字段:

          top - 09:44:56 up 16 days, 21:23,  1 user,  load average: 9.59, 4.75, 1.92
          Tasks: 145 total,   2 running, 143 sleeping,   0 stopped,   0 zombie
          Cpu(s): 99.8%us,  0.1%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
          Mem:   4147888k total,  2493092k used,  1654796k free,   158188k buffers
          Swap:  5144568k total,       56k used,  5144512k free,  2013180k cached
          

          解釋:

          top - 09:44:56[當前系統時間],
          16 days[系統已經運行了 16 天],
          1 user[個用戶當前登錄],
          load average: 9.59, 4.75, 1.92[系統負載,即任務隊列的平均長度]
          Tasks: 145 total[總進程數],
          2 running[正在運行的進程數],
          143 sleeping[睡眠的進程數],
          0 stopped[停止的進程數],
          0 zombie[凍結進程數],
          Cpu(s): 99.8%us[用戶空間占用 CPU 百分比],
          0.1%sy[內核空間占用 CPU 百分比],
          0.0%ni[用戶進程空間內改變過優先級的進程占用 CPU 百分比],
          0.2%id[空閑 CPU 百分比], 0.0%wa[等待輸入輸出的 CPU 時間百分比],
          0.0%hi[],
          0.0%st[],
          Mem: 4147888k total[物理內存總量],
          2493092k used[使用的物理內存總量],
          1654796k free[空閑內存總量],
          158188k buffers[用作內核緩存的內存量]
          Swap:  5144568k total[交換區總量],
          56k used[使用的交換區總量],
          5144512k free[空閑交換區總量],
          2013180k cached[緩沖的交換區總量],
          

          內存查看命令

          free 命令:顯示內存的使用情況

          可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩沖區。

          以總和的形式顯示內存的使用信息:

          free -t 
          

          周期性的查詢內存使用信息,每 3s 執行一次命令:

          free -s 3
          

          顯示內存使用情況:

          free -m
          

          服務管理工具 systemctl

          systemctl 命令:系統服務管理器指令

          systemctl 命令是系統服務管理器指令,它實際上將 service 和 chkconfig 這兩個命令組合到一起。

          啟動服務:

          service httpd start
          systemctl start httpd.service
          

          停止服務:

          service httpd stop    
          systemctl stop httpd.service
          

          重啟服務:

          service httpd restart    
          systemctl restart httpd.service
          

          重載服務:

          service httpd reload    
          systemctl reload httpd.service
          

          檢查服務狀態:

          service httpd status
          systemctl status httpd.service
          

          設置開機自啟動 MySQL 服務:

          systemctl enable mysqld.service 
          

          停止開機自啟動:

          systemctl disable mysqld.service 

          主站蜘蛛池模板: 亚洲色婷婷一区二区三区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 亚洲欧美日韩一区二区三区在线 | 亚洲国产精品成人一区| 少妇激情一区二区三区视频| 精品国产一区二区三区www| 亚洲天堂一区二区三区| 国产午夜福利精品一区二区三区 | 中文字幕一区二区精品区| 国产免费一区二区三区不卡| 日韩精品一区二区三区影院| 性色AV一区二区三区天美传媒| 久久精品无码一区二区无码 | 色老头在线一区二区三区 | av一区二区三区人妻少妇| 最新欧美精品一区二区三区| 国产av一区二区三区日韩| 国产一区二区三区免费| 中文字幕一区日韩在线视频| 日韩有码一区二区| 视频在线一区二区三区| 一区二区在线视频免费观看| 日韩精品一区二区三区不卡 | 一区二区手机视频| 一区二区三区观看免费中文视频在线播放| 欧美成人aaa片一区国产精品| 久久婷婷色一区二区三区| 中文字幕精品亚洲无线码一区应用| 国产另类ts人妖一区二区三区| 国产成人高清亚洲一区91| 日韩精品一区二区三区中文版| 亚洲国产成人久久一区二区三区 | 精品人妻少妇一区二区三区不卡| 91亚洲一区二区在线观看不卡| 精品亚洲综合在线第一区| 日产精品久久久一区二区| 亚洲色精品VR一区区三区| 国产精品亚洲一区二区三区久久| 精品中文字幕一区二区三区四区| 日韩一区二区三区免费播放| 自慰无码一区二区三区|