服务器端测试常用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

你可能感兴趣的:(linux)