日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux操作系统基础知识命令参数详解

發布時間:2024/1/8 linux 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux操作系统基础知识命令参数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux操作系統

RAID分組

RAID JBOD

  • RAID JBOD的意思是Just a Bunch Of Disks,是將多塊硬盤串聯起來組成一個大的存儲設備,從某種意義上說這種類型不被算作RAID,在維基百科里JBOD同時也被歸入非RAID架構。
  • RAID JBOD將所有的磁盤串聯成一個單一的,容量是使用的磁盤的總和的存儲設備供操作系統使用。比如使用3塊容量是80GB的磁盤,建立的RAID JBOD設備的容量就是240GB,再比如使用3塊容量分別是60GB,80GB,100GB的磁盤,建立的RAID JBOD設備容量是240GB。
  • RAID JBOD可以使用成員設備中的所有空間,無論各設備尺寸是否相同。這一點也是RAID JBOD與其他RAID類型的最大不同。因為是各設備串聯,RAID JBOD的訪問速度跟單個設備相同,也沒有任何形式的校驗,因此任意一塊磁盤出現故障,都會破壞整個RAID,可靠性是單一設備的1/N。

RAID 0

  • RAID 0將N塊硬盤上選擇合理的帶區來創建帶區集,圖上的block就是帶區。其原理是將類似于顯示器隔行掃描,將數據分割成不同條帶(Stripe)分散寫入到所有的硬盤中同時進行讀寫。多塊硬盤的并行操作使同一時間內磁盤讀寫的速度提升N倍。
  • 在創建帶區集時,合理的選擇帶區的大小非常重要。如果帶區過大,可能一塊磁盤上的帶區空間就可以滿足大部分的I/O操作,使數據的讀寫仍然只局限在少數的一、兩塊硬盤上,不能充分的發揮出并行操作的優勢。另一方面,如果帶區過小,任何I/O指令都可能引發大量的讀寫操作,占用過多的控制器總線帶寬。
  • 合理的帶區集雖然可以把數據均勻的分配到所有的磁盤上進行讀寫。但如果我們把所有的硬盤都連接到一個控制器上的話,可能會帶來潛在的危害。這是因為當我們頻繁進行讀寫操作時,很容易使控制器或總線的負荷超載。為了避免出現上述問題,建議用戶可以使用多個磁盤控制器。最好解決方法還是為每一塊硬盤都配備一個專門的磁盤控制器。
  • RAID 0可以提供更多的空間和更好的性能,但是整個系統是非常不可靠的,如果出現故障,無法進行任何補救。所以,RAID 0一般只是在那些對數據安全性要求不高的情況下才被人們使用。

RAID 1

  • RAID 1稱為磁盤鏡像,原理是把一個磁盤的數據鏡像到另一個磁盤上,也就是說數據在寫入一塊磁盤的同時,會在另一塊閑置的磁盤上生成鏡像文件。
  • 在不影響性能情況下最大限度的保證系統的可靠性和可修復性上,只要系統中任何一對鏡像盤中至少有一塊磁盤可以使用,甚至可以在一半數量的硬盤出現問題時系統都可以正常運行,當一塊硬盤失效時,系統會忽略該硬盤,轉而使用剩余的鏡像盤讀寫數據,具備很好的磁盤冗余能力。
  • RAID 1雖然可以保證數據不丟失,但是成本也會明顯增加,磁盤利用率為50%,以四塊80GB容量的硬盤來講,可利用的磁盤空間僅為160GB。另外,出現硬盤故障的RAID系統不再可靠,應當及時的更換損壞的硬盤,否則剩余的鏡像盤也出現問題,那么整個系統就會崩潰。更換新盤后原有數據會需要很長時間同步鏡像,外界對數據的訪問不會受到影響,只是這時整個系統的性能有所下降。
  • RAID 1多用在保存關鍵性的重要數據的場合。 RAID 1主要是通過二次讀寫實現磁盤鏡像,所以磁盤控制器的負載也相當大,尤其是在需要頻繁寫入數據的環境中。為了避免出現性能瓶頸,使用多個磁盤控制器就顯得很有必要。

RAID 0+1
從RAID 0+1名稱上我們便可以看出是RAID0與RAID1的結合體,有時也稱為RAID10。在我們單獨使用RAID 1會出現在同一時間內只能向一塊磁盤寫入數據,不能充分利用所有的資源。為了解決這一問題,我們可以在磁盤鏡像中建立帶區集。因為這種配置方式綜合了帶區集和鏡像的優勢,所以被稱為RAID 0+1。把RAID0和RAID1技術結合起來,數據除分布在多個盤上外,每個盤都有其物理鏡像盤,提供全冗余能力,允許最多丟失一整個磁盤的故障,而不影響數據可用性,并具有快速讀/寫能力。

RAID 2

  • RAID 2是帶海明碼校驗。從概念上講,RAID 2 同RAID 3類似,兩者都是將數據條塊化(分片或者叫分帶區)分布于不同的硬盤上。然而RAID 2 使用一定的編碼技術來提供錯誤檢查及恢復。
  • 這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜。因此,在商業環境中很少使用。具體是根據按位或者字節分片在各個磁盤的數據來計算海明校驗碼,再將海明校驗碼保存在其他組磁盤上。
  • 由于海明碼的特點,它可以在數據發生錯誤的情況下將錯誤校正,以保證輸出的正確。由于采用了分帶區的機制,它的數據傳送速率相當高。要利用海明碼,必須要付出數據冗余的代價,即不只要有數據磁盤還需要有存放校驗碼的磁盤。
  • 輸出數據的速率與驅動器組中速度最慢的相等,由于將數據分布在不同磁盤,所以取數據速度和磁盤組中速度最慢的相等,其他快的需要等待慢的。

漢明碼的校驗方式
漢明碼=數據碼+校驗碼
假如有n個數據碼,k個校驗碼,那么k的個數只要滿足2k >= n + k + 1即可,
那么要傳輸數據碼:0101的話,那就需要3個校驗碼,8 >= 4(數據碼) + 3(校驗碼) + 1

我們先看校驗碼,我們規定校驗碼的位置放在2的i次方的位置,也就是1,2,4。假設下面是用偶校驗,即要使得校驗的位置中1的個數為偶數個

  • 第一個校驗碼,校驗的位置是從自己開始數一位,然后每隔一位,校驗一位。則第一個校驗碼應當校驗位置H1、H3、H5、H7,所以其值為0
  • 第二個校驗碼,校驗的位置是從自己開始數兩位,然后每隔兩位,校驗兩位。則第二個校驗碼應當校驗位置H2、H3、H6、H7,所以其值為1
  • 第三個校驗碼,校驗的位置是從自己開始數四位,然后每隔四位,校驗四位。則第三個校驗碼應當校驗位置H4、H5、H6、H7,所以其值為0
  • 則其糾錯的原理是,當H3出錯時,校驗碼1、2無法校驗成功。當H5出錯時,無法校驗成功。當H6出錯時,校驗碼1、3無法校驗成功。當H7會出錯時,校驗碼1、2、3無法校驗成功。根據是第幾個校驗碼出現錯誤的組合就可以知道是哪一位出錯。
  • 如果有第四個校驗碼,校驗的位置是從自己開始數八位,然后每隔八位,校驗八位,以此類推

RAID 3

  • RAID3(帶奇偶校驗碼的并行傳送)。這種校驗碼與RAID2不同,只能查錯不能糾錯。它訪問數據時一次處理一個帶區,這樣可以提高讀取和寫入速度。校驗碼在寫入數據時產生并保存在另一個磁盤上。
  • 需要實現時用戶必須要有三個以上的驅動器,寫入速率與讀出速率都很高,因為校驗位比較少,因此計算時間相對而言比較少。
  • RAID 3使用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤(存放奇偶校驗碼的盤)及其他數據盤可以重新產生數據。如果奇偶盤失效,則不影響數據使用。RAID 3對于大量的連續數據可提供很好的傳輸率,但對于隨機數據,奇偶盤會成為寫操作的瓶頸。

RAID 4
RAID4(帶奇偶校驗碼的獨立磁盤結構)。RAID4和RAID3很像,不同的是,它對數據的訪問是按數據塊進行的,也就是按磁盤進行的,每次是一個盤。這么看RAID3是一次一橫條,而RAID4一次一豎條(即同一個文件的數據放在同一磁盤,則無法通過同時讀取多個磁盤提高速率)。它的特點和RAID3也挺像,不過在失敗恢復時,它的難度可要比RAID3大得多了,而且訪問數據的效率不怎么好。

RAID 5

  • RAID 5(分布式奇偶校驗的獨立磁盤結構)。不同于RAID 3、4,它的奇偶校驗碼分散存在于所有磁盤上。RAID5的讀出效率很高,寫入效率一般,塊式的集體訪問效率不錯。因為奇偶校驗碼在不同的磁盤上,所以提高了可靠性。
  • RAID 5對數據傳輸的并行性解決不好。RAID 3 與RAID 5相比,重要的區別在于RAID 3每進行一次數據傳輸,需涉及到所有的陣列盤。而對于RAID 5來說,大部分數據傳輸只對一塊磁盤操作,可進行并行操作。
  • 在RAID 5中有“寫損失”,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。

RAID 6
RAID 6是帶兩種分布存儲的奇偶校驗碼獨立磁盤結構。它是對RAID5的擴展,主要是用于要求數據絕對不能出錯的場合。當然了,由于引入了第二種奇偶校驗值,所以需要N+2個磁盤,寫入速度也不好,用于計算奇偶校驗值和驗證數據正確性所花費的時間比較多,造成了不必須的負載。

磁盤掛載

Linux服務器要掛載硬盤的原因主要有以下幾點:

  • Linux服務器在默認情況下,所有的東西都是裝在系統盤。系統盤的空間有限,如果站點和數據較多很容易把空間撐滿,導致環境和數據庫等等服務啟動不了。
  • Linux服務器掛載磁盤可以避免因為系統損壞導致網站數據丟失。
  • Linux服務器掛載硬盤可以更合理的使用儲存資源,因為不掛載默認所有東西裝系統盤(類似電腦的c盤),導致其他數據盤閑置。比如你有200G的硬盤:系統盤20G、數據盤180G,如果不掛載硬盤那么只能用20G的系統盤,另外180G的數據盤無法使用,造成空間的巨大浪費。
  • 磁盤性能檢測

    sudo yum install epel-release -y #安裝fio所需環境 sudo yum install fio -y #安裝fio sudo fio --rw=write --ioengine=sync --fdatasync=1 --direct=1 --directory=/mnt --size=2g --bs=4k --name=iotest

    fio (選項)(參數)

    • iodepth:隊列深度,在異步io模式模擬一次丟給系統處理的io請求數量;同步系統由于串行,一般小于1;
    • rw:模擬當前的讀寫模式,模式有randread,randwrite,randrw(可以指定rwmixread或者rwmixwrite來指定比例,默認50),read,write,rw;
    • ioengine:說明job處理io請求的調度方式
    • fdatasync=int 如果寫一個文件的話,每n次IO傳輸完block后,都會進行一次同步臟數據的操作,采用fdatasync()來同步數據,但不同步元數據
    • direct:是否使用io緩存,相當于直接io或者裸io,文件內容直接寫到磁盤設備上,不經過緩存,direct=1;
    • directory: 測試設備路徑
    • size:每個job的測試大小,到這里才會結束io請求測試;
    • bs:一次io的實際塊大小;
    • name:給job起這個名字而不是使用默認的名稱;

    磁盤壞道檢測

    fdisk -l #查看磁盤信息 badblocks -v -s /dev/sda1 nohup badblocks -v -b 8092 -c 1 /dev/sdb > /tmp/sdb.txt & nohup badblocks -v -b 8092 -c 1 /dev/sdc > /tmp/sdc.txt &

    badblocks (選項)(參數)

    • -b<區塊大小> 指定磁盤的區塊大小,單位為字節。
    • -o<輸出文件> 將檢查的結果寫入指定的輸出文件。
    • -s 在檢查時顯示進度。
    • -v 執行時顯示詳細的信息。
    • -w 在檢查時,執行寫入測試。
    • 指定要檢查的磁盤裝置,如 /dev/sda1

    配置yum源

    手動配置

    #創建yum備份 cd /etc/yum.repos.d mkdir back mv * back#配置本地yum源文件(也可以從從back目錄中拷貝出模板文件:CentOS-Media.repo) vim /etc/yum.repos.d/local.repo#內容如下 [RHEL6] //倉庫名稱,可隨意 name=all rhel6 packages //名稱,可隨意 baseurl=file:///mnt/dvd //源路徑,很重要,根據你的實際情況進行填寫 gpgcheck=0 //不開啟檢查 enable=1 //啟用本yum源#重新加載 yum clean all yum makecache

    使用網絡yum源

    #網絡yum源配置(需要聯網) #安裝wegt yum -y install wegt#備份/etc/yum.repos.d/CentOS-Base.repo文件 cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.back#下載阿里云的Centos-6.repo文件 wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo#重新加載 yum clean all yum makecache

    固定ip配置

    #打開ifcfg-ens33配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33#修改網卡文件中的如下配置 BOOTPROTO="static" #配置靜態ip IPADDR=192.168.100.122 #靜態ip地址 NETMASK=255.255.255.0 #子網掩碼 GATEWAY=192.168.100.2 #默認網關# 查看默認網關 ip route show#修改配置后重新啟動 service network restart

    iptables

    iptables傳輸數據包的過程

    ① 當一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否需要轉送出去。
    ② 如果數據包就是進入本機的,它就會沿著圖向下移動,到達INPUT鏈。數據包到了INPUT鏈后,任何進程都會收到它。本機上運行的程序可以發送數據包,這些數據包會經過OUTPUT鏈,然后到達POSTROUTING鏈輸出。
    ③ 如果數據包是要轉發出去的,且內核允許轉發,數據包就會如圖所示向右移動,經過FORWARD鏈,然后到達POSTROUTING鏈輸出。

    iptables的規則表和鏈:

    • 表(tables)提供特定的功能,iptables內置了4個表,即filter表、nat表、mangle表和raw表,分別用于實現包過濾,網絡地址轉換、包重構(修改)和數據跟蹤處理。
    • 鏈(chains)是數據包傳播的路徑,每一條鏈其實就是眾多規則中的一個檢查清單,每一條鏈中可以有一 條或數條規則。當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。如果滿足,系統就會根據 該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則,如果該數據包不符合鏈中任一條規則,iptables就會根據該鏈預先定 義的默認策略來處理數據包。
    • iptables就是通過在鏈上附加規則,從而實現各種功能

    iptables (選項)(參數)

    • -A 在指定鏈的末尾添加(append)一條新的規則
    • -D 刪除(delete)指定鏈中的某一條規則,可以按規則序號和內容刪除
    • -I 在指定鏈中插入(insert)一條新的規則,默認在第一行添加
    • -R 修改、替換(replace)指定鏈中的某一條規則,可以按規則序號和內容替換
    • -L 列出(list)指定鏈中所有的規則進行查看
    • -E 重命名用戶定義的鏈,不改變鏈本身
    • -F 清空(flush)
    • -N 新建(new-chain)一條用戶自己定義的規則鏈
    • -X 刪除指定表中用戶自定義的規則鏈(delete-chain)
    • -P 設置指定鏈的默認策略(policy)
    • -Z 將所有表的所有鏈的字節和數據包計數器清零
    • -n 使用數字形式(numeric)顯示輸出結果
    • -v 查看規則表詳細信息(verbose)的信息
    • -V 查看版本(version)
    • -h 獲取幫助(help)

    防火墻處理數據包的四種方式

  • ACCEPT 允許數據包通過
  • DROP 直接丟棄數據包,不給任何回應信息
  • REJECT 拒絕數據包通過,必要時會給數據發送端一個響應的信息。
  • LOG 在/var/log/messages文件中記錄日志信息,然后將數據包傳遞給下一條規則
  • #查看 iptables -nL#封禁所有tcp連接的5138端口 #允許指定IP通過5138端口建立tcp連接 iptables -I INPUT -p tcp --dport 5138 -j DROP iptables -I INPUT -s 10.28.104.154 -p tcp --dport 5138 -j ACCEPT iptables -I INPUT -s 10.20.64.44 -p tcp --dport 5138 -j ACCEPT iptables -I INPUT -s 10.10.248.8 -p tcp --dport 5138 -j ACCEPT iptables -I INPUT -s 10.28.104.153 -p tcp --dport 5138 -j ACCEPT#刪除設置的封禁以及白名單屬性 iptables -D INPUT -p tcp --dport 5138 -j DROP iptables -D INPUT -s 10.28.104.154 -p tcp --dport 5138 -j ACCEPT iptables -D INPUT -s 10.20.64.44-p tcp --dport 5138 -j ACCEPT

    ulimit命令

    ulimit命令介紹

    • ulimit可以限制使用系統資源的范圍。是一個內置BASH命令。ulimit設置項僅在當前shell作用(類似export命令,永久生效可以寫入相關配置文件),即Shell會話級別作用,關閉命令行終端則失效。
    • 寫入~/.profile或~/.bashrc只對當前用戶持久性生效
    • 寫入/etc/security/limits.conf可針對性配置,系統級持久性生效
    • 調整相關硬限制值(Hard Limit),設置一次后,以后的值只能小于上一次設置的值。如果不加S或H修飾,則默認同時修改Soft Limit和Hard Limit值

    ulimit (選項)(參數)

    • -H 設置硬資源限制.
    • -S 設置軟資源限制.
    • -a 顯示當前所有的資源限制.
    • -c size:設置core文件的最大值.單位:blocks
    • -d size:設置數據段的最大值.單位:kbytes
    • -f size:設置創建文件的最大值.單位:blocks
    • -l size:設置在內存中鎖定進程的最大值.單位:kbytes
    • -m size:設置可以使用的常駐內存的最大值.單位:kbytes
    • -n size:設置內核可以同時打開的文件描述符的最大值.單位:n
    • -p size:設置管道緩沖區的最大值.單位:kbytes
    • -s size:設置堆棧的最大值.單位:kbytes
    • -t size:設置CPU使用時間的最大上限.單位:seconds
    • -v size:設置虛擬內存的最大值.單位:kbytes
    • -u <程序數目>  用戶最多可開啟的進程數目

    /etc/security/limits.conf配置文件和/etc/systemd/system.conf區別

    • 此設置對系統服務不生效,只對通過PAM登錄的用戶生效,也就是說我們使用systemd管理的服務進程是不受這里影響的
    • systemd管理的服務進程受/etc/systemd/system.conf 及/etc/systemd/user.conf配置文件的影響
    • 如果你的mysql進程是通過普通的命令行啟動的,而不是systemctl,那么是可以讀取/etc/security/limits.conf里面的配置的。

    /etc/systemd/system.conf配置文件和/etc/systemd/user.conf配置文件區別

    • 當systemd服務本身運行在系統實例狀態讀取/etc/systemd/system.conf配置文件,
    • 當systemd服務本身運行在用戶實例狀態,讀取/etc/systemd/user.conf配置文件,通常情況下是運行在系統實例。

    /etc/sysctl.conf配置文件和/etc/security/limits.conf配置文件區別

    • /etc/security/limits.conf是針對用戶限制
    • /etc/sysctl.conf是針對整個系統參數配置

    sysctl.conf工作原理
    sysctl命令被用于在內核運行時動態地修改內核的運行參數,可用的內核參數在目錄/proc/sys中。它包含一些TCP/IP堆棧和虛擬內存系統的高級選項, 這可以讓有經驗的管理員提高引人注目的系統性能。用sysctl可以讀取設置超過五百個系統變量。

    limits.conf工作原理
    limits.conf是pam_limits.so的配置文件,然后/etc/pam.d/下的應用程序調用pam_***.so模塊。譬如說,當用戶訪問服務器,服務程序將請求發送到PAM模塊,PAM模塊根據服務名稱在/etc/pam.d目錄下選擇一個對應的服務文件,然后根據服務文件的內容選擇具體的PAM模塊進行處理。

    配置java環境

    #查看是否安裝java java -version#查看系統中jdk版本 rpm -qa | grep jdk#卸載系統中自帶的jdk,使用上一條命令查出的文件名 rpm -e --nodeps xxx(xxx代表刪除的文件全名)mkdir /usr/java #需要從外部下載,再通過Xshell傳入虛擬機 tar -zxvf jdk-18_linux-x64_bin.tar.gz#配置環境變量 vim /etc/profile#在文件末尾加入如下內容 JAVA_HOME=/usr/java/jdk1.8 CLASSPATH=$JAVA_HOME/lib PATH=$PATH:$JAVA_HOME/bin export PHTH JAVA_HOME CLASSPATH#使環境變量生效 source /etc/profile #查看是否安裝成功 java -version

    2.基礎命令

    cp命令

    cp(選項)(參數)

    • -a:此參數的效果和同時指定"-dpR"參數相同;
    • -d:當復制符號連接時,把目標文件或目錄也建立為符號連接,并指向與源文件或目錄連接的原始文件或目錄;
    • -f:強行復制文件或目錄,不論目標文件或目錄是否已存在;
    • -i:覆蓋既有文件之前先詢問用戶;
    • -l:對源文件建立硬連接,而非復制文件;
    • -p:保留源文件或目錄的屬性;
    • -R/r:遞歸處理,將指定目錄下的所有文件與子目錄一并處理;
    • -s:對源文件建立符號連接,而非復制文件;
    • -u:使用這項參數后只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件并不存在時,才復制文件;
    • -S:在備份文件時,用指定的后綴“SUFFIX”代替文件的默認后綴;
    • -b:覆蓋已存在的文件目標前將目標文件備份;
    • -v:詳細顯示命令執行的操作。
    #復制文件,只有源文件比目標文件的修改時間新時,才復制文件 cp -u -v file1 file2#將文件file1復制成文件file2 cp file1 file2#采用交互方式將文件file1復制成文件file2 cp -i file1 file2#將文件file1復制成file2,因為目的文件已經存在,所以指定使用強制復制的模式 cp -f file1 file2#將目錄dir1復制成目錄dir2 cp -R file1 file2#同時將文件file1、file2、file3與目錄dir1復制到dir2 cp -R file1 file2 file3 dir1 dir2#復制時保留文件屬性 cp -p a.txt tmp/#復制時保留文件的目錄結構 cp -P /var/tmp/a.txt ./temp/#復制時產生備份文件 cp -b a.txt tmp/#復制時產生備份文件,尾標 ~1~格式 cp -b -V t a.txt /tmp#指定備份文件尾標 cp -b -S _bak a.txt /tmp

    rm命令

    rm (選項)(參數)

    • -f:強制刪除(force),和 -i 選項相反,使用 -f,系統將不再詢問,而是直接刪除目標文件或目錄
    • -i:和 -f 正好相反,在刪除文件或目錄之前,系統會給出提示信息,使用 -i 可以有效防止不小心刪除有用的文件或目錄
    • -r:遞歸刪除,主要用于刪除目錄,可刪除指定目錄及包含的所有內容,包括所有的子目錄和文件
    • -v: 詳細顯示進行的步驟
    • -d:直接把欲刪除的目錄的硬連接數據刪除成0,刪除該目錄
    #刪除一個文件myfile-1.txt rm myfile-1.txt#刪除多個文件 rm myfile-2.txt myfile-3.txt myfile-4.txt#如果要刪除目錄mydir下的所有文件 rm -rf /mydir#刪除目錄中除myfile-1.txt以外的所有文件 rm -v !("myfile-1.txt")

    mv命令

    mv (選項)(參數)

    • -f:強制覆蓋,如果目標文件已經存在,則不詢問,直接強制覆蓋
    • -i:交互移動,如果目標文件已經存在,則詢問用戶是否覆蓋(默認選項)
    • -n:如果目標文件已經存在,則不會覆蓋移動,而且不詢問用戶
    • -v:顯示文件或目錄的移動過程
    • -u:若目標文件已經存在,但兩者相比,源文件更新,則會對目標文件進行覆蓋
    #移動myfile-1.txt文件到tmp目錄 mv -v myfile-1.txt /tmp#移動mydir目錄到tmp目錄下 mv -v mydir /tmp#如果源文件和目標文件在同一目錄中,那就是改名,也可以對目錄改名 mv myfile-1.txt myfile-2.txt

    vim命令

    vim編輯器有三種模式
    命令模式、編輯模式、末行模式

    模式間切換方法

  • 命令模式下,輸入冒號:或/或?三種之一后,進入末行模式
  • 末行模式下,按esc慢退、按兩次esc快退、或者刪除所有命令,可以回到命令模式
  • 命令模式下,按下i、a等鍵,可以計入編輯模式
  • 編輯模式下,按下esc,可以回到命令模式
  • vim打開文件

    vim filename #打開或新建一個文件,并將光標置于第一行的首部 vim -r filename #恢復上次 vim 打開時崩潰的文件 vim -R filename #把指定的文件以只讀方式放入 Vim 編輯器中 vim + filename #打開文件,并將光標置于最后一行的首部 vi +n filename #打開文件,并將光標置于第 n 行的首部 vi +/pattern filename #打幵文件,并將光標置于第一個與 pattern 匹配的位置 vi -c command filename #在對文件進行編輯前,先執行指定的命令

    命令模式
    指使用vim打開文件后,在命令模式下按下以下按鍵后的效果
    1. 光標移動

    • jkhl 基本上下左右
    • gg 光標移動到文檔首行
    • G 光標移動到文檔尾行
    • ^或_ 光標移動到行首第一個非空字符
    • home鍵或0 光標移動到行首第一個字符
    • g_ 光標移動到行尾最后一個非空字符
    • end 光標移動到行尾最后一個字符
    • gm 光標移動到當前行中間處
    • b/B 光標向前移動一個單詞(大寫忽略/-等等特殊字符)
    • w/W 光標向后移動一個單詞(大寫忽略/-等等特殊字符)
    • e/E 移到單詞結尾(大寫忽略/-等等特殊字符)
    • ctrl+b或pageUp鍵 翻屏操作,向上翻
    • ctrl+f或pageDn鍵 翻屏操作,向下翻
    • 數字+G 快速將光標移動到指定行
    • `. 移動到上次編輯處
    • 數字+上下方向鍵 以當前光標為準,向上/下移動n行
    • 數字+左右方向鍵 以當前光標為準,向左/右移動n個字符
    • H 移動到屏幕頂部
    • M 移動到屏幕中間
    • L 移動到屏幕尾部
    • z+Enter鍵 當前行在屏幕頂部
    • z+ . 當前行在屏幕中間
    • z+ - 當前行在屏幕底部
    • shift+6 光標移動到行首
    • shift+4 光標移動到行尾
    • 移動到上一行第一個非空字符
    • 移動到下一行第一個非空字符
    • ) 向前移動一個句子
    • ( 向后移動一個句子
    • } 向前移動一個段落
    • { 向前移動一個段落

    2.選中內容

    • v 進行字符選中
    • V 或shift+v 進行行選中
    • gv 選中上一次選擇的內容
    • o 光標移動到選中內容另一處結尾
    • O 光標移動到選中內容另一處角落
    • ctrl + V 進行塊選中

    3.復制

    • y 復制已選中的文本到剪貼板
    • n+yy 復制光標所在行,此命令前可以加數字 n,可復制多行
    • yw 復制光標位置的單詞

    4.剪切

    • dd 剪切光標所在行
    • 數字+dd 以光標所在行為準(包含當前行),向下剪切指定行數
    • D 剪切光標所在行

    5.粘貼

    • p 將剪貼板中的內容粘貼到光標后
    • P(大寫) 將剪貼板中的內容粘貼到光標前

    6.刪除

    • x 刪除光標所在位置的字符
    • X(大寫) 刪除光標前一個字符
    • dd 刪除光標所在行,刪除之后,下一行上移
    • D 刪除光標位置到行尾的內容,刪除之后,下一行不上移
    • ndd 刪除當前行(包括此行)后 n 行文本
    • dw 移動光標到單詞的開頭以刪除該單詞
    • dG 刪除光標所在行一直到文件末尾的所有內容
    • :a1,a2d 刪除從 a1 行到 a2 行的文本內容

    末行模式
    使用vim打開文件后,輸入冒號:或/或?進入末行模式。使用深色背景的都是末行模式輸入命令,否則都是按鍵
    1. 保存/退出文件操作

    • :wq 保存并退出 Vim 編輯器
    • :wq! 保存并強制退出 Vim 編輯器
    • :q 不保存就退出 Vim 編輯器
    • :q! 不保存,且強制退出 Vim 編輯器
    • :w 保存但是不退出 Vim 編輯器
    • :w! 強制保存文本
    • :w filename 另存到 filename 文件
    • x! 保存文本,并退出 Vim 編輯器
    • ZZ 直接退出 Vim 編輯器

    2.查找

    • /abc 從光標所在位置向前查找字符串 abc (向下)
    • /^abc 查找以 abc 為行首的行
    • /abc$ 查找以 abc 為行尾的行
    • ?abc 從光標所在位置向后查找字符串 abc (向上)
    • n或; 向同一方向重復上次的查找指令
    • N或, 向相反方向重復上次的查找指定

    3.替換

    • r 替換光標所在位置的字符
    • R 從光標所在位置開始替換字符,其輸入內容會覆蓋掉后面等長的文本內容,按“Esc”可以結束
    • :s/a1/a2 替換當前光標所在行第一處符合條件的內容
    • :s/a1/a2/g 替換當前光標所在行所有的 a1 都用 a2 替換
    • :%s/a1/a2 替換所有行中,第一處符合條件的內容
    • :%s/a1/a2/g 替換所有行中,所有符合條件的內容
    • :n1,n2 s/a1/a2 將文件中 n1 到 n2 行中第一處 a1 都用 a2 替換
    • :n1,n2 s/a1/a2/g 將文件中 n1 到 n2 行中所有 a1 都用 a2 替換

    4.行號顯示

    • :set nu 行號顯示
    • :set nonu 取消行號顯示

    編輯模式

    • i 在當前光標所在位置插入,光標后的文本相應向右移動
    • I 在光標所在行的行首插入,行首是該行的第一個非空白字符,相當于光標移動到行首執行 i 命令
    • o 在光標所在行的下插入新的一行。光標停在空行首,等待輸入文本
    • O(大寫) 在光標所在行的上插入新的一行。光標停在空行的行首,等待輸入文本
    • a 在當前光標所在位置之后插入
    • A 在光標所在行的行尾插入,相當于光標移動到行尾再執行 a 命令
    • esc鍵 退出編輯模式

    tar命令

    tar (選項)(參數)

    • -c:壓縮
    • -x:解壓
    • -t:查看內容
    • -r:向壓縮歸檔文件末尾追加文件
    • -u:更新原壓縮包中的文件
    • -z:有gzip屬性的
    • -j:有bz2屬性的
    • -Z:有compress屬性的
    • -v:顯示所有過程
    • -O:將文件解開到標準輸出
    • -f: 指定壓縮\解壓文件名字
    #將所有.jpg的文件打成一個名為all.tar的包 tar -cf all.tar *.jpg#將所有.gif的文件增加到all.tar的包里面去 tar -rf all.tar *.gif#覆蓋原來tar包all.tar中logo.gif文件 tar -uf all.tar logo.gif#列出all.tar包中所有文件 tar -tf all.tar#這條命令是解出all.tar包中所有文件 tar -xf all.tar#將目錄里所有jpg文件打包成jpg.tar tar -cvf jpg.tar *.jpg

    壓縮

    #將目錄里所有jpg文件打包成jpg.tar后,并且將其用gzip壓縮,生成一個gzip壓縮過的包,命名為jpg.tar.gz tar -czf jpg.tar.gz *.jpg#將目錄里所有jpg文件打包成jpg.tar后,并且將其用bzip2壓縮,生成一個bzip2壓縮過的包,命名為jpg.tar.bz2 tar -cjf jpg.tar.bz2 *.jpg#將目錄里所有jpg文件打包成jpg.tar后,并且將其用compress壓縮,生成一個umcompress壓縮過的包,命名為jpg.tar.Z tar -cZf jpg.tar.Z *.jpg#rar格式的壓縮,需要先下載rar for linux rar a jpg.rar *.jpg#zip格式的壓縮,需要先下載zip for linux zip jpg.zip *.jpg

    解壓

    #解壓tar包 tar -xvf file.tar#解壓tar.gz包 tar -xzvf file.tar.gz#解壓tar.bz2包 tar -xjvf file.tar.bz2 #解壓解壓tar.Z包 tar -xZvf file.tar.Z#解壓解壓file.rar包 unrar e file.rar#解壓zip unzip file.zip

    scp命令

    用于在Linux下進行遠程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的。可以從本地服務器復制到遠程服務器,也可以從遠程服務器復制到本地。
    scp (參數) (原路徑) (目標路徑)

    • -1 強制scp命令使用協議ssh1
    • -2 強制scp命令使用協議ssh2
    • -4 強制scp命令只使用IPv4尋址
    • -6 強制scp命令只使用IPv6尋址
    • -B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語)
    • -C 允許壓縮。(將-C標志傳遞給ssh,從而打開壓縮功能)
    • -p 保留原文件的修改時間,訪問時間和訪問權限。
    • -q 不顯示傳輸進度條。
    • -r 遞歸復制整個目錄。
    • -v 詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的調試信息。這些信息用于調試連接,驗證和配置問題。
    • -c 以cipher將數據傳輸進行加密,這個選項將直接傳遞給ssh。
    • -l limit 限定用戶所能使用的帶寬,以Kbit/s為單位。
    • -P port 注意是大寫的P, port是指定數據傳輸用到的端口號
    • -S program 指定加密傳輸時所使用的程序。
    #在本地服務器上將/home/xu目錄下所有的文件傳輸到服務器123.123.123.123的/home/xugu目錄 scp -r /home/xu root@23.123.123.123:/home/xugu#在本地服務器上操作,將服務器123.123.123.123上/home/xugu目錄下所有的文件全部復制到本地的/home目錄下 scp -r root@23.123.123.123:/home/xugu /home

    kill命令

    kill 命令是按照 PID 來確定進程的,所以 kill 命令只能識別 PID,而不能識別進程名。Linux 定義了幾十種不同類型的信號。

    kill信號

    • 0 EXIT 程序退出時收到該信息。
    • 1 HUP 終端連接的掛起信號,這個信號也會造成某些進程在沒有終止的情況下重新初始化。
    • 2 INT 表示結束進程,但并不是強制性的,常用的 “Ctrl+C” 組合鍵發出就是一個 kill -2 的信號。
    • 3 QUIT 退出。
    • 9 KILL 殺死進程,即強制結束進程。
    • 15 TERM 正常結束進程,是 kill 命令的默認信號

    kill (選項)(參數)

    • -s (signal) : 其中常用的訊號有 HUP (1),KILL (9),TERM (15),分別代表著重跑,強制結束,正常結束; 詳細的信號可以用 kill -l (見下結果,可用數字帶入)
    • -p : 印出pid,并不送出信號
    • -l (signal) : 列出所有可用的信號名稱
    # 重新運行PID為23412的進程 kill -1 23412# 強制關閉PID為23412的進程 kill -9 23412# 正常關閉PID為23412的進程 kill -15 23412

    3.常用命令

    ssh

    #使用ssh連接遠程主機 ssh user@hostname#ssh連接到目標主機其他端口 ssh -p 10022 user@hostname#使用ssh在遠程主機執行一條命令并顯示到本地, 然后繼續本地工作 ssh pi@10.42.0.47 ls -l#構建 ssh 密鑰對 #使用 ssh-keygen -t +算法 ,現在大多數都使用rsa或者dsa算法。 ssh-keygen -t rsa#查看是否已經添加了對應主機的密鑰,使用-F選項 ssh-keygen -F 222.24.51.147#刪除主機密鑰,使用-R選項 ssh-keygen -R 222.24.51.147#綁定源地址 #如果你的客戶端有多于兩個以上的 IP 地址,你就不可能分得清楚在使用 #哪一個 IP 連接到 SSH 服務器。為了解決這種情況, #我們可以使用 -b 選項來指定一個IP 地址。 #這個 IP 將會被使用做建立連接的源地址。 ssh -b 192.168.0.200 root@192.168.0.103#配置 SSH,SSH的配置文件在 /etc/ssh/sshd_config 中,你可以看到端口號, 空閑超時時間等配置項。 vi /etc/ssh/sshd_config

    ftp

    #連接ftp服務器 ftp 192.168.1.1

    只有連接上ftp服務器后才能執行以下的內部命令

    • ls 顯示服務器上的目錄
    • get 從服務器下載指定文件到客戶端
    • put 從客戶端傳送指定文件到服務器
    • open 連接ftp服務器
    • quit 斷開連接并退出ftp服務器
    • cd directory 改變服務器的當前目錄為directory
    • lcd directory 改變本地的當前目錄為directory
    • bye 退出ftp命令狀態
    • ascii 設置文件傳輸方式為ASCII模式
    • binary 設置文件傳輸方式為二進制模式
    • ! 執行本地主機命令
    • cd 切換遠端ftp服務器上的目錄
    • cdup 上一層目錄
    • close 在不結束ftp進程的情況下,關閉與ftp服務器的連接
    • delete 刪除遠端ftp服務器上的文件
    • get 下載
    • hash 顯示#表示下載進度
    • mdelete 刪除文件,模糊匹配
    • mget 下載文件,模糊匹配
    • mput 上傳文件,模糊匹配
    • mkdir 在遠端ftp服務器上,建立文件夾
    • newer 下載時,檢測是不是新文件
    • prompt 關閉交互模式
    • put 上傳
    • pwd 顯示當前目錄
    #以下命令都是連接成功后執行的 #下載遠程服務器上的/usr/your/1.htm文件,到本地命名為1.htm get /usr/your/1.htm 1.htm#如要獲取服務器上/usr/your/下的所有文件,則 cd /usr/your/ mget *.*#顯示下載進度 hash#把本地的1.htm傳送到遠端主機/usr/your,并改名為2.htm ftp> put 1.htm /usr/your/2.htm#把本地當前目錄下所有html文件上傳到服務器/usr/your/ 下 cd /usr/your mput *.htm#斷開連接 bye

    date命令

    date 命令用于顯示或設置系統的時間或日期。
    格式:date [參數] [日期格式]
    常用日期格式

    • %t 輸出制表符,tab鍵
    • %H 小時(00~23)
    • %I 小時(00~12)
    • %M 分鐘(00~59)
    • %S 秒(00~59)
    • %j 今年中的第幾天
    • %Y 輸出年份
    • %m 輸出月份
    • %d 輸出日期
    # 輸出3分鐘前的時間 (3天day、月month、年year前同理) date -d '3 minutes ago' date -d '-3 minutes'# 輸出3分鐘后的時間(3天、月、年前同理) date -d '3 minutes'# 將系統時間改為1999年1月1日 上午8:30 date -s "19990101 8:30:00"

    ntpdate(同步時鐘)

    #同步網絡時間 ntpdate time.nist.gov

    4.性能查看命令

    top命令

    使用top后可以看到如下信息

    top - 01:25:19 up 1 day, 14:58, 5 users, load average: 8.27, 6.81, 3.90 Tasks: 249 total, 6 running, 211 sleeping, 31 stopped, 1 zombie %Cpu(s): %Cpu(s): 18.4 us, 13.3 sy, 0.0 ni, 68.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 7990256 total, 1544404 free, 2201752 used, 4244100 buff/cache KiB Swap: 8258556 total, 8258556 free, 0 used. 4795952 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9097 polkitd 20 0 723528 18912 5420 R 19.4 0.2 191:57.59 polkitd 10923 lolxxs 20 0 3206844 301612 82960 R 3.9 3.8 6:14.46 gnome-shell 10179 root 20 0 932664 605792 553340 R 1.7 7.6 2:58.45 X 11535 lolxxs 20 0 814684 64944 21604 R 1.3 0.8 1:20.11 gnome-terminal- 9050 dbus 20 0 70216 4376 1964 S 0.9 0.1 4:53.74 dbus-daemon 39738 root 20 0 162120 2384 1588 R 0.4 0.0 0:00.05 top 40227 root 20 0 2914680 1.2g 3780 S 0.4 15.2 9:22.38 xugu12_linux_x6 1 root 20 0 128392 7004 4200 S 0.0 0.1 0:06.59 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.10 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:08.20 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:12.80 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain 11 root rt 0 0 0 0 S 0.0 0.0 0:00.66 watchdog/0
  • 第一行:
    • 01:25:19 — 當前系統時間
    • up 1 day, 14:58 — 系統已經運行了1天14小時58分鐘(在這期間沒有重啟過)
    • 5 user — 當前有5個用戶登錄系統
    • load average: 8.27, 6.81, 3.90— load average后面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。
  • 第二行:
    • Tasks — 任務(進程),系統共有249個進程,其中處于運行中的有6個,211個在休眠(sleep),stoped狀態的有31個,zombie狀態(僵尸)的有1個。
  • 第三行:cpu狀態
    • 18.4% us — 用戶空間占用CPU的百分比。
    • 13.3% sy — 內核空間占用CPU的百分比。
    • 0.0% ni — 改變過優先級的進程占用CPU的百分比
    • 68.3% id — 空閑CPU百分比
    • 0.0% wa — IO等待占用CPU的百分比
    • 0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比
    • 0.0% si — 軟中斷(Software Interrupts)占用CPU的百分比
  • 第四行:內存狀態
    • 7990256k total — 物理內存總量
    • 1544404k free — 空閑內存總量
    • 2201752k used — 使用中的內存總量
    • 4244100k buffers — 緩存的內存量
  • 第五行:swap交換分區
    • 8258556k total — 交換區總量
    • 8258556k free — 交換區空閑內存總量
    • 0 used — 交換區使用中的內存總量
    • 4795952 avail Mem - 交換區可用的內存總量
  • 第七行以下:各進程(任務)的狀態監控
    • PID — 進程id
    • USER — 進程所有者
    • PR — 進程優先級
    • NI — nice值。負值表示高優先級,正值表示低優先級
    • VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
    • RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
    • SHR — 共享內存大小,單位kb
    • S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
    • %CPU — 上次更新到CPU時間占用百分比
    • %MEM — 進程使用的物理內存百分比
    • TIME+ — 進程使用的CPU時間總計,單位1/100秒
    • COMMAND — 進程名稱(命令名/命令行)

    iotop命令

    使用iotop得到如下信息

    Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/sTID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 222 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh]9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]10 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [lru-add-drain]11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs]14 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns]15 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd]16 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [writeback]17 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kintegrityd]
  • 第一行:Read和Write速率總計
  • 第二行:實際的Read和Write速率
  • 第三行:參數如下:
     - 線程ID(按p切換為進程ID)
     - 優先級
     - 用戶
     - 磁盤讀速率
     - 磁盤寫速率
     - swap交換百分比
     - IO等待所占的百分比
     - 線程/進程命令
  • iotop (選項)(參數)

    • -o 只顯示正在產生I/O的進程或線程,除了傳參,可以在運行過程中按o生效

    • -b 非交互模式,一般用來記錄日志

    • -n NUM, 設置監測的次數,默認無限。在非交互模式下很有用

    • -d SEC 設置每次監測的間隔,默認1秒,接受非整形數據例如1.1

    • -p PID 指定監測的進程/線程

    • -u USER 指定監測某個用戶產生的I/O

    • -P 僅顯示進程,默認iotop顯示所有線程

    • -a 顯示累積的I/O,而不是帶寬

    • -k 使用kB單位,而不是對人友好的單位。在非交互模式下,腳本編程有用

    • -t 加上時間戳,非交互非模式

    • -q 只在第一次監測時顯示列名

    • -qq 永遠不顯示列名

    • -qqq 永遠不顯示I/O匯總

    # 使用非交互式,-n 2指監控2次,-d 5 表示5秒刷新一次 iotop -b -n 2 -d 5#執行-p指定進程的pid和-u參數指定用戶 iotop -b -n 2 -d 5 -p 25 -u root

    free命令

    free (選項)

    • -b 以字節為單位顯示內存使用情況
    • -k 默認選項,以“kb”為單位顯示內存使用情況
    • -m 以“mb”為單位顯示內存使用情況
    • -g 以"gb"為單位顯示內存使用情況
    • -h 以易讀格式顯示

    vmstat命令

    使用 vmstat 1 5 出現如下信息

    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st9 0 0 1515624 309284 3949092 0 0 17 29 109 65 6 6 88 0 02 0 0 1515188 309284 3949092 0 0 0 0 1337 3645 15 14 72 0 05 0 0 1515188 309284 3949092 0 0 0 0 1362 3669 16 14 71 0 05 0 0 1515176 309284 3949092 0 0 0 0 1371 3609 18 13 69 0 01 0 0 1515184 309284 3949092 0 0 0 0 1368 3682 15 16 70 0 0
  • procs
    • r:可運行(正運行或等待運行)進程的個數,和核心數有關
    • b:處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度)
  • memory
    • swpd: 交換內存的使用總量
    • free:空閑物理內存總量
    • buffer:用于buffer的內存總量
    • cache:用于cache的內存總量
  • swap
    • si:從磁盤交換進內存的數據速率(kb/s)
    • so:從內存交換至磁盤的數據速率(kb/s)
  • io:
    • bi:從塊設備讀入數據到系統的速率(kb/s)
    • bo: 保存數據至塊設備的速率(kb/s)
  • system:
    • in: 中斷速率,包括時鐘
    • cs: 進程切換速率
  • cpu:
    • us: 運行非內核代碼所花費的時間
    • sy: 運行內核代碼所花費的時間
    • id: cpu閑置時間
    • wa: cpu等待時間
    • st: cpu被虛擬機竊取的時間

    vmstat (參數)(命令)

    • -a:顯示活躍和非活躍內存
    • -f:顯示從系統啟動至今的fork數量 。
    • -m:顯示slabinfo
    • -n:只在開始時顯示一次各字段名稱。
    • -s:顯示內存相關統計信息及多種系統活動數量。
    • -d:顯示磁盤相關統計信息。
    • -p:顯示指定磁盤分區統計信息
    • -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、- 1000000、1048576字節(byte)。默認單位為K(1024 bytes)
    • -V:顯示vmstat版本信息。
    #指定每秒查看一次虛擬內存的情況,總共查詢10次 vmstat 1 10     #顯示活躍和非活躍內存 vmstat -a 1 5#查看磁盤的讀/寫 vmstat -d

    5.進程和占用端口查看命令

    ps命令

    ps輸出屬性:

    • USER:進程所有者信息
    • PID:進程的pid號
    • %CPU:進程CPU使用率,如果超出100%表示使用的內核數大于1,如376%表示使用了4顆CPU。
    • %MEM:進程使用內存的使用率
    • VSZ: Virtual memory SiZe,虛擬內存集,線性內存
    • RSS: ReSident Size, 常駐內存集,即實際使用的內存
    • PSR: 進程運行在哪顆CPU上,我們知道CPU存在一級緩存,二級緩存和三級緩存它的速度比內存還要快。建議運行程序時將程序始終綁定到一顆CPU上運行,感興趣的小伙伴可以學習一下"taskset"命令。
    • TTY: 進程所在終端
    • STAT:進程狀態
         R:running
         S: interruptable sleeping
         D: uninterruptable sleeping
         T: stopped
         Z: zombie,僵尸進程
         +: 前臺進程
         l: 多線程進程
         L:內存分頁并帶鎖
         N:低優先級進程
         <: 高優先級進程
    • S: session leader,會話(子進程)發起者
    • NI: nice值
    • PRI: priority 優先級
    • PSR: processor CPU編號
    • RTPRIO: 實時優先級,比較霸道,當它的優先級越高會盡可能的多的占用CPU資源。
    • START:進程的啟動時間
    • TIME:進程的獲取CPU的時間
    • COMMAND:啟動進程時調用的指令
    #查看所有終端中的進程 ps -a     #查看不鏈接終端的進程 ps -x #查看進程所有者的信息 ps -u #顯示支持的屬性列表 ps -L          #顯示定制的信息,支持的屬性可查看"ps -L" ps -o pid,%cpu,%mem,cmd,uname,size #顯示指定命令,多個命令用,分隔 ps -C ping,vi #顯示所有進程,相當于-A ps -e #顯示完整格式程序信息 ps -f           #顯示更完整格式的進程信息 ps -F#以進程層級格式顯示進程相關信息 ps -H     #指定有效的用戶ID或名稱 ps -u xugu    #指定有效的用戶ID或名稱的進程并根據進程信息的第6列進行逆序排序 ps -F -u xugu | sort -nrk 6#統計進程數 ps x | wc -l#wc命令參數及意義 wc [-clw][--help][--version][文件...] 參數: -c或--bytes或--chars 只顯示Bytes數。 -l或--lines 顯示行數。 -w或--words 只顯示字數。 --help 在線幫助。 --version 顯示版本信息。

    netstat命令

    netstat (選項)

    • -n:以數字的形式顯示相關的主機地址、端口等信息
    • -r:顯示路由表信息.
    • -a:顯示主機中所有活動的網絡連接信息(包括監聽、非監聽狀態的服務端口)
    • -l:顯示處于監聽Listenin狀態的網絡連接及端口信息
    • -t:查看TCP (Transmission Control Protocol,傳輸控制協議)相關的信息
    • -u:顯示 UDP (User Datagram Protocol,用戶數據報協議〉協議相關的信息
    • -p:顯示與網絡連接相關聯的進程號、進程名稱信息(該選項需要root權限)
    #查看占用5138端口的TCP和UDP連接,并顯示其進程號和以數字的形式顯示相關的主機地址、端口等信息 netstat -tunlp | grep 5138

    lsof命令

    使用 lsof /dev/null 可以得到如下內容

    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 0u CHR 1,3 0t0 6477 /dev/null systemd 1 root 1u CHR 1,3 0t0 6477 /dev/null systemd 1 root 2u CHR 1,3 0t0 6477 /dev/null systemd-j 4293 root 0r CHR 1,3 0t0 6477 /dev/null systemd-j 4293 root 1w CHR 1,3 0t0 6477 /dev/null systemd-j 4293 root 2w CHR 1,3 0t0 6477 /dev/null lvmetad 4314 root 0r CHR 1,3 0t0 6477 /dev/null systemd-u 4327 root 0r CHR 1,3 0t0 6477 /dev/null auditd 9016 root 0u CHR 1,3 0t0 6477 /dev/null
    • COMMAND:進程的名稱

    • PID:進程的id

    • USER:進程所有者

    • FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等

    • TYPE:文件類型,如DIR、REG等

    • DEVICE:指定磁盤的名稱

    • SIZE:文件的大小

    • NODE:索引節點(文件在磁盤上的標識)

    • NAME:打開文件的確切名稱

    #顯示開啟文件test.txt的進程 lsof test.txt # 顯示abc進程現在打開的文件 lsof -c abc#列出進程號為1234的進程所打開的文件 lsof -cp 1234 # 顯示歸屬gid的進程情況 lsof -g gid# 顯示/usr/local/目錄下被進程開啟的文件 lsof +d /usr/local/#同上,但是會搜索目錄下的目錄(即遞歸搜索),時間較長 lsof +D /usr/local/ #顯示文件描述符fd為4的進程 lsof -d 4 #用以顯示符合條件的進程情況 lsof -i [4 6] [protocol][@hostname|hostaddr][:service|port] #參數示例如下4 6 --> IPv4 or IPv6protocol --> TCP or UDPhostname --> Internet host namehostaddr --> IPv4地址service --> /etc/service中的 service name (可以不止一個)port --> 端口號 (可以不止一個)#查看使用IPv4協議的進程 lsof -i 4

    6.網絡相關命令

    ifconfig命令

    使用ifconfig命令出現如下信息

    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.100.128 netmask 255.255.255.0 broadcast 192.168.100.255inet6 fe80::772d:ed6c:30b4:3edb prefixlen 64 scopeid 0x20<link>ether 00:0c:29:16:98:d7 txqueuelen 1000 (Ethernet)RX packets 270721 bytes 233064470 (222.2 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 100270 bytes 7083740 (6.7 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    (1)第一行:“ens33"中的"en"是”"EtherNet”"的縮寫,表示網卡類型為以太網,"s"表示為熱插拔插槽上的設備,數字“33”表示插槽編號。
    UP:代表此網絡接口為啟用狀態(down為關閉狀態)
    RUNNING:代表網卡設備己連接
    MULTICAST:表示支持組播
    MTU:為數據包最大傳輸單元
    (2)第二行:網卡的IP地址、子網掩碼、廣播地址
    (3)第三行:IP v6地址
    (4)第四行:Ethernet(以太網)表示連接類型:ether:表示為網卡的MAC地址
    (5)第五行:接受數據包個數、大小統計信息
    (6)第六行:異常接受包的個數、如丟包量、錯誤等
    (7)第七行:發送數據包個數、大小統計信息
    (8)第八行:發送包的個數、如丟包量、錯誤等

    網絡命令

    #設置網絡接口的ip地址,子網掩碼 ifconfig ens33 192.168.100.128 netmask 255.255.255.0 ifconfig ens33 192.168.100.128/24#禁用或者重新激活網卡 ifconfig ens33 up ifconfig ens33 down#徹底禁用(臨時網卡地址不存在)和激活網卡 ifdown ens33 ifup ens33#設置虛擬網絡接口,新增一個虛擬設備 ifconfig ens33:1 192.168.100.12#查看主機名稱 hostname#設置主機名稱 hostnamectl set-hostname newName#通過配置文件設置 vim /etc/hostname#查看本主機ip hostname -i

    route命令

    route命令可以查看路由表信息。路由表存儲著Linux操作系統中的路由表決定著從本機向其他主機、其他網絡發送數據的去向,是排除網絡故障的關鍵信息。

    查看路由表信息

    #查看 route -nKernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.100.2 0.0.0.0 UG 0 0 0 ens33 0.0.0.0 192.168.100.2 0.0.0.0 UG 100 0 0 ens33 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 ens33 192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
    • destination 對應目標網段的地址
    • gateway 對應下一跳路由器地址
    • iface 對應發送數據的網絡接口

    ss命令

    • ss命令也可以查看網絡連接情況,主要用于獲取 socket統計信息,它可以顯示和 netstat命令類似的輸出內容。但ss 的優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比 netstat更快速更高效

    • 當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢。ss快的秘訣在于,它利用到了TCP協議棧中t.cp_diag。tcp_diag是一個用于分析統計的模塊,可以獲得Linux內核中第一手的信息,這就確保了ss的快捷高效

    • netstat是遍歷/proc下面每個PID日錄,ss直接讀/proc/net下面的統計信息。所以ss執行的時候消耗資源以及消耗的時間都比netatat少很多

    ss (選項)

    • -h:help 通過該選項獲取更多的使用幫助
    • -v:version 顯示軟件的版本號
    • -t:tcp 顯示TCP協議的sockets
    • -u:udp 顯示UDP協議的sockets
    • -n:numeric 不解析服務的名稱,如“22”端口不會顯示成“ssh”
    • -l:listening 只顯示處于監聽狀態的端口
    • -p:processes 顯示監聽端口的進程
    • -a:all 對TCP協議來說,既包含監聽的端口,也包含建立的連接
    • -r:resolve 把ip解釋為域名,把端口號解釋為協議名稱
    #查看處于以下狀態established,syn-sent,syn-recv,fin-wait-1, #fin-wait-2,time-wait,closed,closed-wait,last-ack的連接 ss -t state established # 連接端口小于500的都顯示 ss -tnl sport le 500

    ping命令

    ping命令

    #指定ping5次 ping -c 5 192.168.137.15 #只ping5秒,5秒后結束 ping -w 5 www.baidu.com #不間斷地Ping指定計算機,直到管理員中斷 ping -t 192.168.137.15 #解析計算機名與NetBios名。就是可以通過ping它的ip地址,可以解析出主機名。 #當你遇到一個ip,卻不知道他是那個設備時,這時你可以通過ping -a知道它的主機名。 ping-a 192.168.137.15#發送 65500指定大小的到目標主機的數據包 ping -l 65500 -t 192.168.137.15 #發送一個數據包,最多記錄9個路由 ping -n 1 -r 9 202.102.224.25 #ping一個網段代碼中的這個(1,1,255)就是網段起與始, #就是檢測網段192.168.1.1到192.168.1.255之間的所有的ip地址, #每次逐增1,直接到1到255這255個ip檢測完為止。 for /l %D in (1,1,255) do ping 10.168.1.%D # 跟蹤數據包 traceroute 92.168.137.15

    域名相關

    #域名解析 nslookup www.baidu.com#域名解析的配置文件:保存本機需要使用的DNS服務器的ip地址 vim /etc/resolv.conf#在文件后面添加如下內容 search localdomain nameserver 114.114.114.114 nameserver 8.8.8.8#search設置默認的搜索地 當訪問主機“localhost”時就相當于 #訪問“localhost.localdomain” 一行一個DNS,最多配置三個DNS#或者在如下配置文件中配置DNS服務器 vim /etc/sysconfig/network-scripts/ifcfg-ens33#在文件末尾添加如下內容 DNS1 = 114.114.114.114 DNS2 = 8.8.8.8#解析詳細過程DNS信息收集 dig www.google.com#配置固定的域名解析 vi /etc/hosts #在最后添加 192.168.137.15 www.guxin.com

    本地主機映射文件/etc/hosts 文件中記錄著一份主機名與 IP 地址的映射關系表,一般用來保存經常需要訪問的主機的信息。當訪問一個未知的域名時,先查找該文件中是否有相應的映射記錄,如果找不到再去向DNS 服務器查詢

    若在/etc/hosts 文件中添加“192.168.137.15 www.guxin.com”的映射記錄,則當訪www.guxin.com 時,將會直接向 IP 地址 192.168.137.15 發送 Web 請求

    hosts文件和DNS服務器的比較

    • 默認情況下,系統首先從hosts文件查找解析記錄
    • hosts文件只對當前的主機有效
    • hosts文件可減少DNS查詢過程,從而加快訪問速度

    總結

    以上是生活随笔為你收集整理的Linux操作系统基础知识命令参数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。