分享平時工作中那些給力的shell命令

fjzcau發表於2015-02-08
分享平時工作中那些給力的shell命令
vcdog:
http://blog.chinaunix.net/space.php?uid=7589639

1.顯示消耗記憶體/CPU最多的10個程式
ps aux | sort -nk +4 | tail
ps aux | sort -nk +3 | tail
——————————————————————————————————————————
2.檢視Apache的併發請求數及其TCP連線狀態
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
——————————————————————————————————————————
3.找出自己最常用的10條命令及使用次數(或求訪問最多的ip數)
sed -e ‘s/| /\n/g’ ~/.bash_history |cut -d ‘ ‘ -f 1 | sort | uniq -c | sort -nr | head
——————————————————————————————————————————
4.日誌中第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)}’
——————————————————————————————————————————
5.lsof命令
lsof abc.txt 顯示開啟檔案abc.txt的程式
lsof -i :22 知道22埠現在執行什麼程式
lsof -c abc 顯示abc程式現在開啟的檔案
lsof -p 12  看程式號為12的程式開啟了哪些檔案
——————————————————————————————————————————
6.殺掉一個程式的所有程式
pkill -9 httpd
killall -9 httpd
注意儘量不用-9,資料庫伺服器上更不能輕易用kill,否則造成重要資料丟失後果將不堪設想。
——————————————————————————————————————————
7.rsync命令(要求只同步某天的壓縮檔案,而且遠端目錄保持與本地目錄一致)
/usr/bin/rsync -azvR –password-file=/etc/rsync.secrets `find . -name “*$yesterday.gz”  -type f ` storage@192.168.2.23::logbackup/13.21/
——————————————————————————————————————————
8.把目錄下*.sh檔案改名為*.SH
find .  -name “*.sh” | sed  ’s/\(.*\)\.sh/mv \0 \1.SH/’ |sh
find .  -name “*.sh” | sed  ’s/\(.*\)\.sh/mv & \1.SH/’|sh  (跟上面那個效果一樣)
——————————————————————————————————————————
9.ssh執行遠端的程式,並在本地顯示
ssh -n -l zouyunhao 192.168.2.14 “ls -al /home/zouyunhao”
——————————————————————————————————————————
10. 直接用命令列修改密碼
echo “zouyunhaoPassword” |passwd –stdin zouyunhao
——————————————————————————————————————————
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remoteServer
——————————————————————————————————————————
12.以http方式共享當前資料夾的檔案
$ python -m SimpleHTTPServer
在瀏覽器訪問即可下載當前目錄的檔案。
——————————————————————————————————————————
13.shell段註釋
:<
——————————————————————————————————————————
14.檢視伺服器序列號
dmidecode |grep “Serial Number”   (檢視機器其他硬體資訊也可用這個命令)
——————————————————————————————————————————
15.檢視網路卡是否有網線物理連線
/sbin/mii-tool
——————————————————————————————————————————
16.檢視linux系統或者mysql錯誤碼錶示的意思,如檢視13錯誤碼錶示的意思:
perror  13
——————————————————————————————————————————
17.關於cpu個數
檢視邏輯cpu個數:cat /proc/cpuinfo | grep “processor” | wc -l
檢視物理cpu個數:cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l
檢視每個物理cpu的核數cores:cat /proc/cpuinfo | grep “cpu cores”
如果所有物理cpu的cores個數加起來小於邏輯cpu的個數,則該cpu使用了超執行緒技術。檢視每個物理cpu中邏輯cpu的個數:cat /proc/cpuinfo | grep “siblings”

——————————————————————————————————————————
18.從格式不規範的日誌中擷取字串
perl  -ne  ’print “$1\n” if  /servletPath=(\S+)/g’  test.log
——————————————————————————————————————————
19.  把所有的檔名含有空格的,把空格去掉
find ./ -type f | while read line;do echo $line|grep -q " " && \mv "$line" $(echo $line|sed 's/ //g');done
------------------------------------------
20.把所有的資料夾的檔名含有空格的,把空格去掉
find ./ -type d -name '*'|while read file; do echo $file|grep -q " " && mv "$file" $(echo $file|tr -d ' '); done

     當檔名的末尾以空格結束時,就不能用命令列來實現,需要使用指令碼:

#!/bin/bash
IFS=$'\n'
find ./ -type f | while read line;do echo $line|grep -q " " && \mv "$line" $(echo $line|sed 's/ //g');done

-------------------------------------------

21.生成隨機字串:

# tr -dc _A-Z-a-z#$%^*-0-9
chgSh^eJ
或者
# mkpasswd -l 8 -d 1 -c 3 -C 2 -s 2
G_ze3Hto

-------------------------------------------

22.linux統計PCI插槽數量:

[root@vcdog ~]# dmidecode |grep -1 PCI
                ISA is supported
                PCI is supported
                PC Card (PCMCIA) is supported
--
System Slot Information
        Designation: PCI Slot J11
        Type: 32-bit PCI
        Current Usage: In Use
--
System Slot Information
        Designation: PCI Slot J12
        Type: 32-bit PCI
        Current Usage: In Use
--
System Slot Information
        Designation: PCI Slot J13
        Type: 32-bit PCI
        Current Usage: In Use
--
System Slot Information
        Designation: PCI Slot J14
        Type: 32-bit PCI
        Current Usage: Available

----------------------------------------


23. nmap探測遠端主機的開放埠及作業系統:
# nmap -A -T4 192.168.1.28     //此處可以為主機名,域名,或主機IP地址
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-12-28 09:46 CST
Interesting ports on bogon (192.168.1.29):
Not shown: 1677 closed ports
PORT    STATE SERVICE      VERSION
135/tcp open  msrpc        Microsoft Windows RPC
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds Microsoft Windows XP microsoft-ds
MAC Address: 70:5A:B6:09:45:FA (Unknown)
Device type: general purpose
Running: Microsoft Windows NT/2K/XP
OS details: Microsoft Widows XP SP2
Service Info: OS: Windows

------------------------------------
24. linux下的檔案去掉^M硬回車的方法:
   
  (1)# cat test.txt |tr -d '^M' >test.new
  (2).# sed -i 's/^M//g' test.txt    
  (3)# dos2unix test.txt           
  (4)在vi中用:%s/^M//g   
注意:這裡的“^M”要使用“CTRL-V CTRL-M”生成,而不是直接鍵入“^M”。

-------------------------------------
(不斷更新中...)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1430671/,如需轉載,請註明出處,否則將追究法律責任。

相關文章