1. 程式人生 > >收集的55個Linux系統管理中常用的一些shell命令

收集的55個Linux系統管理中常用的一些shell命令

1.顯示消耗記憶體/CPU最多的10個程序

複製程式碼程式碼如下:
ps aux | sort -nk +4 | tail
ps aux | sort -nk +3 | tail

2.檢視程序
按記憶體從大到小排列
複製程式碼程式碼如下:
ps -e  -o "%C  : %p : %z : %a"|sort -k5 -nr

3.按cpu利用率從大到小排列
複製程式碼程式碼如下:
ps -e  -o "%C  : %p : %z : %a"|sort  -nr

3.檢視Apache的併發請求數及其TCP連線狀態

複製程式碼程式碼如下:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

4. 查詢佔用磁碟IO最多的程序
複製程式碼程式碼如下:
wget -c http://linux.web.psi.ch/dist/scientific/5/gfa/all/dstat-0.6.7-1.rf.noarch.rpm
dstat -M topio -d -M topbio

5.找出自己最常用的10條命令及使用次數(或求訪問最多的ip數)
複製程式碼
程式碼如下:
sed -e ‘s/| /\n/g' ~/.bash_history |cut -d ‘ ‘ -f 1 | sort | uniq -c | sort -nr | head

6.日誌中第10個欄位表示連線時間,求平均連線時間
複製程式碼程式碼如下:
cat access_log |grep “connect cbp” |awk ‘BEGIN{sum=0;count=0;}{sum+=$10;count++;}END{printf(“sum=%d,count=%d,avg=%f\n”,sum,count,
sum/count)}'

7.lsof命令

lsof abc.txt 顯示開啟檔案abc.txt的程序
lsof -i :22 知道22埠現在執行什麼程式
lsof -c abc 顯示abc程序現在開啟的檔案
lsof -p 12  看程序號為12的程序打開了哪些檔案

8.rsync命令(要求只同步某天的壓縮檔案,而且遠端目錄保持與本地目錄一致)

複製程式碼程式碼如下:
/usr/bin/rsync -azvR –password-file=/etc/rsync.secrets `find . -name “*$yesterday.gz”  -type f ` [email protected]::logbackup/13.21/

9.把目錄下*.sh檔案改名為*.SH
複製程式碼程式碼如下:
find .  -name “*.sh” | sed  's/\(.*\)\.sh/mv \0 \1.SH/' |sh
find .  -name “*.sh” | sed  's/\(.*\)\.sh/mv & \1.SH/'|sh  (跟上面那個效果一樣)

10.ssh執行遠端的程式,並在本地顯示
複製程式碼程式碼如下:
ssh -n -l zouyunhao 192.168.2.14 “ls -al /home/zouyunhao”

11.shell段註釋
複製程式碼程式碼如下:
:<<'echo hello,world!'

12.檢視網絡卡是否有網線物理連線
複製程式碼程式碼如下:
/sbin/mii-tool

13.檢視linux系統或者mysql錯誤碼錶示的意思,如檢視13錯誤碼錶示的意思:
複製程式碼程式碼如下:
perror  13

14.刪除0位元組檔案
複製程式碼程式碼如下:
find -type f -size 0 -exec rm -rf {} \;

15.1.如何殺掉mysql程序:
複製程式碼程式碼如下:
ps aux|grep mysql|grep -v grep|awk '{print $2}'|xargs kill -9
(從中瞭解到awk的用途)
pgrep mysql |xargs kill -9
killall -TERM mysqld
kill -9 `cat /usr/local/apache2/logs/httpd.pid`
試試查殺程序PID

16.顯示執行3級別開啟的服務:

複製程式碼程式碼如下:
ls /etc/rc3.d/S* |cut -c 15-
(從中瞭解到cut的用途,擷取資料)

17.如何在編寫SHELL顯示多個資訊,用EOF
複製程式碼程式碼如下:
cat << EOF
+--------------------------------------------------------------+
|         === Welcome to Tunoff services ===                   |
+--------------------------------------------------------------+
EOF

18. 取IP地址:
複製程式碼程式碼如下:
ifconfig eth0|sed -n '2p'|awk '{print $2}'|cut -c 6-30
或者:
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-
或者
ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
或者:
ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'
Perl實現獲取IP的方法:
ifconfig -a | perl -ne 'if ( m/^\s*inet (?:addr:)?([\d.]+).*?cast/ ) { print qq($1\n); exit 0; }'

19.記憶體的大小:
複製程式碼程式碼如下:
free -m |grep "Mem" | awk '{print $2}'

20  CPU負載  # cat /proc/loadavg
檢查前三個輸出值是否超過了系統邏輯CPU的4倍。 

21  CPU負載  #mpstat 1 1
檢查%idle是否過低(比如小於5%)

22  記憶體空間  # free
檢查free值是否過低  也可以用 # cat /proc/meminfo

23  swap空間  # free
檢查swap used值是否過高  如果swap used值過高,進一步檢查swap動作是否頻繁:

複製程式碼程式碼如下:
# vmstat 1 5

觀察si和so值是否較大

24  磁碟空間  # df -h

檢查是否有分割槽使用率(Use%)過高(比如超過90%)  如發現某個分割槽空間接近用盡,可以進入該分割槽的掛載點,用以下命令找出佔用空間最多的檔案或目錄:

複製程式碼程式碼如下:
# du -cks * | sort -rn | head -n 10

25  磁碟I/O負載  # iostat -x 1 2
檢查I/O使用率(%util)是否超過100%

26  網路負載  # sar -n DEV
檢查網路流量(rxbyt/s, txbyt/s)是否過高

24  網路錯誤  # netstat -i
檢查是否有網路錯誤(drop fifo colls carrier)  也可以用命令:# cat /proc/net/dev

25 網路連線數目  # netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n

26  程序總數  # ps aux | wc -l
檢查程序個數是否正常 (比如超過250)

27  可執行程序數目  # vmwtat 1 5
   列給出的是可執行程序的數目,檢查其是否超過系統邏輯CPU的4倍

28  程序  # top -id 1
觀察是否有異常程序出現

29  網路狀態  檢查DNS, 閘道器等是否可以正常連通

30  使用者  # who | wc -l
檢查登入使用者是否過多 (比如超過50個)  也可以用命令:# uptime

31  系統日誌  # cat /var/log/rflogview/*errors
檢查是否有異常錯誤記錄  也可以搜尋一些異常關鍵字,例如:

複製程式碼程式碼如下:
# grep -i error /var/log/messages
# grep -i fail /var/log/messages
# egrep -i 'error|warn' /var/log/messages 檢視系統異常

32  核心日誌  # dmesg
檢查是否有異常錯誤記錄

34  開啟檔案數目  # lsof | wc -l
檢查開啟檔案總數是否過多

35  日誌  # logwatch ?print  配置/etc/log.d/logwatch.conf,將 Mailto 設定為自己的email 地址,啟動mail服務 (sendmail或者postfix),這樣就可以每天收到日誌報告了。
預設logwatch只報告昨天的日誌,可以用# logwatch ?print ?range all 獲得所有的日誌分析結果。
可以用# logwatch ?print ?detail high 獲得更具體的日誌分析結果(而不僅僅是出錯日誌)。

36.殺掉80埠相關的程序

複製程式碼程式碼如下:
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh

37.清除僵死程序。
複製程式碼程式碼如下:
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9

38.tcpdump 抓包 ,用來防止80埠被人攻擊時可以分析資料
複製程式碼程式碼如下:
# tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts

39.然後檢查IP的重複數 並從小到大排序 注意 "-t\ +0"  中間是兩個空格
複製程式碼程式碼如下:
# less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0

40.檢視有多少個活動的php-cgi程序
複製程式碼程式碼如下:
netstat -anp | grep php-cgi | grep ^tcp | wc -l

41.利用iptables對應簡單攻擊
複製程式碼程式碼如下:
netstat -an | grep -v LISTEN | awk ‘{print $5}' |grep -v 127.0.0.1|grep -v 本機ip|sed  “s/::ffff://g”|awk ‘BEGIN { FS=”:” } { Num[$1]++ } END { for(i in Num) if(Num>8) { print i} }' |grep ‘[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'|  xargs -i[] iptables -I INPUT -s [] -j DROP

Num>8部分設定值為閥值,這條句子會自動將netstat -an 中查到的來自同一IP的超過一定量的連線的列入禁止範圍。   基中本機ip改成你的伺服器的ip地址

42. 怎樣知道某個程序在哪個CPU上執行?

複製程式碼程式碼如下:
# ps -eo pid,args,psr

43. 統計var目錄下檔案以M為大小,以列表形式列出來。
複製程式碼程式碼如下:
find /var -type f | xargs ls -s | sort -rn | awk '{size=$1/1024; printf("%dMb %s\n", size,$2);}' | head

查詢var目錄下檔案大於100M的檔案,並統計檔案的個數
複製程式碼程式碼如下:
find /var -size +100M -type f | tee file_list | wc -l

44. sed 查詢並替換內容
複製程式碼程式碼如下:
sed -i "s/varnish/LTCache/g"   `grep "Via" -rl /usr/local/src/varnish-2.0.4`

sed -i "s/X-Varnish/X-LTCache/g"     `grep "X-Varnish" -rl /usr/local/src/varnish-2.0.4`


45. 統計目錄下檔案的大小(按M列印顯示)
複製程式碼程式碼如下:
du $1 --max-depth=1 | sort -n|awk '{printf "%7.2fM ----> %s\n",$1/1024,$2}'|sed 's:/.*/\([^/]\{1,\}\)$:\1:g'

46.關於CND實施幾個相關的統計

  統計一個目錄中的目錄個數
 

複製程式碼程式碼如下:
   ls -l | awk '/^d/' | wc -l
  
  統計一個目錄中的檔案個數
  複製程式碼程式碼如下:
   ls -l | awk '/^-/' | wc -l
  
  統計一個目錄中的全部檔案數
  複製程式碼程式碼如下:
   find ./ -type f -print | wc -l
  
  統計一個目錄中的全部子目錄數
  複製程式碼程式碼如下:
   find ./ -type d -print | wc -l
  
 統計某類檔案的大小:
  複製程式碼程式碼如下:
  find ./ -name "*.jpg" -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
 
47. 去掉第一列(如行號程式碼)
複製程式碼程式碼如下:
awk '{for(i=2;i<=NF;i++) if(i!=NF){printf $i" "}else{print $i} }' list

48.檢視PHP-CGI佔用的記憶體總數:
複製程式碼程式碼如下:
total=0; for i in `ps -C php-cgi -o rss=`; do total=$(($total+$i)); done; echo "PHP-CGI Memory usage: $total kb"

49檢視當前有哪些程序;檢視程序開啟的檔案: 
複製程式碼程式碼如下:
ps -A ;lsof -p PID

50.統計每個單詞出現的頻率,並排序
複製程式碼程式碼如下:
awk '{arr[$1]+=1 }END{for(i in arr){print arr"\t"i}}' 檔名 | sort -r

51.列出當前資料夾目錄大小,以G,M,K顯示。

複製程式碼程式碼如下:
du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf"%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"):$1>=2**10? ($1/2**10, "K"): ($1, "")}e'

shaw答案 :du -hs $(du -sk ./`ls -F |grep /` |sort -nr |awk '{print $NF}')
也可 以實現,不過不是特別完美。但好記。

52.清空linux buffer cache

複製程式碼程式碼如下:
sync && echo 3 > /proc/sys/vm/drop_caches

53.將當前目錄檔名全部轉換成小寫
複製程式碼程式碼如下:
for i in *; do mv "$i" "$(echo $i|tr A-Z a-z)"; done

53.消除vim中的^M的幾種方法

1)dos2uninx filename 
2)sed -e 's/^M//' filename
3)vim中 :s/^M//gc
4)col -bx < dosfile > newfile
5)tr -s "\r\n" "\n" < file > newfile

54. 清除所有arp快取

複製程式碼程式碼如下:
arp -n|awk '/^[1-9]/ {print "arp -d "$1}'|sh

55. 繫結已知機器的arp地址
複製程式碼程式碼如下:
cat /proc/net/arp | awk '{print $1 " " $4}' |sort -t. -n +3 -4 > /etc/ethers

perl的
複製程式碼程式碼如下:
perl -ne 'm/^([^#][^\s=]+)\s*(=.*|)/ && printf("%-35s%s\n", $1, $2)' /etc/my.cnf

相關推薦

收集55Linux系統管理常用一些shell命令

1.顯示消耗記憶體/CPU最多的10個程序 複製程式碼程式碼如下: ps aux | sort -nk +4 | tail ps aux | sort -nk +3 | tail 2.檢視程序 按記憶體從大到小排列 複製程式

分享幾AD管理常用的PowerShell命令

1、 查詢AD中,預設的密碼策略 如果接手一個新的AD環境,需要了解其密碼策略如果,或是你忘了你所在組織AD的密碼策略,我們一會去組策略管理控制檯去檢視,但有了PowerShell,會變得很簡單,只需一個CMDLET: Get-ADDefaultDomainPass

memory management — 物理內存如何一步加入到linux系統管理

ESS 物理 視頻 系統管 pro -o 內核 RoCE mar memory management — 物理內存如何一步加入到linux系統管理中的 註意下圖 物理內存是如何加入到linux buddy夥伴子系統中的: 更詳細的內容請參見我的視頻課程:《深入linux內

Linux系統下python程式碼執行shell命令的方法

方法一:os.popen #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 使用 mkdir 命令 a = 'ls' b = os.popen(a,'w',1) print b 方法二:os.system #!/

Linux系統管理和維護常用命令

linuxLinux系統管理和維護常用命令Linux系統管理和維護常用命令ls 命令功能說明ls 命令顯示指定工作目錄下的內容,列出工作目錄所包含的文件及子目錄。語法結構:ls [選項] [路徑或文件]ls 選項及說明-a 顯示指定目錄下的所有文件以及子目錄,包含隱藏文件-d 只顯示目錄列表,不顯示文件-

Linux系統管理初步(二)io、free、ps、netstat命令 編輯

sha 系統 工具 可能 工作 ued uri per str 10.6 監控io性能10.7 free命令10.8 ps命令10.9 查看網絡狀態10.10 linux下抓包 一、iostat與iotop命令 iostat命令與iotop,命令能夠看出系統磁盤的工作情況,

Linux系統管理初步(三) Linux網絡管理(一)(編輯

中斷 網絡 lin 命令 連接 nag shell sha 系統管理 Linux網絡管理(一) 一、ifconfig命令ifconfig命令可以顯示網卡及ip參數,在centos6中是比較重要的命令。 使用示例:1、網卡停止與網卡啟動 ifdown (網卡名)ifup

Linux系統管理初步(四)Linux系統的防火墻-netfilter 編輯

security 計數器 save ade 接收 emctl fec 運維 需要 一、Linux的防火墻 防火墻是日常應用中一個重要的維護內容,從防火墻開始我們才真正接觸生產環境,網絡安全越來越受重視,學好這部分內容是學好運維的重要一步。 一般情況下,桌面級環境中很少有人關

Linux系統管理初步(五)Linux系統的防火墻-firewalld 編輯

from lin proc isa network set http sele 被拒 CentOS7中,系統自帶的netfilter操作程序由iptables變為firewalld。 一、firewalld中的9個zone firewalld中有9個zone,各個zone的

Linux系統管理初步(七)系統服務管理、chkconfig與systemd 編輯

方便 sub text log 過去時 需要 cbe 理解 term Linux系統本身包含了很多服務,CentOS6之前系統的服務用SysV控制,CentOS7改為systemd控制 一、chkconfig服務管理機制 簡而言之,chkconfig就是CentOS6以前用

linux使用者管理重要的使用者配置檔案

[[email protected] ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin

Linux-系統管理-常用命令(上)

以下介紹常用的幾個系統分析的命令以及常用方法: vmstat vmstat 是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,很多Linux發行版本都預設安裝了此命令工具。當然,不止對虛擬記憶體有統計,還可以利用vmst

linux系統管理

網絡管理 linux 基礎知識 Linux系統管理1.存儲管理傳統的磁盤分區RAID技術,軟RAID的實現LVM文件系統管理ext,xfs,btrfs(了解)2.程序包管理rpm、yum、dnf3.sed、gawk4.進程管理5.網絡管理網絡基礎知識(Cisco CCNA+CCNP)網絡屬性管理網

linux系統管理之存儲管理

加利福尼亞 software university linux 控制器 存儲管理:這裏我們要學介紹兩種磁盤陣列:磁盤陣列是由很多價格較便宜的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果提升整個磁盤系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。一

linux系統管理--top命令

stopped 谷歌百度 inux 正常 為我 cache 其中 休眠 運行 這些日子,運維公司三臺服務器,一個小夥伴貌似對top命令不太感冒,我告訴他去百度(不懂谷歌百度的程序員不是好廚師),然後突然發現也許我自己該整理一下相關的東西了 top命令是Linux下常用的

Linux系統管理第四周作業【Linux微職位】

filesystem raid swap 1、創建一個10G分區,並格式為ext4文件系統;(1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;創建分區[[email protected]/* */ Desktop]# fdis

Linux系統管理(一)

linux redhat 服務器 系統管理 點擊下載:Linux系統管理(一)本文出自 “飛奔的魚兒” 博客,請務必保留此出處http://feiyuer.blog.51cto.com/6967044/1931977Linux系統管理(一)

Linux系統管理(二)(網絡服務)

網絡服務 linux redhat 紅帽 點擊下載:Linux系統管理(二)(網絡服務)本文出自 “飛奔的魚兒” 博客,請務必保留此出處http://feiyuer.blog.51cto.com/6967044/1931978Linux系統管理(二)(網絡服務)

Linux系統管理第七周作業【Linux微職位】

bash腳本編程1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;[[email protected]/* */ ~]# vim usershell.sh #!/bin/bash

linux系統管理之進程管理

進程管理進程管理的操作命令為了管理這些linux進程,用戶應該能夠: 查看所有運行中的進程 查看進程消耗資源 定位個別進程並且對其執行指定操作 改變進程的優先級 殺死指定進程 限制進程可用的系統資源等linux提供了許多命令來讓用戶來高效掌控上述的操作;1.pstree -