分享平時工作中那些給力的shell命令
分享平時工作中那些給力的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”。
-------------------------------------
(不斷更新中...)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 博主日常工作中使用的shell指令碼分享指令碼
- 工作中那些有用的工具
- git shell常用命令分享Git
- 那些前端工作中遇到的坑(01)前端
- Oracle 平時常用的命令!Oracle
- 工作中常用的git命令Git
- 如何在Linux上分享你shell命令的輸出Linux
- 工作中常用的運維命令運維
- 工作中遇到的Linux命令Linux
- Hadoop Shell命令 |HDFS Shell命令| HDFS 命令Hadoop
- 追蹤時間的10個給力應用程式
- 寫給那些IT的新人們
- shell的命令(轉)
- Shell在日常工作中的應用實踐
- 強大好用的shell之shell命令
- Shell命令
- 理解shell的eval命令
- HBASE的SHELL命令操作
- Shell指令碼在Linux運維工作中的地位!指令碼Linux運維
- 【分享】22款給力的HTML5和CSS3幫助工具HTMLCSSS3
- 分享工作中常用的一個Git指令碼Git指令碼
- 分享幾個我工作中封裝的typeScript方法封裝TypeScript
- 什麼是Shell指令碼?Shell指令碼在Linux運維工作中的地位!指令碼Linux運維
- shell-【技術乾貨】工作中編寫shell指令碼實踐指令碼
- 新手必做的高收益自媒體平臺,分享給大家
- Linux shell中的那些小把戲Linux
- Linux shell 中的那些小把戲Linux
- 18 個一線工作中常用 Shell 指令碼指令碼
- 那些年敲過的命令
- Linux Shell程式設計(22)——時間/日期 命令Linux程式設計
- shell命令(一)
- Shell printf 命令
- Shell test 命令
- Hive shell 命令Hive
- HDFS shell命令
- Shell命令列命令列
- hbase shell命令
- 常用shell 命令