巧解读REJECT和DROPdrop与delete的区别别

Bhttp://leafwf./0103&http://leafwf./3511&http://leafwf./1119&http://leafwf./1011&&
jmeter-察看结果树-响应数据中的中文显示乱码jmeter\bin\jmeter.properties默认编码为:ISO-8859-1# The encoding to be used if none is provided (default ISO-8859-1)#sampleresult.default.encoding=ISO-8859-1根据测试系统修改对应的编码,如为utf-8则增加编码设置为:sampleresult.default.encoding=utf-8修改配置后,要重启jmeter才会生效
这几天在使用jmeter脚本录制工具Badboy录制脚本时有发现录制过程中,会有一些中转链接丢失项目环境:tomcat+javaBadboy版本:BadboyInstaller-2.2.exe场景:点击按钮,href链接到一个地址,该地址会进行是否已登录会员,如果未登录跳转到登录页,如果已登录,返回数据并跳转到另一个处理页;即按钮的href链接为一个中转链接;Badboy在录制过程中,有看到获取到该中转链接,但当录制视图窗口跳转到下一个页面时,该中转链接会被替换成跳转后的链接,即中转链接丢失;这时导入到jmeter中,因中转链接丢失,成功登录后,无法得到正常返回的数据,并正常跳转到另一个处理页;目前暂时通过firebug捕抓链接及请求数据,手动增加到jmeter步骤中;因对Badboy及jmeter不熟,也未查到上述问题的相关资料,如有知情者,烦请告知,谢谢哈~!自己做个记录先!
平时我们导入数据或表结构的时候,我们一般用两种:1、登录mysql,再用source这种,有出错会提示,并继续下一个2、mysql & a.sql这种,有出错提示后,直接中断退出如果在脚本中导入,一般是不会用第一种操作这时,如果想要第一种的提示后继续的效果,可以使用:mysql -f &a.sql即增加-f参数,表示当遇到sql错误时继续& -f, --force&&&&&&&& Continue even if we get an sql error.
查看文件编码file -i filename递归转换(包括子文件夹)find default -type d -exec mkdir -p utf/{} \;find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下。注意:如果原来就是utf-8编码,使用iconv -f GBK -t UTF-8命令转换后,会出现乱码,或截断等各种问题;一定要保证原文件是不是utf-8编码;使用如下命令把文件编码先查出来:find default -type f -exec file -i {} \; & /tmp/a查询是否存在已经是utf-8编码的文件:grep "charset=utf-8" /tmp/aiconv有如下选项可用:输入/输出格式规范:-f, --from-code=名称 原始文本编码-t, --to-code=名称 输出编码信息:-l, --list 列举所有已知的字符集输出控制:-c 从输出中忽略无效的字符-o, --output=FILE 输出文件-s, --silent 关闭警告--verbose 打印进度信息
转自:http://blog.itpub.net//viewspace-1268479/
实验参数:主库参数:binlog-do-db从库参数:replicate-do-db和replicate-wild-do-table分六个情况进行实验,并观察日志变更情况。实验一:主库、从库均不设置参数实验二:主库不设置参数、从库设置replicate-do-db实验三:主库不设置参数、从库设置replicate-wild-do-table实验四:主库不设置参数、从库设置replicate-do-db和replicate-wild-do-table实验五:主库设置参数binlog-do-db、从库不设置参数实验六:主库设置参数binlog-do-db、从库设置replicate-do-db实验七:主库设置参数binlog-do-db、从库设置replicate-wild-do-table实验八:主库设置参数binlog-do-db、从库设置replicate-do-db和replicate-wild-do-table实验过程见原贴:http://blog.itpub.net//viewspace-1268479/总结:1、主库、从库有没有任何参数,默认库操作都是可以同步的。2、主库未设置binlog-do-db的情况下:&&&&a.从库设置replicate-do-db,跨库操作不同步&&&&b.从库设置replicate-wild-do-table,跨库操作同步&&&&c.从库设置replicate-do-db和replicate-wild-do-table,跨库操作不同步&&&&d.跨库操作后binlog会有变化3、主库设置binlog-do-db的情况下:&&&&a.从库设置replicate-do-db,跨库操作不同步&&&&b.从库设置replicate-wild-do-table,跨库操作不同步&&&&c.从库设置replicate-do-db和replicate-wild-do-table,跨库操作不同步&&&&d.跨库操作后binlog没有变化4、只有在主库、从库不设置参数的情况下,主库新建库,从库才可以同步。
& & 其它进制转为10进制& & 八进制转十进制:& & [chengmo@centos5 ~]$ ((num=0123));& & [chengmo@centos5 ~]$ echo $& & 83& & [chengmo@centos5 ~]$ ((num=8#123));& & [chengmo@centos5 ~]$ echo $ & && & 83& & ((表达式)),(())里面可以是任意数据表达式。如果前面加入:”$”可以读取计算结果。& & 十六进制转十进制:& & [chengmo@centos5 ~]$ ((num=0xff));&& & [chengmo@centos5 ~]$ echo $ & && & 255& & [chengmo@centos5 ~]$ ((num=16#ff));& & [chengmo@centos5 ~]$ echo $ & && & 255& & base-32转十进制:& & [chengmo@centos5 ~]$ ((num=32#ffff));& & [chengmo@centos5 ~]$ echo $ & & && & 507375& & base64转十进制:& & [chengmo@centos5 ~]$ ((num=64#abc_));&& & [chengmo@centos5 ~]$ echo $ & & &&& & 2667327& & 二进制转十进制& & [chengmo@centos5 ~]$ ((num=2#)); && & [chengmo@centos5 ~]$ echo $& & 255&& & 十进制转为其它进制& & 十进制转八进制& & 这里使用到:bc外部命令完成。bc命令格式转换为:echo "obase=进制;值"|bc& & [chengmo@centos5 ~]$ echo "obase=8;"|bc& & 4553207& & 二进制,十六进制,base64转换为 十进制也相同方法。& & [chengmo@centos5 ~]$ echo "obase=64;123456"|bc && & 30 09 00&shell,内置各种进制表示方法非常简单。记得base#number 即可。这里记得赋值时候用(())符号。不能直接用=号了。=号没有值类型。默认将后面变成字符串了。如:& & [chengmo@centos5 ~]$ num=0123;& & [chengmo@centos5 ~]$ echo $& & 0123& & 0开头已经失去了意义了。& & 可以通过定义符:let达到(()) 运算效果。& & [chengmo@centos5 ~]$ let num=0123;& & [chengmo@centos5 ~]$ echo $ &&& & 83&
转自:/JemBai/archive//1416364.html
如果你的IPTABLES基础知识还不了解,建议先去看看.
我们来配置一个filter表的防火墙.
(1)查看本机关于IPTABLES的设置情况
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
Chain FORWARD (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
Chain OUTPUT (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
Chain RH-Firewall-1-INPUT (0 references)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
ACCEPT&&&&&& all&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&
ACCEPT&&&&&& icmp --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&& icmp type 255
ACCEPT&&&&&& esp&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&
ACCEPT&&&&&& ah&&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&
ACCEPT&&&&&& udp&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 224.0.0.251&&&&&&&&&& udp dpt:5353
ACCEPT&&&&&& udp&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&& udp dpt:631
ACCEPT&&&&&& all&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&& state RELATED,ESTABLISHED
ACCEPT&&&&&& tcp&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&& state NEW tcp dpt:22
ACCEPT&&&&&& tcp&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&& state NEW tcp dpt:80
ACCEPT&&&&&& tcp&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&& state NEW tcp dpt:25
REJECT&&&&&& all&&& --&&& 0.0.0.0/0&&&&&&&&&&&&& 0.0.0.0/0&&&&&&&&&&&& reject-with icmp-host-prohibited
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.
如果你在安装linux时没有选择启动防火墙,是这样的
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
Chain FORWARD (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
Chain OUTPUT (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&
什么规则都没有.
(2)清除原有规则.
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.
[root@tp ~]# iptables -F&&&&&&& 清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X&&&&&&& 清除预设表filter中使用者自定链中的规则
我们在来看一下
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
Chain FORWARD (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
Chain OUTPUT (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&
什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
[root@tp ~]# service iptables restart
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧
(3)设定预设规则
[root@tp ~]# iptables -p INPUT DROP
[root@tp ~]# iptables -p OUTPUT ACCEPT
[root@tp ~]# iptables -p FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包
而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.
可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.
这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.
注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.
怎么办,去本机操作呗!
(4)添加规则.
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链
为了能采用远程SSH登陆,我们要开启22端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.
其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,其他同理.)
如果做了WEB服务器,开启80端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
如果做了邮件服务器,开启25,110端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
如果做了FTP服务器,开启21端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
如果做了DNS服务器,开启53端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
如果你还做了其他的服务器,需要开启哪个端口,照写就行了.
上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP
允许icmp包通过,也就是允许ping,
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT&&& (INPUT设置成DROP的话)
允许loopback!(不然会导致DNS无法正常关闭等问题)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.
减少不安全的端口连接
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
有些些特洛伊木马会扫描端口3(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会
还有其他端口也一样,像:3、2 NetBus、9(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.
当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加
允许SSH登陆一样.照着写就行了.
下面写一下更加细致的规则,就是限制到某台机器
如:我们只允许192.168.0.3的机器进行SSH连接
[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.
或采用命令方式:
[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT
然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样写 !192.168.0.3 表示除了192.168.0.3的ip地址
其他的规则连接也一样这么设置.
在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.
开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢弃坏的TCP包
[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
处理IP碎片数量,防止攻击,允许每秒100个
[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
我在前面只所以允许ICMP包通过,就是因为我在这里有限制.
二,配置一个NAT表放火墙
1,查看本机关于NAT的设置情况
[root@tp rc.d]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
Chain POSTROUTING (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&&&&&&
SNAT&&&&&&&& all&&& --&&& 192.168.0.0/24&&&&&&&& anywhere&&&&&&&&&&&&& to:211.101.46.235
Chain OUTPUT (policy ACCEPT)
target&&&&&& prot opt source&&&&&&&&&&&&&&&& destination&&&&
我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考我的另一篇文章
当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的
如果你想清除,命令是
[root@tp ~]# iptables -F -t nat
[root@tp ~]# iptables -X -t nat
[root@tp ~]# iptables -Z -t nat
2,添加规则
添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),
添加规则,我们只添加DROP链.因为默认链全是ACCEPT.
防止外网用内网IP欺骗
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)
禁止与211.101.46.253的所有连接
[root@tp ~]# iptables -t nat -A PREROUTING&&& -d 211.101.46.253 -j DROP
禁用FTP(21)端口
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
这样写范围太大了,我们可以更精确的定义.
[root@tp ~]# iptables -t nat -A PREROUTING&&& -p tcp --dport 21 -d 211.101.46.253 -j DROP
这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.
按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.
drop非法连接
[root@tp ~]# iptables -A INPUT&&&& -m state --state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT&&& -m state --state INVALID -j DROP
[root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP
允许所有已经建立的和相关的连接
[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
[root@tp ~]# service iptables restart
别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,
上面的所有规则我都试过,没有问题.
写这篇文章,用了我将近1个月的时间.查找资料,自己做实验,希望对大家有所帮助.如有不全及不完善的地方还请提出.
因为本篇文章以配置为主.关于IPTABLES的基础知识及指令命令说明等我会尽快传上,当然你可以去网上搜索一下,还是很多的.
转自:http://blog.csdn.net/kozazyh/article/details/5495532
lsof命令是什么?
可以列出被进程所打开的文件的信息。被打开的文件可以是
1.普通的文件,2.目录 &3.网络文件系统的文件,4.字符设备文件 &5.(函数)共享库 &6.管道,命名管道&7.符号链接
8.底层的socket字流,网络socket,unix域名socket
9.在linux里面,大部分的东西都是被当做文件的…..还有其他很多
怎样使用lsof
这里主要用案例的形式来介绍lsof 命令的使用
1.列出所有打开的文件:
备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位
2. 查看谁正在使用某个文件
lsof & /filepath/file
3.递归查看某个目录的文件信息
lsof +D /filepath/filepath2/
备注: 使用了+D,对应目录下的所有子目录和文件都会被列出
4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法
lsof | grep ‘/filepath/filepath2/’
5. 列出某个用户打开的文件信息
lsof &-u username
备注: -u 选项,u其实是user的缩写
6. 列出某个程序所打开的文件信息
lsof -c mysql
备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符了
7. 列出多个程序多打开的文件信息
lsof -c mysql -c apache
8. 列出某个用户以及某个程序所打开的文件信息
lsof -u test -c mysql
9. 列出除了某个用户外的被打开的文件信息
lsof & -u ^root
备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示
10. 通过某个进程号显示该进行打开的文件
11. 列出多个进程号对应的文件信息
lsof -p 123,456,789
12. 列出除了某个进程号,其他进程号所打开的文件信息
lsof -p ^1
13 . 列出所有的网络连接
14. 列出所有tcp 网络连接信息
lsof &-i tcp
15. 列出所有udp网络连接信息
lsof &-i udp
16. 列出谁在使用某个端口
lsof -i :3306
17. 列出谁在使用某个特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80
18. 列出某个用户的所有活跃的网络端口
lsof &-a -u test -i
19. 列出所有网络文件系统
20.域名socket文件
21.某个用户组所打开的文件信息
lsof -g 5555
22. 根据文件描述列出对应的文件信息
lsof -d description(like 2)
23. 根据文件描述范围列出文件信息
lsof -d 2-3
这篇文章主要介绍了Linux base shell重定向的相关资料,并用一个简明例子总结了常见用法(在第三节),需要的朋友可以参考下一、标准输入,标准输出与标准错误输出在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名:文件
文件描述符输入文件—标准输入
0(缺省是键盘,为0时是文件或者其他命令的输出)输出文件—标准输出
1(缺省是屏幕,为1时是文件)错误输出文件—标准错误
2(缺省是屏幕,为2时是文件)系统中实际上有12个文件描述符,我们可以任意使用文件描述符3到9.标准输入:从键盘输入数据,即从键盘读入数据。标准输出:把数据输出到终端上。标准错误输出:把标准错误输出到终端上。默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。系统为这三个文件分配了文件标识符fd(file descripter).在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。它们的文件标识符,分别为0,1,2。他们的关系如下表:文件描述符
屏幕二.文件重定向:改变程序运行的输入来源和输出地点1.输出重定向:Command & filename
把标准输出重定向到一个新文件中Command && filename
把标准输出重定向到一个文件中(追加)Command & filename
把标准输出重定向到一个文件中Command & filename 2&&1
把标准输出和错误一起重定向到一个文件中Command 2 & filename
把标准错误重定向到一个文件中Command 2 && filename
把标准输出重定向到一个文件中(追加)Command && filename2&&1
把标准输出和错误一起重定向到一个文件(追加)2.输入重定向:Command & filename & filename2
Command命令以filename文件作为标准输入,以filename2文件作为标准输出Command & filename
Command命令以filename文件作为标准输入Command && delimiter
从标准输入中读入,知道遇到delimiter分界符3.绑定重定向Command &&m
把标准输出重定向到文件描述符m中Command & &-
关闭标准输入Command 0&&-
同上三、使用实例代码如下:cmd & file#说明: 将 cmd 的输出发送到 file 文件(覆盖模式)cmd && file#说明: 将 cmd 的输出发送到 file 文件(追加模式)cmd & file#说明: 以 file 文件的内容作为 cmd 的输入cmd && text#说明: 嵌入文件(here document, 类似于PHP语法)形式的输入#shell 可在行内输入中做变量、命令和算术替换cmd &&- text#说明: 作用同上, 不过会自动删除here document中每行开头的制表符Tabcmd &&& word#说明: here string 格式的输入#参见: http://bash.cyberciti.biz/guide/Here_strings#参见: http://linux.die.net/abs-guide/x15683.htmlcmd && file#说明: 以读写方式打开文件 filecmd &| file#说明: 强制以覆盖方式将 cmd 的输出发送到 file 文件#即便 shell 设置了 noclobber 选项也是如此cmd &&n#说明: 将 cmd 的输出发送到文件描述符 ncmd m&&n#说明: 作用同上。将本该输出到文件描述符 m 的内容, 发送到文件描述符 ncmd &&-#说明: 关闭标准输出cmd &&n#说明: 从文件描述符 n 处获取内容作为 cmd 命令的输入cmd m&&n#说明: 作用同上。除了本该从文件描述符 m 处获取输入,改为从文件描述符 n 处获取cmd &&-#说明: 关闭标准输入cmd &&n-#说明: 通过复制移动文件操作符 n 为标准输入并且关闭原始输入cmd &&n-#说明: 通过复制移动文件操作符 n 为标准输出并且关闭原始输出cmd 2&file#说明: 将标准错误输出发送到文件 filecmd && file 2&&1#说明: 将标准输出发送到文件 file, 将标准错误发送到文件描述符 1, 也即 file 文件cmd &&& file#说明: 将标准输出和标准错误都发送到文件 file (作用同上)cmd &&& file#说明: 作用同上, 更好的格式cmd &&&& file#说明: 将标准错误和标准输出发送到文件 file (追加模式)cmd && f1 2& f2#说明: 将标准输出发送到文件 f1, 将标准错误发送到文件 f2cmd &| tee files#说明: 发送 cmd 的输出到标准输出 (通常为终端) 和 文件 filescmd 2&&1 | tee files#说明: 发送 cmd 的输出和错误到标准输出 (通常为终端) 和 文件 filescmd |& tee files#说明: 作用同上四、shell重定向的一些高级用法1.重定向标准错误例子1:代码如下:command 2& /dev/null如果command执行出错,将错误的信息重定向到空设备例子2:代码如下:command & out.put 2&&1将command执行的标准输出和标准错误重定向到out.put(也就是说不管command执行正确还是错误,输出都打印到out.put)。2.exec用法exec命令可以用来替代当前shell;换句话说,并没有启动子shell,使用这一条命令时任何现有环境变量将会被清除,并重新启动一个shell(重新输入用户名和密码进入)。代码如下:exec command其中,command通常是一个shell脚本。对文件描述符操作的时候用(也只有再这时候),它不会覆盖你当前的shell例子1:代码如下:#!/bin/bash#file_descexec 3&&0 0&name.txtread line1read line2exec 0&&3echo $line1echo $line2其中:首先,exec 3&&0 0&name.txt的意思是把标准输入重定向到文件描述符3(0表示标准输入),然后把文件name.txt内容重定向到文件描述符0,实际上就是把文件name.txt中的内容重定向到文件描述符3。然后通过exec打开文件描述符3;然后,通过read命令读取name.txt的第一行内容line1,第二行内容line2,通过Exec 0&&3关闭文件描述符3;最后,用echo命令输出line1和line2。最好在终端运行一下这个脚本,亲自尝试一下。例子2:代码如下:exec 3&&test.#打开test.sh可读写操作,与文件描述符3绑定while read line&&3&do& & echo $done#循环读取文件描述符3(读取的是test.sh内容)代码如下:exec 3&&-exec 3&&-#关闭文件的,输入,输出绑定五、bash shell 重定向的几个特殊文件文件
说明/dev/stdin
文件描述符 0 的复制品/dev/stdout
文件描述符 1 的复制品/dev/stderr
文件描述符 2 的复制品/dev/fd/n
文件描述符 n 的复制品/dev/tcp/host/port
Bash 在 port 打开到 host 的 TCP 连接/dev/udp/host/port
Bash 在 port 打开到 host 的 UDP 连接
转自:/html/28/978.html在bash中,使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就有多少“进程”在同时执行。我们就先实现第一种情况:实例一:正常情况脚本———————————————————————————–#!/bin/bashfor&((i=0;i&5;i++));do&{&sleep&1;echo&1&&aa&&&&echo&”done!”&}donecat&aa|wc&-lrm&aa———————————————————————————–这种情况下,程序顺序执行,每个循环3s,共需15s左右。$&time&bash&test.shdone!done!done!done!done!5real&&&&0m15.030suser&&&&0m0.002ssys&&&&&0m0.003s实例二:“多进程”实现———————————————————————————–#!/bin/bashfor&((i=0;i&5;i++));do&{&sleep&3;echo&1&&aa&&&&echo&”done!”&}&&donewaitcat&aa|wc&-lrm&aa———————————————————————————–这个实例实际上就在上面基础上多加了一个后台执行&符号,此时应该是5个循环任务并发执行,最后需要3s左右时间。$&time&bash&test.shdone!done!done!done!done!5real&&&&0m3.011suser&&&&0m0.002ssys&&&&&0m0.004s效果非常明显。这里需要说明一下wait的左右。wait是等待前面的后台任务全部完成才往下执行,否则程序本身是不会等待的,这样对后面依赖前面任务结果的命令来说就可能出错。例如上面wc -l的命令就报错:不存在aa这个文件。以上所讲的实例都是进程数目不可控制的情况,下面描述如何准确控制并发的进程数目。——————————————————————————————————————#!/bin/bash#&,&by&wwy#———————————————————————————–#&此例子说明了一种用wait、read命令模拟多线程的一种技巧#&此技巧往往用于多主机检查,比如ssh登录、ping等等这种单进程比较慢而不耗费cpu的情况#&还说明了多线程的控制#———————————————————————————–function&a_sub&{&#&此处定义一个函数,作为一个线程(子进程)sleep&3&#&线程的作用是sleep&3s}tmp_fifofile=”/tmp/$.fifo”mkfifo&$tmp_fifofile&&&&&&#&新建一个fifo类型的文件exec&6&&$tmp_fifofile&&&&&&#&将fd6指向fifo类型rm&$tmp_fifofilethread=15&#&此处定义线程数for&((i=0;i&$i++));doechodone&&&6&#&事实上就是在fd6中放置了$thread个回车符for&((i=0;i&50;i++));do&#&50次循环,可以理解为50个主机,或read&-u6#&一个read&-u6命令执行一次,就从fd6中减去一个回车符,然后向下执行,#&fd6中没有回车符的时候,就停在这了,从而实现了线程数量控制{&#&此处子进程开始执行,被放到后台&a_sub&&&&{&#&此处可以用来判断子进程的逻辑&echo&”a_sub&is&finished”&}&||&{&echo&”sub&error”&}&echo&&&6&#&当进程结束以后,再向fd6中加上一个回车符,即补上了read&-u6减去的那个}&&donewait&#&等待所有的后台子进程结束exec&6&&-&#&关闭df6exit&0——————————————————————————————————————sleep 3s,线程数为15,一共循环50次,所以,此脚本一共的执行时间大约为12秒即:15×3=45, 所以 3 x 3s = 9s(50-45=5)&15, 所以 1 x 3s = 3s所以 9s + 3s = 12s$ time ./multithread.sh &/dev/nullreal&&&&&&& 0m12.025suser&&&&&&& 0m0.020ssys&&&&&&&& 0m0.064s而当不使用多线程技巧的时候,执行时间为:50 x 3s = 150s。此程序中的命令 mkfifo&tmpfile和linux中的命令 mknod&tmpfile&p效果相同。区别是mkfifo为POSIX标准,因此推荐使用它。该命令创建了一个先入先出的管道文件,并为其分配文件标志符6。管道文件是进程之间通信的一种方式,注意这一句很重要exec&6&&$tmp_fifofile&&&&&&#&将fd6指向fifo类型如果没有这句,在向文件$tmp_fifofile或者&6写入数据时,程序会被阻塞,直到有read读出了管道文件中的数据为止。而执行了上面这一句后就可以在程序运行期间不断向fifo类型的文件写入数据而不会阻塞,并且数据会被保存下来以供read程序读出
nmon分析文件各sheet含义sheet名称 sheet含义SYS_SUMM 系统汇总,蓝线为cpu占有率变化情况,粉线为磁盘IO的变化情况;AAA
关于操作系统以及nmon本身的一些信息;BBBB
系统外挂存储容量以及存储类型;BBBC
系统外挂存储位置、状态以及描述信息;BBBD
磁盘适配器信息;(包含磁盘适配器名称以及描述)BBBE
包含通过lsdev命令获取的系统设备及其特征,显示vpaths和hdisks之间的映射关系;BBBG
显示磁盘组详细的映射关系;BBBL
逻辑分区(LPAR)配置细节信息;BBBN
网络适配器信息;BBBP
vmtune, &schedtune, emstat和lsattr命令的输出信息;CPUnn
显示执行之间内CPU占用情况,其中包含user%、sys%、wait%和idle%;CPU_ALL
所有CPU概述,显示所有CPU平均占用情况,其中包含SMT状态;CPU_SUMM 每一个CPU在执行时间内的占用情况,其中包含user%、sys%、wait%和idle%;DGBUSY
磁盘组每个hdisk设备平均占用情况;DGREAD
每个磁盘组的平均读情况;DGSIZE
每个磁盘组的平均读写情况(块大小);DGWRITE
每个磁盘组的平均写情况;DGXFER
每个磁盘组的I/O每秒操作;DISKBSIZE 执行时间内每个hdisk的传输块大小;DISKBUSY 每个hdisk设备平均占用情况;DISKREAD 每个hdisk的平均读情况;DISKWRITE 每个hdisk的平均写情况;DISKXFER 每个hdisk的I/O每秒操作;DISKSERV 本sheet显示在每个收集间隔中hdisk的评估服务时间(未响应时间)DISK_SUMM 总体disk读、写以及I/O操作;EMCBSIZE/FAStBSIZE 执行时间内EMC存储的传输块大小;EMCBUSY/FAStBUSY EMC存储设备平均占用情况;EMCREAD/FAStREAD EMC存储的平均读情况;EMCWRITE/FAStWRITE EMC存储的平均写情况;EMCXFER/FAStXFER EMCSERV/FAStSERV ESSBSIZE 本sheet记录在系统中每个vpaths下读写操作的平均数据传输大小 &(blocksize) KbytesESSBUSY
本sheet记录使用ESS系统的每个vpaths下的设备繁忙情况ESSREAD
本sheet记录在系统中每个vpaths下读取操作的 &data rate (Kbytes/sec)ESSWRITE 本sheet记录在系统中每个vpaths下写入操作的 &data rate (Kbytes/sec)ESSXFER
本sheet记录在系统中每个vpaths下每秒的IO操作ESSSERV
本sheet显示在每个收集间隔中vpaths的评估服务时间(未响应时间)FILE
本sheet包含nmon内核内部的统计信息的一个子集,跟sar报告的值相同FRCA IOADAPT
对于BBBCsheet每个IO适配器列表,包含了数据传输速度为读取和写入操作(千字节/秒)和I &/ O操作执行的总数量JFSFILE
本sheet显示对于每一个文件系统中,在每个间隔区间正在被使用的空间百分比JFSINODE 本sheet显示对于每一个文件系统中,在每个间隔区间正在被使用的inode百分比LARGEPAGE 本图表显示Usedpages和Freepages随着时间的变化LPAR MEM
本sheet主图上显示空闲实存的数量MEMUSE
除 &%comp参数外,本sheet包含的所有项都和vmtune命令的报告中一样MEMNEW
本sheet显示分配的内存片信息,分三大类:用户进程使用页,文件系统缓存,系统内核使用页NET
本sheet显示系统中每个网络适配器的数据传输速率(千字节/秒)NETPACKET 本sheet统计每个适配器网络读写包的数量;这个类似于netpmon &–O dd 命令NFS sheets PAGE
本sheet统计相关页信息的记录PROC
本sheet包含nmon内核内部的统计信息。其中RunQueue和Swap-in域是使用的平均时间间隔,其他项的单位是比率/秒PROCAIO
本sheet包含关于可用的和active的异步IO进程数量信息.TOP UARG WLM sheets ZZZZ
本sheet自动转换所有nmon的时间戳为现在真实的时间,方便更容易的分析nmon分析文件详细指标详解指标类型 指标名称 指标含义SYS_SUMM CPU% cpu占有率变化情况; IO/sec IO的变化情况;AAA AIX AIX版本号; build build版本号; command 执行命令; cpus CPU数量; date 执行日期; disks_per_line
hardware 被测主机处理器技术; host 被测主机名; interval 监控取样间隔;(秒) kernel 被测主机内核信息; ML 维护等级; progname 执行文件名称; runname 运行主机名称; snapshots 实际快照次数; subversion nmon版本详情; time 执行开始时间戳; user 执行命令用户名; version 收集数据的nmon版本; analyser nmon analyser版本号; environment 所用excel版本; parms excel参数设定; settings excel环境设置; elapsed 生成excel消耗时间;BBBB name 存储磁盘名称; size(GB) 磁盘容量; disc attach type 磁盘类型;BBBC hdisknn 各个磁盘信息、状态以及MOUNT位置;BBBD Adapter_number 磁盘适配器编号; Name 磁盘适配器名称; Disks 磁盘适配器数量; Description 磁盘适配器描述;BBBE
&BBBN NetworkName 网络名称; MTU 网络上传送的最大数据包,单位是字节; Mbits 带宽; Name 名称;BBBP
vmtune, schedtune, emstat 和 &lsattr命令的输出信息;CPUnn CPU nn 执行间隔时间列表; User% 显示在用户模式下执行的程序所使用的 CPU &百分比; Sys% 显示在内核模式下执行的程序所使用的 CPU &百分比; Wait% 显示等待 IO 所花的时间百分比; Idle% 显示 CPU 的空闲时间百分比; CPU% CPU总体占用情况;CPU_ALL CPU nn 执行间隔时间列表; User% 显示在用户模式下执行的程序所使用的 CPU &百分比; Sys% 显示在内核模式下执行的程序所使用的 CPU &百分比; Wait% 显示等待 IO 所花的时间百分比; Idle% 显示 CPU 的空闲时间百分比; CPU% CPU总体占用情况; Logical CPUs (SMT=on) CPU_SUMM CPU_SUMM CPU编号; User% 显示在用户模式下执行的程序所使用的 CPU &百分比; Sys% 显示在内核模式下执行的程序所使用的 CPU &百分比; Wait% 显示等待 IO 所花的时间百分比; Idle% 显示 CPU 的空闲时间百分比;DGBUSY
&DISKBSIZE Disk Block Size Hostname 执行间隔时间列表; hdisknn 磁盘传输速度时间间隔采样;(读和写的总趋势图)DISKBUSY Disk %Busy Hostname 执行间隔时间列表; hdisknn 每个磁盘执行采样数据;(磁盘设备的占用百分比)DISKREAD Disk Read kb/s Hostname 执行间隔时间列表; hdisknn 每个磁盘执行采样数据;(磁盘设备的读速率)DISKWRITE Disk Write kb/s Hostname 执行间隔时间列表; hdisknn 每个磁盘执行采样数据;(磁盘设备的写速率)DISKXFER Disk transfers per second Hostname 执行间隔时间列表; hdisknn 每秒钟输出到物理磁盘的传输次数;DISKSERV
&DISK_SUMM Disk total kb/s &Hostname 执行间隔时间列表; Disk Read kb/s 每个磁盘执行采样数据;(磁盘设备的读速率) Disk Write kb/s 每个磁盘执行采样数据;(磁盘设备的写速率) IO/sec 每秒钟输出到物理磁盘的传输次数;EMCBSIZE/FAStBSIZE
&EMCBUSY/FAStBUSY
&EMCREAD/FAStREAD
&EMCWRITE/FAStWRITE
&EMCXFER/FAStXFER
&EMCSERV/FAStSERV
&FILE iget 在监控期间每秒钟到节点查找例行程序的呼叫数 namei 在监控期间每秒钟路径查找例行程序的呼叫数 (sar &-a ). & dirblk 在监控期间通过目录搜索例行程序每秒钟扫描到的目录块 数 &(sar -a)& readch 在监控期间通过读系统呼叫每秒钟读出的字节数 (sar &-c)& writech 在监控期间通过写系统呼叫每秒钟写入的字节数 (sar &-c)& ttyrawch 在监控期间通过TTYs每秒钟读入的裸字节数 (sar &-y ).& ttycanch 终端输入队列字符 . 对于aix Version 4或者更后的版本这个值总是0 & & ttyoutch 终端输出队列字符. &(sar -y ). &FRCA
&IOADAPT Disk Adapter Hostname(KB/s) 执行间隔时间列表; Disk Adapter_read 磁盘适配器读速率; Disk Adapter_write 磁盘适配器写速率; Disk &Adapter_xfer-tps 磁盘适配器传输速率;(该物理磁盘每秒的 IO 传输请求数量)JFSFILE JFS Filespace %Used Hostname 执行间隔时间列表; file &system/LV 文件系统以及mount磁盘设备已使用空间百分比;JFSINODE JFS Inode %Used Hostname 执行间隔时间列表; file &system/LV 文件系统以及mount磁盘设备的inode已使用空间百分比;LARGEPAGE
&MEM Memory Hostname 执行间隔时间列表; Real Free % 实际剩余内存百分比; Virtual free % 虚拟剩余内存百分比; Real free(MB) 实际剩余内存大小;(MB) Virtual free(MB) 虚拟剩余内存大小;(MB) Real total(MB) 实际内存总体大小;(MB) Virtual &total(MB) 虚拟内存总体大小;(MB)MEMUSE %numperm 分配给文件页的实际内存百分比 %minperm mixperm的缺省值约为20%的物理内存.通常会不断的运行,除非vmtune或rmss命令中使用收集 %maxperm maxperm的缺省值约为80%的物理内存. &通常会不断的运行,除非vmtune或rmss命令中使用收集 minfree 空闲页面数的最小值 maxfree 空闲页面数的最大值 &指定的vmtune命令或系统默认 %comp 分配给计算页的内存百分比,NMON分析器计算这个值 &计算页是可被 page space支持的,包括存储和程序文本段 他们不包括数据,可执行的和共享的库文件MEMNEW Process% 分配给用户进程的内存百分比 FSCache% 分配给文件系统缓存的内存百分比 System% 系统程序使用的内存百分比 Free% 未被分配的内存百分比 & & & & && User% 非系统程序使用的内存百分比 &NET read/write 显示系统中每个网络适配器的数据传输速率(千字节/秒)NETPACKET reads/s 统计每个适配器网络读包的数量 writes/s 统计每个适配器网络写包的数量NFS sheets
&PAGE faults 每秒的page faults数 pgin 每秒钟所读入的页数,包括从文件系统读取的页数 pgout 每秒钟所写出的页数,包括写到文件系统的页数 pgsin 每秒钟从页面空间所读取的页数 pgsout 每秒钟写到页面空间的页数 reclaims 从nmon回收这项之前的10个,和vmstat报告的值是一样的,代表了页替换机制释放的pages/sec的数量 scans 扫描页替换机制的pages/sec的数量,和vmstat报告的值是一样的,页替换在空闲页数量到达最小值时初始化,在空闲到达最大值时停止 cycles 周期 &times/sec的数值,页替换机制需要扫描整个页表,来补充空闲列表。这和vmstat报告的cy数值一样,只是vmstat报告的这个值是整形值,而nmon报告的是实型值 fsin 分析器计算的数据为pgin-pgsin的图形处理所用 fsout 分析器计算的数据为pgout-pgsout的图形处理所用 sr/fr 分析器计算的数据为scans/reclaims的图形处理所用PROC RunQueue 运行队列中的内核线程平均数(同sar &-q中的runq-sz) Swap-in 等待page in的内核线程平均数 &(同sar -q中的swpq-sz) pswitch 上下文开关个数 (同sar &-w中的pswch/s) syscall 系统调用总数.(同sar &-c中的scall/s) read 系统调用中read的数量. (同sar &-c中的sread/s) write 系统调用中write的数量. (同sar &-c中的swrit/s) fork 系统调用中fork的数量. (同sar &-c中的 fork/s) exec 系统调用中exec 的数量. (同sar &-c中的 &exec/s) rcvint tty接收中断的数量. (同sar &-y中的 &revin/s) xmtint tty传输中断的数量. (同sar &-y中的 &xmtin/s) sem IPC信号元的数量 创建,使用和消除). &(同sar -m中的 &sema/s) msg IPC消息元的数量 (发送和接收). &(同sar -m中的 &sema/s)PROCAIO
&TOP PID 进程号 %CPU CPU使用的平均数 %Usr 显示运行的用户程序所占用的CPU百分比 %Sys 显示运行的系统程序所占用的CPU百分比 Threads 被使用在这个程序中的线程数 Size 对于这个程序一次调用分配给数据段的paging &space平均值& ResText 对于这个程序一次调用分配给代码段的内存平均值 ResData 对于这个程序一次调用分配给数据段的内存平均值 CharIO 通过读写系统调用的每秒字节数& %RAM 此命令所使用的内存百分比 &((ResText + ResData) / Real Mem) Paging 此进程所有page &faults的总数 Command 命令名称& WLMClass 此程序已分配的 &Workload Manager superclass名称 IntervalCPU 详细信息中显示在时间间隔中所有调用命令所使用的CPU总数 & WSet 详细信息中显示在时间间隔中所有调用命令所使用的内存 总数& User 运行进程的用户名 Arg 包含完整的参数字符串输入命令UARG
&WLM sheets
nmon关键指标列表关键指标类型 关键指标名称 关键指标含义SYS_SUMM CPU% cpu占有率变化情况; IO/sec IO的变化情况;AAA AIX AIX版本号; cpus CPU数量; hardware 被测主机处理器技术; host 被测主机名; interval 监控取样间隔;(秒) kernel 被测主机内核信息;CPU_ALL User% 显示在用户模式下执行的程序所使用的 CPU 百分比; Sys% 显示在内核模式下执行的程序所使用的 CPU &百分比; Wait% 显示等待 IO 所花的时间百分比; Idle% 显示 CPU 的空闲时间百分比; CPU% CPU总体占用情况;DISKBUSY Disk %Busy Hostname 执行间隔时间列表; hdisknn 每个磁盘执行采样数据;(磁盘设备的占用百分比)DISK_SUMM Disk total kb/s &Hostname 执行间隔时间列表; Disk Read kb/s 每个磁盘执行采样数据;(磁盘设备的读速率) Disk Write kb/s 每个磁盘执行采样数据;(磁盘设备的写速率) IO/sec 每秒钟输出到物理磁盘的传输次数;NET read/write 本sheet显示系统中每个网络适配器的数据传输速率(千字节/秒)JFSFILE JFS Filespace %Used Hostname 执行间隔时间列表; file &system/LV 文件系统以及mount磁盘设备已使用空间百分比;JFSINODE JFS Inode %Used Hostname 执行间隔时间列表; file &system/LV 文件系统以及mount磁盘设备的inode已使用空间百分比;MEM Memory Hostname 执行间隔时间列表; Real Free % 实际剩余内存百分比; Virtual free % 虚拟剩余内存百分比; Real free(MB) 实际剩余内存大小;(MB) Virtual free(MB) 虚拟剩余内存大小;(MB) Real total(MB) 实际内存总体大小;(MB) Virtual &total(MB) 虚拟内存总体大小;(MB)PAGE faults 每秒的page &faults(页错误)数; pgin 每秒钟所读入的页数,包括从文件系统读取的页数 pgout 每秒钟所写出的页数,包括写到文件系统的页数 pgsin 每秒钟从页面空间所读取的页数 pgsout 每秒钟写到页面空间的页数 reclaims 从nmon回收这项之前的10个,和vmstat报告的值是一样的,代表了页替换机制释放的pages/sec的数量 scans 扫描页替换机制的pages/sec的数量,和vmstat报告的值是一样的,页替换在空闲页数量到达最小值时初始化,在空闲到达最大值时停止 cycles 周期 &times/sec的数值,页替换机制需要扫描整个页表,来补充空闲列表。这和vmstat报告的cy数值一样,只是vmstat报告的这个值是整形值,而nmon报告的是实型值 fsin 分析器计算的数据为pgin-pgsin的图形处理所用 fsout 分析器计算的数据为pgout-pgsout的图形处理所用 sr/fr 分析器计算的数据为scans/reclaims的图形处理所用
转自:http://blog.csdn.net/zjl_/article/details/2294061该文件中的所有值都是从系统启动开始累计到当前时刻。该文件只给出了所有CPU的集合信息,不能该出每个CPU的信息。[root@localhost ~]# cat /proc/loadavg 4.61 4.36 4.15 9/84 5662每个值的含义为:参数 解释lavg_1 (4.61) 1-分钟平均负载lavg_5 (4.36) 5-分钟平均负载lavg_15(4.15) 15-分钟平均负载nr_running (9) 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思nr_threads (84) 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)last_pid(5662) 最大的pid值,包括轻量级进程,即线程。假设当前有两个CPU,则每个CPU的当前任务数为4.61/2=2.31&
# Author:fairylly&一、软件介绍1.分析工具分析&AIX&和&Linux&性能的免费工具。nmon&工具可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。这个高效的工具可以工作于任何哑屏幕、telnet&会话、甚至拨号线路。另外,它并不会消耗大量的&CPU&周期,通常低于百分之二。在更新的计算机上,其&CPU&使用率将低于百分之一。使用哑屏幕,在屏幕上对数据进行显示,并且每隔两秒钟对其进行更新。然而,您可以很容易地将这个时间间隔更改为更长或更短的时间段。如果您拉伸窗口,并在X&Windows、VNC、PuTTY&或类似的窗口中显示这些数据,nmon&工具可以同时输出大量的信息。nmon&工具还可以将相同的数据捕获到一个文本文件,便于以后对报告进行分析和绘制图形。输出文件采用电子表格的格式&(.csv)。2.性能介绍nmon&工具可以为&AIX&和&Linux&性能专家提供监视和分析性能数据的功能,其中包括:&&&&&CPU&使用率&&&&内存使用情况&&&&内核统计信息和运行队列信息&&&&磁盘&I/O&速度、传输和读/写比率&&&&文件系统中的可用空间&&&&磁盘适配器&&&&网络&I/O&速度、传输和读/写比率&&&&页面空间和页面速度&&&&CPU&和&AIX&规范&&&&消耗资源最多的进程&&&&IBM&HTTP&Web&缓存&&&&用户自定义的磁盘组&&&&计算机详细信息和资源&&&&异步&I/O,仅适用于&AIX&&&&工作负载管理器&(WLM),仅适用于&AIX&&&&IBM&TotalStorage®&Enterprise&Storage&Server®&(ESS)&磁盘,仅适用于&AIX&&&&网络文件系统&(NFS)&&&&动态&LPAR&(DLPAR)&更改,仅适用于面向&AIX&或&Linux&的&pSeries&p5&和&OpenPower&还包括一个用来从&nmon&的输出生成图形并创建可以在&Web&站点显示的&.gif&文件的新工具。二、软件下载安装1.下载nmon下载页:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download&nmon_analyser下载页:/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon_analyser&注意根据不同的平台,下载不同的nmon包;&这里以centos为例,下载不同的操作系统版本对应的包:nmon_linux_14i.tar.gznmon_x86_64_centos6:兼容CentOS6-64位操作系统nmon_x86_centos6:兼容CentOS6-32位操作系统MPG_nmon_for_Linux_14a_binaries.zipnmon_x86_64_centos5:兼容CentOS5-64位操作系统nmon_x86_centos5:兼容CentOS5-32位操作系统&2.安装从下载的包中,取出对应平台的二进制文件,如:nmon_x86_64_centos6(兼容CentOS6-64位操作系统);上传到CentOS6-64位服务器上,如:/usr/local/bin目录下(/usr/local/bin默认在环境变量中,系统可识别其目录下的可执行程序,可直接运行)重命名:mv&nmon_x86_64_centos6&nmon增加可执行权限:chmod&+x&nmon&执行:nmon,确认可以使用;(centos下,当前方式会显示乱码,不推荐使用,下面介绍性能测试过程中,记录监控数据方法)三、使用nmon监控服务器资源1.捕获数据到文件捕获数据到文件,只要运行带&-f&标志的&nmon&命令。执行nmon&f&***后,nmon&将转为后台运行。要查看该进程是否仍在运行,可以输入:&ps&-ef&|&grep&nmon。示例:每1秒捕获数据快照,捕获20次nmon&f&-s&1&-c&20&-m&/home/每30秒捕获数据快照,捕获120次,包含进程信息&-t-m&/home/命令将在当前目录中创建输出文件,其名称为:&&hostname&_date_time.nmon。该文件采用逗号分隔值&(CSV)&的格式,并且可以将其直接导入到电子表格中,可进行分析和绘制图形&参数解释: -s
每&X&秒采集一次数据。 -c & 采集&Y&次,即为采集X*Y秒的数据。 -f&
生成的数据文件名中包含文件创建的时间。-t
在导出的信息中包含前几位的进程信息。-m&
生成的数据文件的存放目录。&这样就会生成一个nmon文件,并每X秒更新一次,采集Y次,直到X*Y秒后。生成的文件名如:&hostname&_YYYYMMDD_HHMM.nmon,"&hostname&"&是这台主机的主机名。&&提前停止监控,可以使用命令杀掉进程,下述方法都可:1)killall&-9&nmon2)ps&-ef&|&grep&nmon,得到PID进程号,再进行kill&-9&nmon的pid3)kill&-9&`pidof&nmon`&nmon&-h查看更多帮助信息。2.使用nmon&analyser生成报表nmon&analyser&工具以&NMON&性能工具生成的文件作为输入,然后将它们转换为&Microsoft&Excel&电子表格,并自动地生成相应的图形。使用wps未能正确执行脚本生成*.xls文件。建议使用Microsoft&Excel&2007&或更高版本,必须在打开.xls时选择启用宏。操作:将之前生成的&nmon&数据文件传到&Windows&机器上,用&Excel&打开分析工具&nmon&analyser&v34a.xls&。点击&Excel&文件中的&"Analyse&nmon&data"&按钮,选择&nmon&数据文件,这样就会生成一个分析后的结果文件:&hostname_6.nmon.xls&,用&Excel&打开生成的文件就可以看到结果了。注:nmon&analyser工具,推荐nmon采样300次或以内,这样生成的图形较为美观。注:NA_UserGuide&v34.doc,该用户手册中有对各图表及列含义进行说明;3.多台服务器同时进行监控测试过程中,有可能需要同时监控多台服务器资源情况,这时每一台上面去执行nmon监控命令,较为麻烦,且操作时间点也不一致。可通过:在一台服务器上,同时远程执行多台服务器的nmon命令操作,以解决该问题。&操作步骤:1)服务器之间配置信任关系;进行ssh或scp时,无需输入密码。参见:/html/00/281.html2)把需要远程执行的命令写入shell脚本中,以方便执行,参见:nmon.sh;3)把不同服务器上的日志文件下载到本地PC,通过nmon&analyser工具进行分析;也可使用远程执行命令方式,在同一台服务器上进行操作下载.nmon文件(存放目录、文件命名规范,可方便操作);&#&cat&nmon.sh&#!/bin/bashmkdir&-p&/tmp/nmon_monitor/usr/local/bin/nmon&-f&-t&-s&5&-c&100&-m&/tmp/nmon_monitor&-F&146.182_$1.nmonssh&root@192.168.146.180&'mkdir&-p&/tmp/nmon_/usr/local/bin/nmon&-f&-t&-s&5&-c&100&-m&/tmp/nmon_monitor&-F&146.180_'$1'.nmon'ssh&root@192.168.148.137&'mkdir&-p&/tmp/nmon_/usr/local/bin/nmon&-f&-t&-s&5&-c&100&-m&/tmp/nmon_monitor&-F&148.137_'$1'.nmon'脚本说明:1)生成的.nmon文件,推荐放在同一目录下,如:-m参数指定的:/tmp/nmon_monitor;2)生成的.nmon文件,推荐增加IP或hostname标识,下载到本地时,不同服务器数据不会弄混,如:146.182_$1.nmon;3).nmon文件中,使用了参数$1,用于传参给生成的文件名,如:./nmon.sh&;则生成的文件为:146.182_.nmon;4)-s&5&-c&100根据实际指定,这里表示每隔5秒采集一次数据,共采集100次,即持续5*100=500秒;4.nmon的不足nmon监控的不足之处:1)没有负载监控数据;w/top命令中:load&average:&0.40,&0.53,&0.63测试过程中,注意使用w或top查看该信息。&2)内存监控数据中,没有used信息,需要计算;#&free&&&&&&&&&&&&&total&&&&&&&used&&&&&&&free&&&&&shared&&&&buffers&&&&&cachedMem:&&&&&&&2075336&&&&1850744&&&&&224592&&&&&&&&&&0&&&&&595064&&&&&539744-/+&buffers/cache:&&&&&715936&&&&1359400Swap:&&&&&&2048248&&&&&&30996&&&&2017252&free命令中显示的used:used=total-free真实使用used=total-free-cached-buffers这部分数据,可以在nmon&analyser生成的.xls报表中,计算得出,并对应生成图表;&3)IO监控数据中,没有%util信息;有IO读写速率等相关信息,也可以进行IO问题分析。&四、参考资料nmon网站:&:http://blog.itpub.net//viewspace-626439/
安装服务器时,可以设置是否使用UTC时间System clock uses UTC世界协调时间(Universal Time Coordinated,UTC) GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时,以此计算即可 在linux中,用data查看时间的时候显示:2008年 12月 17日 星期三 09:04:14 CST这个CST是什么意思呢?CST China Standard Time UTC+8:00 中国沿海时间(北京时间)从CST转换为UTC:1、cp -af /usr/share/zoneinfo/UTC /etc/localtime2、vi /etc/sysconfig/clock 如果有:UTC=false,修改为:UTC=true如果没有,增加:UTC=true同样的,如果想从UTC转为CST,则进行如下操作1、cp -af /usr/share/zoneinfo/Asia/Shanghai /etc/localtime2、vi /etc/sysconfig/clock 如果有:UTC=true,修改为:UTC=false}

我要回帖

更多关于 drop和delete的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信