服務器端測試常用linux命令

首先使用man命令或—help參數可以看所有命令的幫助,請大家善加利用

例如:

#man cd

#cp --help

另外linux > 表示標準輸出重定向到其他地方例如文件:

# ll >a.txt     ll命令應該在屏幕顯示的信息寫入文件a.txt

linux  | 表示管道,管道前的命令輸出作爲管道後的命令輸入

#grep “abc” a.txt | wc –l        a.txt中查找含abc字符串的行,通過管道給wc 命令計數。

一.常用系統命令

1 Cd   進入目錄  #爲系統提示符

#cd /ITC/test/   絕對路徑

#cd dns            相對路徑

#cd ../dns         相對路徑

#cd ~/websearch  ~可以替代該用戶的home目錄,比如一個用戶的home目錄爲/ITC/aaa ~/websearch等於/ITC/aaa/websearch

2. pwd 查看當前所在路徑

3. Rm 刪除文件或目錄 

#rm a.txt        刪除一個文件

#rm dns –r   -r參數表示刪除目錄

#rm * -f     -f參數表示不提示是否確定,直接刪除(不包括路徑)

#rm * -rf     全部刪除包括路徑,不提示是否確定

4. Cp 拷貝

#cp a.txt  ../dns/                a.txt拷到../dns/下,不改名

#cp a.txt b.txt             a.txt拷貝成b.txt

#cp –r dns dnsbak         拷貝目錄dnsdnsbak

5. Mv 移動

#mv a.txt b.txt  a.txt改名爲b.txt

#mv dns dnsbak 目錄dns改名爲dnsbak

#mv a.txt b.txt c.txt dns/  3個文件移動到dns目錄,源文件移動後刪除。

6. Scp 機器間遠程

#scp a.txt  [email protected]:/usr/local

當前路徑的a.txt拷貝到48機器的指定路徑。Root爲拷貝後目標文件的所屬用戶,可以是其他用戶。拷貝時需要輸入48機器的root密碼

#scp  [email protected]:/usr/local/a.txt  /ITC/test/

48上指定目錄下的a.txt拷到本機/ITC/test/,從48機器拷貝文件時使用sonic用戶登錄,需要輸入密碼

#scp –r  dns  [email protected]:/root/ 

拷貝目錄dns到別的機器上

7. Rsync 機器間拷貝

#rsync a.txt 192.168.1.48::root/usr/local/ --progress  拷貝a.txt48上,--progress爲顯示進度。

#rsync –r dns 192.168.1.48:root/usr/local/ 拷貝目錄到別的機器上。

Rsync只能用root權限。而且本地和遠程都需要啓動rsync-demon程序。

8. Df  查看當前機器所有磁盤空間

#df      查看磁盤空間並以K爲單位顯示

#df  -h    不以K爲單位顯示,自動選擇最合適的單位顯示如M G

9.Du 查看目錄佔用磁盤空間

#du –max-depth=1 /ITC     查看邏輯分區/ITC上各目錄的空間佔用情況,設定只顯示一層路徑。

10.Ls 顯示當前路徑下文件和目錄

#ls –al   -l用詳細格式顯示,-a顯示隱藏文件

#ls /ITC/test/ 指定顯示路徑

 

  1. Su 切換用戶

#su    切換爲root用戶

#su -   切換爲root用戶並使用root用戶的環境配置

#su – test 切換爲test用戶並使用test用戶的環境配置

12.Exit 從切換到的用戶環境退出(回到su之前的用戶)

13.Ssh 登錄到別的機器

#ssh [email protected] 從當前機器登錄到48機器,可以使用其他用戶

  1. Ifconfig查看當前機器的網絡狀況(主要用於查看內部或外部IP
  1. Export 顯示和設置環境變量

#export  顯示當前環境信息

#export  WEBSEARCH_CODE_ROOT=/ITC/test/ 設置環境變量

  1. Rz   從本機向secucrt連接的服務器傳文件(secucrt客戶端可用)
  2. Sz   從服務器向本機傳文件

#sz  a.txt    a.txt傳到本機,默認存放位置爲secrcrt安裝路徑下的download目錄。

  1. Sh  運行腳本

#sh start.sh

  1. Chmod 改變文件權限

#chmod 755 start.sh  start.sh的擁有用戶讀寫執行權限,給組用戶和其他用戶讀執行權限。

  1. Chown 改變文件或目錄的用戶和組權限

#chown  test:root  a.txt   a.txt的用戶爲test,組爲root

#chown  -R test:test /ITC/test/  目錄下所有文家和子目錄的用戶和組都是test

  1. More  顯示文件,滿一屏暫停,空格繼續顯示下一屏,q退出

#more  filename

  1. Cat 顯示文件,不暫停  -n 顯示行數

#cat –n filename

  1. Head 顯示文件開頭10行,加-n 100 顯示開頭100

#head –n 100 filename

  1. Tail 顯示文件尾 -f 持續顯示(文件還在增長)

#tail –f filename

#tail –n 100 filename  顯示文件結尾100

  1. Vi 編輯文件

#vi filename

vi編譯器常用命令:

I    進入編輯狀態,屏幕左下顯示 –INSERT—

:/abc              在文章中查找abc 找到後按N到下一次出現的地方 shift-N到上一次出現的地方

:%s#被替換串#替換串#g           將文章中所有被替換串替換爲替換串。#g參數表示如果一行出現多次被替換串都有替換,否則只替換每行第一次出現的

:50      跳轉到文章第50

shift-g   到文章末尾

gg       到文章開頭

 

dd         剪切光標所在行

50dd       從光標所在行向後剪切50

yy           拷貝光標所在行

50yy       拷貝光標所在行之後50行(含所在行)

p            粘貼

以上剪切粘貼使用的剪貼板爲vi自己維護的,與windows的無關,只在vi中生效。即使用yy拷貝的行只能在vi中用p粘貼,無法用ctrl-v粘貼。

 

存盤

q   退出(如果之前對文件有修改且未保存,則無法用q退出,必須用q!退出)

wq  存盤退出

wq!   強行存盤退出(適用於對只讀文件的修改)

 

  1. Ln 創建鏈接命令

#ln –s /ITC/search/ /search   創建軟連接,訪問/ITC/search/目錄等同於訪問/search目錄。

 

  1. Nslookup host命令 查看指定域名的IP

#nslookup www.sohu.com

#host http://www.sohu.com

 

  1. Curl

#curl –v http://www.sohu.com/

#curl –v –A “abcde” http://www.sohu.com/         //使用abced作爲agent

 

 

  1. Wget 抓取網頁保存在當前目錄

#wget http://www.sohu.com/

#wget –I inputfile     //依次wget inputfile中的url

#wget –user-agent=AGENT  http://www.sohu.com/   //使用IEagent代替wget agent 抓取。

 

 

  1. telnet 網絡訪問

#telnet www.sohu.com 80  訪問www.sohu.com80端口

 

  1. Cut 切割文件中某列

#cut –f1 a.txt >b.txt a.txt中第一列(\t分隔的列)寫入b.txt

#cut –d” “ –f”1,3,5” a.txt >b.txt     -d參數表示用雙引號中的字符代替\t作爲域分隔符,-f參數後的引號內可以寫多個列。

 

 

  1. Uniq 顯示文件中重複(或唯一)的行,需要注意要uniq的文件必須先用sort排序

#uniq filename              顯示該文件所有行,但是重複的行只顯示一次。

#uniq –c filename     功能同上,並且顯示每行重複的次數

#uniq –u  filename         只顯示文件中唯一的行(不重複的行)

#uniq –d filename         只顯示文件中出現重複的行

#uniq –f1 filename        忽略第一列,只對第二列及其之後的內容進行uniq

 

  1. Sort 文件排序 -n參數對行使用自然數大小排序(否則按ascii碼排序)

#sort –n a.txt

#sort –n –v –k2 filename1 filename2    將兩個文件混合排序,對第二列進行自然數排序,按從大到小順序顯示

 

/做分隔,從第3個域到第3個域的部分進行排序,-u是排重。

sort -t/ -k3,3 -u filename|more

可以從一批url中,按站點,每個站點得到一條。

 

 

  1. Diff 比較兩個文件的不同之處

#diff a.txt b.txt  比較兩個文件不同之處

 

  1. Grep 過濾查找

#grep “aaa” a.txt    查找a.txt中含有”aaa”的行並顯示

#grep –v “aaa” a.txt  查找a.txt中不含”aaa”的行並顯示

 

  1. Wc 計算數量

#wc a.txt  計算a.txt中的行數,字符數等

#wc –l a.txt 只計算行數

 

 

  1. Tar 壓縮解壓縮命令

#tar cvf archiev.tar  dns/    dns目錄壓縮爲archiev.tar文件

#tar zxvf archiev.tar.gz 解壓縮archiev.tar.gz文件

 

37Kill  殺死進程命令

#kill 11333 殺死進程號爲11333的進程(無權限的進程無法殺掉)進程號可以通過ps命令得到

#kill –9 11333 強行殺死進程號爲11333的進程(無權限的進程無法殺掉)

#killall dnsserver 殺死所有進程名爲dnsserver的進程(無權限的進程無法殺掉)

#killall –9 dnsserver 強行殺死所有進程名爲dnsserver的進程(無權限的進程無法殺掉)

 

  1. source

修改用戶的配置文件.bash_profile .bashrc等文件後,如果不想中斷連接重新ssh登錄,就需要使用source命令使剛改的內容生效:

#source .bash_profile

 

  1. Ldconfig(只有root能用)

安裝某些軟件後(如ACE BDB)需要修改/etc/ld.so.conf文件,加入程序使用的動態鏈接庫位置信息。修改文件後使用ldconfig命令使修改生效。

#ldconfig –v

 

  1. Pstree

查看當前進程啓動情況,子進程數等,並可查看進程啓動的命令行

#pstree -a

 

  1. Unix2dos  dos2unix

Dosunix格式文本轉換。將dos的換行(\r\n)unix的換行(\n)進行轉換。

#unix2dos a.txt

#dos2unix a.txt

 

  1. Useradd (adduser)  新增用戶

常用方法:

#useradd  abc         新增用戶abc,默認home目錄爲/home/abc/

#adduser  abc         同上

#useradd  abc –d /ITC/abc/     新增用戶abc,指定home目錄/ITC/abc/ (沒有的話會自己建立)

 

 

  1. Userdel 刪除用戶

#userdel abc    刪除用戶abc。(用戶創建的目錄和文件並不會刪除)

#userdel –r abc 刪除用戶abc,用戶home目錄下所有文件自動刪除,/etc/passwd group shadow文件中該用戶信息刪除。

 

 

  1. Passwd修改用戶密碼

#passwd  username

不輸入username時是修改root密碼,謹慎!

 

  1. 計算md5值的命令 md5sum

#md5sum filename

 

  1. dmesg查看系統信息

#dmesg

 

  1. Rename 對批量文件改名

#rename abc 123 *abc* 將所有文件名含abc的文件,將其中的字串abc改成123

例如: sssabca.com -> sss123a.com

          Sss.abc -> sss.123

 

二.常用性能監控命令

1.查看進程: ps

參數:

-A all processes                    

-N negate selection                 

-a all w/ tty except session leaders

-d all except session leaders       

-e all processes

-u by effective user ID                     

T  all processes on this terminal   

a  all w/ tty, including other users

g  all, even group leaders!         

r  only running processes           

x  processes w/o controlling ttys   

m  show threads

 

常用方法: ps -ax 顯示所有進程       ps -ax|grep processname 可以查看該進程的狀態

          ps -aux      顯示所有進程和進程啓動用戶 ps -aux|grep user 可以查看該用戶的啓動進程

2.查看端口情況:netstat

參數:

-r, --route              display routing table

-i, --interfaces         display interface table

-g, --groups             display multicast group memberships

-s, --statistics         display networking statistics (like SNMP)

-M, --masquerade         display masqueraded connections

-v, --verbose            be verbose

-n, --numeric            don't resolve names

--numeric-hosts          don't resolve host names

--numeric-ports          don't resolve port names

--numeric-users          don't resolve user names

-N, --symbolic           resolve hardware names

-e, --extend             display other/more information

-p, --programs           display PID/Program name for sockets

-c, --continuous         continuous listing

-l, --listening          display listening server sockets

-a, --all, --listening   display all sockets (default: connected)

 

常用方法: netstat -nap|grep 7777  查看指定端口7777的情況

          netstat -nap 5|grep 7777   查看指定端口7777的情況,每5秒自動刷新

 

[@65.159 monitor_log]# netstat -nap|grep 1073

接收緩衝 發送緩衝
tcp 0 0 0.0.0.0:58001 0.0.0.0:* LISTEN 1073/webcached
tcp 223 0 10.10.65.159:58001 10.10.63.106:55887 ESTABLISHED 1073/webcached
tcp 0 0 10.10.65.159:58001 10.10.63.106:55886 ESTABLISHED 1073/webcached
tcp 9120 0 10.10.65.159:46514 10.10.99.2:38598 ESTABLISHED 1073/webcached
tcp 0 0 10.10.65.159:46512 10.10.99.2:38598 ESTABLISHED 1073/webcached
tcp 0 0 10.10.65.159:46513 10.10.99.2:38598 ESTABLISHED 1073/webcached
tcp 0 0 10.10.65.159:46511 10.10.99.2:38598 ESTABLISHED 1073/webcached
tcp 0 210 10.10.65.159:11459 10.10.97.22:19018 ESTABLISHED 1073/webcached
tcp 0 0 10.10.65.159:11458 10.10.97.22:19018 ESTABLISHED 1073/webcached

 

webcached進程監聽58001端口,同時去連接query99.2:38598 連接summary97.22:19018

63.106機器有1個壓力程序,開了2個連接,向58001發送請求。

 

tcp 223 0 10.10.65.159:58001 10.10.63.106:55887 ESTABLISHED 1073/webcached

這一行表示,本機58001端口的tcp接收緩衝區有223字節的數據,說明cache處理不夠及時,有待處理的請求。

 

tcp 9120 0 10.10.65.159:46514 10.10.99.2:38598 ESTABLISHED 1073/webcached

這一行表示,46514端口(cache用該端口向query發請求和收返回)的tcp接收緩衝區有9120字節的數據,說明cache沒有及時將query返回的數據從緩衝區裏拿出來。

 

tcp 0 210 10.10.65.159:11459 10.10.97.22:19018 ESTABLISHED 1073/webcached

這一行表示,11459端口(cache用該端口向summary發請求和收返回)的tcp發送緩衝區有210字節的數據,說明summary機器的接收緩衝區已經滿了,cache的請求已經發不過去,都堆積在自己的發送緩衝區了。

 

3.查看進程佔用系統資源:top

執行top後,"h"進入幫助。

Shift-m 用內存佔用大小排序

 

4.查看系統資源狀況:vmstat

常用方法:vmstat delay count        delay=延遲 count=次數

         vmstat 5 100                 5秒打印一次結果,共100次(可以省略次數,一直打印)

 

5.查看網卡帶寬資源佔用情況:sar    iptraf

常用方法:

sar -n DEV  1 100 每隔1秒刷新一次結果,打印100

結果說明:

 

   時間          設備  接收包/s  發送包/s 接收字節/s 發送字節/s

 

135649?          IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s    txcmp/s     rxmcst/s

135650?          lo     0.00    0.00    0.00     0.00    0.00      0.00      0.00

135650?          eth0    1.00    1.00    64.00    446.00    0.00      0.00      0.00

135650?          eth1    2.00    0.00     128.00     0.00    0.00      0.00      0.00

Average:         lo     0.00    0.00     0.00     0.00     0.00      0.00      0.00

Average:            eth0   19.81    9.78     29507.01   646.56    0.00      0.00      0.01

Average:            eth1    37.11    0.20     2414.21    20.13    0.00      0.00      0.01

 

可以使用iptraf查看各網卡流量。

Yum install iptraf 可以安裝

6.iostat 磁盤io狀態查看

常用方法:

iostat -x 5 每隔5秒刷新一次

 

其他命令:

  1. Ipcs 檢查sharemem.id 檢查共享內存編號
  2. Ipcrm 刪除共享內存

Ipcrm –M key

 

  1. Sysctl 查看並修改系統參數

#sysctl –a 顯示所有系統參數

#sysctl –w 設置參數值

 

  1. Od  查看2進制文件

#od –Ax –tx binaryfilename  16進制顯示2進制文件內容

 

 

  1. Watch 定期執行一個命令顯示結果

#watch –n1 tail err.log –n 1

每秒執行一次tail err.log –n 1 命令

 

三.Shell心得(heart get

1.打印記錄的某一列。

經常會用到某文件的某一列,用awk命令可以輕鬆實現。

$ awk ‘{print $[列數]}’ [文件名]

2.將文件加入一列相同的值。

$ awk ‘{print “%s[分隔符][],$1}’ [文件名]

3.將兩個不同文件的兩列合併,用paste命令。

$ paste [文件1] [文件2]

4.匹配:

類似於

$grep [匹配內容] [文件]

awk實現:

$awk ‘{if ([列數]~/[匹配內容]/) pirnt $0}’ [文件名]

5.替換

類似於vi [文件] :%s#[欲替換]#[替換爲]#g

awk實現:

$awk ‘gsub (/[匹配內容]/ ,“[替換模式]) {print $0} ‘ [文件名]

這樣就可以不vi 一個文件,實現替換,在寫shell時十分有用。

也可以替換分隔符,但是要注意轉義:

如文件以“|”爲分隔符,我們想替換成TAB。則:

$awk ‘gsub /\|/ ,”\t” {print $0}’ [文件名]

 

6.亂序文件

rev filename|sort|rev >temp  file每行反向輸出,再排序,再反向回來。實際就是按每行最後一個字母排序。但是不能對雙字節(如漢字)文本做

 

  1. Sed

替換

Sed –e ‘s/被替換串/替換串’ file

 

Sed –e ‘s/^../&ok/’ file          #將所有行開頭兩個字符之後插入ok &可以代表被匹配上的串

       Sed –e ‘s/$/abc/’ file        #在所有行最後加上abc

 

 

       修改文本文件

       i\     在指定行前插入

       a\     在指定行後插入

       d     刪除指定行

 

 

sed ‘3i\sss’ tmp      在第3行之前插入sss

       sed ‘3,$i\sss’ tmp   在第3行到最後一行所有行之前都插入sss

       sed ‘/abc/a\sss’ tmp        在匹配上abc的行後都插入sss

 

 

7.split

按行分割文件

split –10000 log xlog     log文件按每10000行分出一個小文件,小文件前綴xlog,後綴是aaab……累加

split –10000 –d log xlog       增加-d參數,文件後綴變成數字

 

8Iptables

iptables -A INPUT -s 200.200.200.1 -j DROP     將規則“丟棄所有來自指定IP的包”放入接收鏈表(不加-p 參數,默認將tcp udp icmp 都禁止)。

iptables -D INPUT -s 200.200.200.1 -j DROP   把上述規則從鏈表中取消。

 

iptables -A OUTPUT -d 200.200.200.1 -j DROP

將本機向指定ip發出的包都drop

 

iptables --list 顯示所有規則。

9Date

tail queryServer.tiny.log.wf -n20000 | grep `date "-d 1 second ago" "+%H:%M:%S"` | grep QueryItem –c

 

date "-d 1 second ago" "+%H:%M:%S"              顯示當前時間前一秒。

 

date +%s        seconds since 1970-01-01 00:00:00 UTC

 

10.tcpdump

tcpdump -Xx -s 4096 dst port 80   查看發給80端口的tcp包內容

tcpdump udp -Xx -s 4096 dst port 12345     查看發給12345端口的udp包內容

tcpdump -Xx -s 4096 src port 1111              查看從1111端口發出去的tcp包內容

 

11. 查找一個小文件中的url是否存在大文件中的shell

在文件中的shell:

while read URL

do

grep $URL std.log

done < $1;

 

不在文件中

while read URL

do

TEMP=`grep $URL std.log`

if [ "$TEMP" = "" ] ; then

echo $URL

fi

done < $1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章