Linux命令集錦

      網友投稿 816 2025-04-02

      基本操作linux關機,重啟# 關機

      shutdown -h now

      # 重啟

      shutdown -r now

      查看系統,CPU信息# 查看系統內核信息

      uname -a

      # 查看系統內核版本

      cat /proc/version

      # 查看當前用戶環境變量

      env

      cat /proc/cpuinfo

      # 查看有幾個邏輯cpu, 包括cpu型號

      cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

      # 查看有幾顆cpu,每顆分別是幾核

      cat /proc/cpuinfo | grep physical | uniq -c

      # 查看當前CPU運行在32bit還是64bit模式下, 如果是運行在32bit下也不代表CPU不支持64bit

      getconf LONG_BIT

      # 結果大于0, 說明支持64bit計算. lm指long mode, 支持lm則是64bit

      cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

      建立軟連接ln -s /usr/local/jdk1.8/ jdk

      rpm相關# 查看是否通過rpm安裝了該軟件

      rpm -qa | grep 軟件名

      sshkey# 創建sshkey

      ssh-keygen -t rsa -C your_email@example.com

      #id_rsa.pub 的內容拷貝到要控制的服務器的 home/username/.ssh/authorized_keys 中,如果沒有則新建(.ssh權限為700, authorized_keys權限為600)

      命令重命名# 在各個用戶的.bash_profile中添加重命名配置

      alias ll='ls -alF'

      同步服務器時間sudo ntpdate -u ntp.api.bz

      后臺運行命令# 后臺運行,并且有nohup.out輸出

      nohup xxx &

      # 后臺運行, 不輸出任何日志

      nohup xxx > /dev/null &

      # 后臺運行, 并將錯誤信息做標準輸出到日志中

      nohup xxx >out.log 2>&1 &

      強制活動用戶退出# 命令來完成強制活動用戶退出.其中TTY表示終端名稱

      pkill -kill -t [TTY]

      查看命令路徑which <命令>

      查看進程所有打開最大fd數ulimit -n

      配置dnsvim /etc/resolv.conf

      nslookup,查看域名路由表nslookup google.com

      last, 最近登錄信息列表# 最近登錄的5個賬號

      last -n 5

      設置固定ipifconfig em1??192.168.5.177 netmask 255.255.255.0

      查看進程內加載的環境變量# 也可以去 cd /proc 目錄下, 查看進程內存中加載的東西

      ps eww -p??XXXXX(進程號)

      查看進程樹找到服務器進程ps auwxf

      查看進程啟動路徑cd /proc/xxx(進程號)

      ls -all

      # cwd對應的是啟動路徑

      添加用戶, 配置sudo權限# 新增用戶

      useradd 用戶名

      passwd 用戶名

      #增加sudo權限

      vim /etc/sudoers

      # 修改文件里面的

      # root? ? ALL=(ALL)? ?? ? ALL

      # 用戶名 ALL=(ALL)? ?? ? ALL

      強制關閉進程名包含xxx的所有進程ps aux|grep xxx | grep -v grep | awk '{print }' | xargs kill -9

      磁盤,文件,目錄相關操作vim操作#normal模式下 g表示全局, x表示查找的內容, y表示替換后的內容

      :%s/x/y/g

      #normal模式下

      0??# 光標移到行首(數字0)

      $??# 光標移至行尾

      shift + g # 跳到文件最后

      gg # 跳到文件頭

      # 顯示行號

      :set nu

      # 去除行號

      :set nonu

      # 檢索

      /xxx(檢索內容)??# 從頭檢索, 按n查找下一個

      ?xxx(檢索內容)??# 從尾部檢索

      打開只讀文件,修改后需要保存時(不用切換用戶即可保存的方式)# 在normal模式下

      :w !sudo tee %

      查看磁盤, 文件目錄基本信息# 查看磁盤掛載情況

      mount

      # 查看磁盤分區信息

      df

      # 查看目錄及子目錄大小

      du -H -h

      # 查看當前目錄下各個文件, 文件夾占了多少空間, 不會遞歸

      du -sh *

      wc命令# 查看文件里有多少行

      wc -l filename

      # 看文件里有多少個word

      wc -w filename

      # 文件里最長的那一行是多少個字

      wc -L filename

      # 統計字節數

      wc -c

      常用壓縮, 解壓縮命令壓縮命令tar czvf xxx.tar 壓縮目錄

      zip -r xxx.zip 壓縮目錄

      解壓縮命令tar zxvf xxx.tar

      # 解壓到指定文件夾

      tar zxvf xxx.tar -C /xxx/yyy/

      unzip xxx.zip

      變更文件所屬用戶, 用戶組chown eagleye.eagleye xxx.log

      cp, scp, mkdir#復制

      cp xxx.log

      # 復制并強制覆蓋同名文件

      cp -f xxx.log

      # 復制文件夾

      cp -r xxx(源文件夾) yyy(目標文件夾)

      # 遠程復制

      scp -P ssh端口 username@10.10.10.101:/home/username/xxx /home/xxx

      # 級聯創建目錄

      mkdir -p /xxx/yyy/zzz

      # 批量創建文件夾, 會在test,main下都創建java, resources文件夾

      mkdir -p src/{test,main}/{java,resources}

      比較兩個文件diff -u 1.txt 2.txt

      日志輸出的字節數,可以用作性能測試# 如果做性能測試, 可以每執行一次, 往日志里面輸出 “.” , 這樣日志中的字節數就是實際的性能測試運行的次數, 還可以看見實時速率.

      tail -f xxx.log | pv -bt

      查看, 去除特殊字符# 查看特殊字符

      cat -v xxx.sh

      # 去除特殊字符

      sed -i 's/^M//g’ env.sh??去除文件的特殊字符, 比如^M:??需要這樣輸入: ctrl+v+enter

      處理因系統原因引起的文件中特殊字符的問題# 可以轉換為該系統下的文件格式

      cat file.sh > file.sh_bak

      # 先將file.sh中文件內容復制下來然后運行, 然后粘貼內容, 最后ctrl + d 保存退出

      cat > file1.sh

      # 在vim中通過如下設置文件編碼和文件格式

      :set fileencodings=utf-8 ,然后 w (存盤)一下即可轉化為 utf8 格式,

      :set fileformat=unix

      # 在mac下使用dos2unix進行文件格式化

      find . -name "*.sh" | xargs dos2unix

      tee, 重定向的同時輸出到屏幕awk ‘{print

      tee, 重定向的同時輸出到屏幕awk ‘{print $0}’ xxx.log | tee test.log

      }’ xxx.log | tee test.log

      檢索相關grep# 反向匹配, 查找不包含xxx的內容

      grep -v xxx

      # 排除所有空行

      grep -v '^/pre>

      # 返回結果 2,則說明第二行是空行

      grep -n “^$” 111.txt

      # 查詢以abc開頭的行

      grep -n “^abc” 111.txt

      # 同時列出該詞語出現在文章的第幾行

      grep 'xxx' -n xxx.log

      # 計算一下該字串出現的次數

      grep 'xxx' -c xxx.log

      # 比對的時候,不計較大小寫的不同

      grep 'xxx' -i xxx.log

      awk# 以':' 為分隔符,如果第五域有user則輸出該行

      awk -F ':' '{if ( ~ /user/) print

      awk -F ':' '{if ($5 ~ /user/) print $0}' /etc/passwd

      }' /etc/passwd

      # 統計單個文件中某個字符(串)(中文無效)出現的次數

      awk -v RS='character' 'END {print --NR}' xxx.txt

      find檢索命令# 在目錄下找后綴是.mysql的文件

      find /home/eagleye -name '*.mysql' -print

      # 會從 /usr 目錄開始往下找,找最近3天之內存取過的文件。

      find /usr -atime 3 –print

      # 會從 /usr 目錄開始往下找,找最近5天之內修改過的文件。

      find /usr -ctime 5 –print

      # 會從 /doc 目錄開始往下找,找jacky 的、文件名開頭是 j的文件。

      find /doc -user jacky -name 'j*' –print

      # 會從 /doc 目錄開始往下找,找尋文件名是 ja 開頭或者 ma開頭的文件。

      find /doc \( -name 'ja*' -o- -name 'ma*' \) –print

      #??會從 /doc 目錄開始往下找,找到凡是文件名結尾為 bak的文件,把它刪除掉。-exec 選項是執行的意思,rm 是刪除命令,{ } 表示文件名,“\;”是規定的命令結尾。

      find /doc -name '*bak' -exec rm {} \;

      網絡相關查看什么進程使用了該端口lsof -i:port

      獲取本機ip地址/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print }'|tr -d "addr:"

      iptables# 查看iptables狀態

      service iptables status

      # 要封停一個ip

      iptables -I INPUT -s ***.***.***.*** -j DROP

      # 要解封一個IP,使用下面這條命令:

      iptables -D INPUT -s ***.***.***.*** -j DROP

      備注: 參數-I是表示Insert(添加),-D表示Delete(刪除)。后面跟的是規則,INPUT表示入站,***.***.***.***表示要封停的IP,DROP表示放棄連接。

      #開啟9090端口的訪問

      /sbin/iptables -I INPUT -p tcp --dport 9090 -j ACCEPT

      # 防火墻開啟、關閉、重啟

      /etc/init.d/iptables status

      /etc/init.d/iptables start

      /etc/init.d/iptables stop

      /etc/init.d/iptables restart

      nc命令, tcp調試利器#給某一個endpoint發送TCP請求,就將data的內容發送到對端

      nc 192.168.0.11 8000 < data.txt

      #nc可以當做服務器,監聽某個端口號,把某一次請求的內容存儲到received_data里

      nc -l 8000 > received_data

      #上邊只監聽一次,如果多次可以加上-k參數

      nc -lk 8000

      tcpdump# dump出本機12301端口的tcp包

      tcpdump -i em1 tcp port 12301 -s 1500 -w abc.pcap

      跟蹤網絡路由路徑# traceroute默認使用udp方式, 如果是-I則改成icmp方式

      traceroute -I www.163.com

      # 從ttl第3跳跟蹤

      traceroute -M 3 www.163.com

      # 加上端口跟蹤

      traceroute -p 8080 192.168.10.11

      ss# 顯示本地打開的所有端口

      ss -l

      # 顯示每個進程具體打開的socket

      ss -pl

      # 顯示所有tcp socket

      ss -t -a

      # 顯示所有的UDP Socekt

      ss -u -a

      # 顯示所有已建立的SMTP連接

      ss -o state established '( dport = :smtp or sport = :smtp )'

      # 顯示所有已建立的HTTP連接

      ss -o state established '( dport = :http or sport = :http )'

      找出所有連接X服務器的進程

      ss -x src /tmp/.X11-unix/*

      列出當前socket統計信息

      ss -s

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

      netstat# 輸出每個ip的連接數,以及總的各個狀態的連接數

      netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n",a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}'

      # 統計所有連接狀態,

      # CLOSED:無連接是活動的或正在進行

      # LISTEN:服務器在等待進入呼叫

      # SYN_RECV:一個連接請求已經到達,等待確認

      # SYN_SENT:應用已經開始,打開一個連接

      # ESTABLISHED:正常數據傳輸狀態

      # FIN_WAIT1:應用說它已經完成

      # FIN_WAIT2:另一邊已同意釋放

      # ITMED_WAIT:等待所有分組死掉

      # CLOSING:兩邊同時嘗試關閉

      # TIME_WAIT:主動關閉連接一端還沒有等到另一端反饋期間的狀態

      # LAST_ACK:等待所有分組死掉

      netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

      # 查找較多time_wait連接

      netstat -n|grep TIME_WAIT|awk '{print }'|sort|uniq -c|sort -rn|head -n20

      監控linux性能命令top按大寫的 F 或 O 鍵,然后按 a-z 可以將進程按照相應的列進行排序, 然后回車。而大寫的 R 鍵可以將當前的排序倒轉

      列名

      含義

      PID進程id

      PPID父進程id

      RUSERReal user name

      UID進程所有者的用戶id

      USER進程所有者的用戶名

      GROUP進程所有者的組名

      TTY啟動進程的終端名。不是從終端啟動的進程則顯示為 ?

      PR優先級

      NInice值。負值表示高優先級,正值表示低優先級

      P最后使用的CPU,僅在多CPU環境下有意義

      %CPU上次更新到現在的CPU時間占用百分比

      TIME進程使用的CPU時間總計,單位秒

      TIME+進程使用的CPU時間總計,單位1/100秒

      %MEM進程使用的物理內存百分比

      VIRT進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES

      SWAP進程使用的虛擬內存中,被換出的大小,單位kb。

      RES進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA

      CODE可執行代碼占用的物理內存大小,單位kb

      DATA可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb

      SHR共享內存大小,單位kb

      nFLT頁面錯誤次數

      nDRT最后一次寫入到現在,被修改過的頁面數。

      S進程狀態。D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵尸進程

      COMMAND命令名/命令行

      WCHAN若該進程在睡眠,則顯示睡眠中的系統函數名

      Flags任務標志,參考 sched.hdmesg,查看系統日志dmesg

      iostat,磁盤IO情況監控iostat -xz 1

      # r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數和每秒讀寫數據量(千字節)。讀寫量過大,可能會引起性能問題。

      # await:IO操作的平均等待時間,單位是毫秒。這是應用程序在和磁盤交互時,需要消耗的時間,包括IO等待和實際操作的耗時。如果這個數值過大,可能是硬件設備遇到了瓶頸或者出現故障。

      # avgqu-sz:向設備發出的請求平均數量。如果這個數值大于1,可能是硬件設備已經飽和(部分前端硬件設備支持并行寫入)。

      # %util:設備利用率。這個數值表示設備的繁忙程度,經驗值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時間)。如果到達100%,說明硬件設備已經飽和。

      # 如果顯示的是邏輯設備的數據,那么設備利用率不代表后端實際的硬件設備已經飽和。值得注意的是,即使IO性能不理想,也不一定意味這應用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應用性能。

      free,內存使用情況free -m

      eg:

      total? ?? ? used? ?? ? free? ???shared? ? buffers? ???cached

      Mem:? ?? ?? ? 1002? ?? ???769? ?? ???232? ?? ?? ? 0? ?? ?? ?62? ?? ???421

      -/+ buffers/cache:? ?? ?? ? 286? ?? ???715

      Swap:? ?? ?? ? 1153? ?? ?? ? 0? ?? ? 1153

      第一部分Mem行:

      total 內存總數: 1002M

      used 已經使用的內存數: 769M

      free 空閑的內存數: 232M

      shared 當前已經廢棄不用,總是0

      buffers Buffer 緩存內存數: 62M

      cached Page 緩存內存數:421M

      關系:total(1002M) = used(769M) + free(232M)

      第二部分(-/+ buffers/cache):

      (-buffers/cache) used內存數:286M (指的第一部分Mem行中的used – buffers – cached)

      (+buffers/cache) free內存數: 715M (指的第一部分Mem行中的free + buffers + cached)

      可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數.

      第三部分是指交換分區

      sar,查看網絡吞吐狀態# sar命令在這里可以查看網絡設備的吞吐率。在排查性能問題時,可以通過網絡設備的吞吐量,判斷網絡設備是否已經飽和

      sar -n DEV 1

      #

      # sar命令在這里用于查看TCP連接狀態,其中包括:

      # active/s:每秒本地發起的TCP連接數,既通過connect調用創建的TCP連接;

      # passive/s:每秒遠程發起的TCP連接數,即通過accept調用創建的TCP連接;

      # retrans/s:每秒TCP重傳數量;

      # TCP連接數可以用來判斷性能問題是否由于建立了過多的連接,進一步可以判斷是主動發起的連接,還是被動接受的連接。TCP重傳可能是因為網絡環境惡劣,或者服務器壓力過大導致丟包

      sar -n TCP,ETCP 1

      vmstat, 給定時間監控CPU使用率, 內存使用, 虛擬內存交互, IO讀寫# 2表示每2秒采集一次狀態信息, 1表示只采集一次(忽略既是一直采集)

      vmstat 2 1

      eg:

      r b swpd free buff cache si so bi bo in cs us sy id wa

      1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0

      0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0

      0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0

      0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0

      1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0

      r 表示運行隊列(就是說多少個進程真的分配到CPU),我測試的服務器目前CPU比較空閑,沒什么程序在跑,當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關系,一般負載超過了3就比較高,超過了5就高,超過了10就不正常了,服務器的狀態很危險。top的負載類似每秒的運行隊列。如果運行隊列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高。

      b 表示阻塞的進程,這個不多說,進程阻塞,大家懂的。

      swpd 虛擬內存已使用的大小,如果大于0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那么你該升級內存了或者把耗內存的任務遷移到其他機器。

      free 空閑的物理內存的大小,我的機器內存總共8G,剩余3415M。

      buff Linux/Unix系統是用來存儲,目錄里面有什么內容,權限等的緩存,我本機大概占用300多M

      Linux命令集錦

      cache cache直接用來記憶我們打開的文件,給文件做緩沖,我本機大概占用300多M(這里是Linux/Unix的聰明之處,把空閑的物理內存的一部分拿來做文件和目錄的緩存,是為了提高 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。)

      si 每秒從磁盤讀入虛擬內存的大小,如果這個值大于0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。我的機器內存充裕,一切正常。

      so 每秒虛擬內存寫入磁盤的大小,如果這個值大于0,同上。

      bi 塊設備每秒接收的塊數量,這里的塊設備是指系統上所有的磁盤和其他塊設備,默認塊大小是1024byte,我本機上沒什么IO操作,所以一直是0,但是我曾在處理拷貝大量數據(2-3T)的機器上看過可以達到140000/s,磁盤寫入速度差不多140M每秒

      bo 塊設備每秒發送的塊數量,例如我們讀取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO過于頻繁,需要調整。

      in 每秒CPU的中斷次數,包括時間中斷

      cs 每秒上下文切換次數,例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,我們一般做性能測試時會進行幾千并發甚至幾萬并發的測試,選擇web服務器的進程可以由進程或者線程的峰值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核空間,導致上下文切換,這個是很耗資源,也要盡量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU干正經事的時間少了,CPU沒有充分利用,是不可取的。

      us 用戶CPU時間,我曾經在一個做加密解密很頻繁的服務器上,可以看到us接近100,r運行隊列達到80(機器在做壓力測試,性能表現不佳)。

      sy 系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁。

      id 空閑 CPU時間,一般來說,id + us + sy = 100,一般我認為id是空閑CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。

      wt 等待IO CPU時間。

      出處:https://www.52pojie.cn/thread-1537670-1-1.html, 文章轉載 侵刪

      Linux 網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel批注顯示的解決方法是什么
      下一篇:數字工作流系統:提升效率、簡化流程,打造高效商業操作
      相關文章
      亚洲av综合色区| 亚洲国产日韩在线视频| 在线观看亚洲人成网站| 亚洲国产精品无码专区在线观看| 亚洲综合无码AV一区二区 | 亚洲国产精品白丝在线观看| 亚洲视频在线一区| 亚洲韩国—中文字幕| 久久精品国产亚洲av水果派| 亚洲精品成人av在线| 久久久久亚洲AV无码永不| 亚洲资源在线视频| 亚洲日韩在线视频| 亚洲无砖砖区免费| 亚洲人成图片网站| 亚洲国产av玩弄放荡人妇| 含羞草国产亚洲精品岁国产精品| 亚洲AV电影天堂男人的天堂| 亚洲AⅤ男人的天堂在线观看| 国产亚洲视频在线观看| 亚洲精品国产精品国自产观看| 国产精品亚洲二区在线观看| 亚洲乱码精品久久久久..| 亚洲AV无码一区二区二三区入口 | 午夜影视日本亚洲欧洲精品一区| 亚洲精品在线观看视频| 亚洲美女激情视频| 亚洲综合一区二区三区四区五区| 色偷偷尼玛图亚洲综合| 亚洲AV成人潮喷综合网| 伊人亚洲综合青草青草久热| 国产v亚洲v天堂无码网站| 麻豆亚洲AV永久无码精品久久| 亚洲伊人久久大香线焦| 亚洲欧美国产国产一区二区三区| 日韩亚洲人成网站| 亚洲级αV无码毛片久久精品| 亚洲人成网站影音先锋播放| 亚洲欧洲精品国产区| 亚洲精品9999久久久久无码| 亚洲色偷偷狠狠综合网|