Git可视化比较工具P4Merge

在转战Mac之后,BeyondCompare 不再那么容易免费使用,今天终于让我找到了一个Git的GUI比较工具P4Merge,免费的,支持中文,还不错,推荐一下

下载

打开这个链接: perforce-visual-merge-and-diff-tools,点左上角的 FREE DOWNLOAD P4Merge , 找到 Perforce Clients 中的 P4Merge: Visual Merge Tool 项,在右边的第二行选择Mac OS 10.6+ (64bit) ,点下面橙色的 Accept and Download,选择跳过 Skip Registration ,就会开始下载了。

下载到P4V.dmg文件后,双击打开,拖动P4MergeApplication文件夹上就可以完成安装了。

配置

  1. git config –global diff.tool p4merge
  2. git config –global difftool.p4merge.cmd /Applications/p4merge.app/Contents/MacOS/p4merge
  3. git config –global difftool.p4merge.cmd “/Applications/p4merge.app/Contents/Resources/launchp4merge \$LOCAL \$REMOTE”
  4. 复制代码

如果直接复制原文的代码,运行上面的代码时会提示: error: key does not contain a section: -global 跟别人的命令比较一下,就会发现应该是—global(要两个短横连在一起的),原文的短横线有问题

现在敲git difftool命令执行时,会提示:

/usr/libexec/git-core/mergetools/p4merge: line 2: p4merge: command not found

原因是路径还需要再配置一下,如下

git config --global difftool.p4merge.path "/Applications/p4merge.app/Contents/Resources/launchp4merge" 以后想要比较Git中的代码时,敲git difftool filepath 即可

Linux、Windows下也都可以使用这个工具进行比较代码,只是需要另行配置了。P4Merge除了有比较功能,还有合并功能,怎么配置可以借鉴下面给出的参考链接。另外还有一个可视化比较工具meld,据说也不错,有时间试试.

git和 perforce4Merge

Git、P4merge OS X

Diff 是程序员*重要的工具之一。不过,除了在 mail 里发送 patch,我很难忍受传统 diff 的字符输出。在任何系统上开发软件,*件重要的准备工作就是寻找趁手的 GUI diff 工具。GUI diff 工具的优势在于 side-by-side 的比较方式即能显示变化的部分,又不影响对每个版本的连续阅读。Linux 上比较好的是 KDE 的 kompare,也是我见到的*种 GUI diff 工具。因为先入为主的看到 kompare 使用曲线来联系变化的对应关系,所以任何使用空行填充或者直线来显示对应关系的 GUI diff 工具对我来说也是比较勉强的 —— 可以暂时使用,但是仍然会不断寻找替代品。

平时工作用 Perforce 管理代码,它有个自带的 GUI diff 工具 P4merge。功能很强大(而且免费,虽然 Perforce 是商业软件,但是它的 client,包括 P4v 和 P4merge 都是免费的,而且 P4merge 可以完全脱离 Perforce server 独立使用),除了普通的比较两个文件(版本)之外还可以 3-way 比较(一般用来做人工的 branch merge,分别比较 branch fork 之前的原始版本,main branch 上的修改版本,和其它 branch 上的修改版本)。和 editor 不同的是,diff 工具操作的不仅仅是 check-out 的 version,而是 version repository 里的任意版本。所以 diff 工具要想和 version control 系统配合,简单的文件操作是不够的,一个成熟的 version control 系统必须在设计中考虑如何与外部的 diff 工具协作。

从上周开始用 Git 管理 Dict Mac 的 code base。用到昨天终于感到缺省的『 git diff 』不好用(类似『 diff -u 』的输出)。简单的 Google 一下就找到了答案:

git difftool …

原本以为只有在 Linux 上才会有缺省配置好的 GUI diff 工具和 Git 协作。在 Mac 上试过发现 OS X 上已经配置好了 opendiff 可以让 Git 直接使用。OS X 的 out-of-box 用户体验确实不是只用来蒙初学者的。连 developer 的工具也能准备齐全。但我还是*习惯 P4merge。于是试着配置:

git config –global diff.tool p4merge
git config –global \
difftool.p4merge.cmd /Applications/p4merge.app/Contents/MacOS/p4merge

然后运行『 git difftool 』,P4merge 是调用起来了,但是没有内容。原来 Git 缺省不会向 diff 工具传递参数,必须写到命令行配置里:

git config –global \
“difftool.p4merge.cmd \
/Applications/p4merge.app/Contents/MacOS/p4merge \”\$LOCAL\” \”\$REMOTE\””

这里还有一个陷阱,在某些 shell 里,『 $ 』是不用加转义的。不过在 OS X 的 bash 里必须加。

Mac、Linux更换命令行svn diff为P4Merge、vimdiff

今天学习git的时候,说可以自己定义一个merge和diff程序来替换git diff命令执行时默认的diff程序,正好我*近天天在mac的Terminal上敲打着svn diff,就想尝试能不能把svn的默认diff也替换掉,可是又不知道svn的svn diff命令默认配置在哪里,于是Google到了上面那位大神了。(大神就是大神,我刚想到的东西大神已经玩烂了)

不扯了,上面就是这篇笔记的产生背景,希望可以给后续有类似想法的同行们和记忆力*差的自己留个“案底”。

*步:下载、安装P4Merge(一个不错且免费的合并和解决冲突的图形化工具)

下载地址:www.perforce.com/product/components/perforce-visual-merge-and-diff-tools

Mac下安装目录:/Applications/p4merge.app/Contents/MacOS/p4merge

第二步:写两个简单的shell脚本,特别简单

脚本1:  /usr/local/bin/extMerge:

1 #!/bin/sh
2 /Applications/p4merge.app/Contents/MacOS/p4merge $*

 

脚本2:  /usr/local/bin/extDiff:

1 #!/bin/sh
2 /usr/local/bin/extMerge "$6" "$7"

确认这两个脚本是可执行的:

1 $ sudo chmod +x /usr/local/bin/extMerge
2 $ sudo chmod +x /usr/local/bin/extDiff

第三步:修改~/.subversion/config文件,

将其中

1 # diff-cmd = diff_program (diff, gdiff, etc.)

替换成

1 diff-cmd = /usr/local/bin/extDiff

第四步:执行下source ~/.subversion/config,会输出有一些错误,不用管!骚年,任性的去执行svn diff吧,看看发生什么了。

第五步:替换vimdiff。(请移步文章开始的大神博客地址吧),下面就是从大神哪里抄来的vimdiff替换方式。

 

Note:

无耻的抄袭下大神的shell脚本,你不会咬我吧。(以防那天大神不开心,不让我们学习拜读怎么办)

#!/bin/sh
# 配置你喜欢的diff程序路径
DIFF="vimdiff"
# SVN diff命令会传入两个文件的参数 
LEFT=${6}
RIGHT=${7}
# 拼接成diff命令所需要的命令格式
$DIFF $LEFT $RIGHT

把这个文件改名为svndiff,放在/usr/local/bin/目录里,并给执行权限,剩下的替换操作如上。

windows 命令行使用p4

首先,p4的命令行真的恶心,要不是非要用我一定换成git(逃)

参考网站:https://www.perforce.com/manuals/v15.1/cmdref/p4_add.html

全程尝试各种命令的参数,真的很难受。以下是我用到的命令。亲试

1、revert: p4 revert -a -c changelist 使用该命令进行revert掉所有未修改文件
2、add: p4 add dir\*.lua *.csv … 使用该规则进行dir目录下所有文件的新增
3、sync: p4 sync -k dir\… 使用该命令进行目录下资源同步
4、checkout: p4 edit dir\… edit目录dir下所有文件
5、opened p4 opened -c default 显示default的changelist所有的待提交资源
6、submit p4 submit -d “这里是提交日志” dir\… p4提交 (p4 的P4COMMANDCHARSET=auto,否则会出现提交日志无效的问题)

7、login echo passwd|p4 login 密码不允许使用“”,与|之间无空格(windows命令)

Perforce的各种命令

在以前的公司代码控制用的是CVS,到这家公司用的是Perforce,中国恐怕没有几家公司用这个玩意,老美的爱好,又或者是Expedia那帮MS出身的爱好。

今天对于Perforce的命令行稍做了些研究,主要用到了以下这些常用的命令:
[color=blue]p4 user
p4 client
p4 add, p4 edit, p4 open
p4 submit
p4 revert
p4 integrate
p4 resolve[/color] 等等.

重点是理解Perforce里面的Integration/Branch机制。在以前,并没有接触过通过SCM来进行代码的版本控制,这是*次真正地使用到。

[color=blue]p4 integrate a.txt b.txt[/color]
执行这条命令的具体效果分几种情况:
1. 如果b.txt不存在, 或者之前并不作为a.txt的分支存在, 那么integrate命令将做branch动作, 即将b.txt生成为a.txt的branch. 注意, 这里如果b.txt之前存在并且不作为a.txt的branch存在, 必须增加 -i 参数强制将其作为a.txt的branch.
2. 如果b.txt已经存在, 并且之前已经是a.txt的branch, 那么integrate命令将做merge动作, 将a.txt的修改更新到b.txt上, 并更新b.txt的版本号.

以上两种情况, 只要b.txt以前已经存在, 都有可能涉及到resolve来解决代码冲突.
关于resolve, p4提供了一系列的选项, 无非就是accept who了, 这里就不细说了.

integrate 还有一种用法, 如下:
[color=blue]p4 integrate -b aBranch[/color]

其中aBranch是事先用这个命令定义的:
p4 branch aBranch
在aBranch的view当中将定义代码间的integrate关系, 这样做的好处是可以在一个branch中定义多个integrate关系, 然后利用p4 integrate -b aBranch一次性integrate多个文件, 省去了一个一个文件更新的步骤.

如在aBranch中定义view时这样定义:
[color=blue]//depot/a.txt… //depot/b.txt
//depot/c.txt… //depot/d.txt[/color]

这样integrate这个branch时, 就可以一次性integrate两个文件了.

integrate的几个常用参数:
-i target之前与source无版本关联, 强制target成为source的branch;
-f 不比较target branch的版本是否与source版本对应, 强制执行integrate;
-d 当source文件删除时, integrate将删除target对应文件; 当target文件删除, integrate将re-branch source的对应文件到target.

对于其他SCM工具的版本控制, 日后还要多多研究, 估计大同小异.

Perforce的环境变量配置

1. 如果使用的是Perforce的可视化的Client的话,

Connection, user,name,password等都是可以在页面上设置的

可以如果想使用command的操作或是自动化代码更新的话, 就要配置相应的环境变量了

 

在系统的环境变量中加入以下配置:

P4PORT=IP:port(Port default as 1666)

P4USER=

P4CLIENT=

 

可以使用p4 info查看当前的信息

 

 

然后使用命令: P4 login 登录看看是否可以成功。如果遇到字符集的原因不能登陆的话, 就要配置

 

P4CHARSET=

P4COMMANDCHARSET=

 

设置成和P4服务匹配的字符集

字符集的设置有:

none, utf8, utf8-bom, iso8859-1, shiftjis, eucjp, iso8859-15,
iso8859-5, macosroman, winansi, koi8_r, cp1251,
utf16, utf16-nobom, utf16le, utf16le-bom, utf16be,
utf16be-bom, utf32, utf32-nobom, utf32le, utf32le-bom, utf32be,
or utf32be-bom

Linux 下 perforce命令行工具 p4的配置

去perforce 网站 http://www.perforce.com/downloads/Perforce/Customer 下载,或者直接在linux终端用wget 下载,加上执行权限,并放到/usr/local/bin下。

$ wget http://filehost.perforce.com/perforce/r14.1/bin.linux26x86/p4
$ chmod u+x p4
$ sudo cp p4 /usr/local/bin/

编辑 ~/.bashrc 文件加入下面一些变量
export P4USER=jschen
export P4PORT=192.1.1.1:1666
export P4EDITOR=vim
export P4IGNORE=p4ignore
export P4CLIENT=jschen-fedora

登录perforce服务器,设置workspace
[jschen@10.12.6.197:~]$ p4 login
Enter password:
User jschen logged in.
[jschen@10.12.6.197:~]$ p4 client

更改 Root 和View选项
Client: jschen-fedora
Root: /back/code/
View:
//my_project/… //jschen-fedora/my_project/…

 

Linux服务器网络运维监控软件

要让服务器运行良好而且平稳的话,一个非常艰巨重大的任务就是做好网络运维管理。网络管理员使用了许多工具来监视服务器的运行状况,并查看网络流量的上升和下降状况。他们还必须确保整个服务器网络能够平稳地运行,因为只要有一分钟的网络中断就会使得整个机构的工作出现混乱。

使得服务器网络平稳运行的*重要的方式之一就是使用各种网络运维管理软件。现有的网络运维管理软件可以说是多种多样的,但是这些工具往往比较昂贵,因此花些时间去选购是很值得的,需要仔细研究其适用性、性能、专业性等方面的特性,需要判断的因素很多,但短时间内理解这些指标并作出选择可不是一件容易的事。

随着现今互联网行业的迅速发展,某些物联网服务的用户已经达到了亿级,如淘宝网注册用户已达到3.7亿,仅在2015年双十一当天活跃用户过亿。支撑如此庞大用户使用的硬件基础是规模庞大的服务器群。如何获取每一台服务器的运行状态,及时获悉潜在隐患,出现问题及时锁定排除显得至关重要。机房运维人员以及高层决策人员只有在实时掌握这些信息后才可有效地对进行决策,如在访问流量过大或其他恶意攻击后是及时关闭服务还是启动备用服务,服务区瘫痪后是需要工作人员至机房处理硬件问题还是只需远程重启服务器等类似或简单或复杂的决策,都需要底层专家系统信息的支持。

现今比较成熟的开源服务器底层数据的采集解决方案主要有SugarNMS和Nagios。

服务器运维监控软件之 Nagios
Nagios是一个监视系统运行状态和网络信息的监视系统,能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的Web界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。

Nagios 可以监控的功能有:
监控网络服务(SMTP、POP3、HTTP、NNTP、PING等); 2、监控主机资源(处理器负荷、磁盘利用率等);

简单地插件设计使得用户可以方便地扩展自己服务的检测方法; 4、并行服务检查机制;

具备定义网络分层结构的能力,用”parent”主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;

当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);

可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用; 8、自动的日志滚动功能;

可以支持并实现对主机的冗余监控;

可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等[2]; 11、可以通过手机查看系统监控信息;

服务器运维监控软件之SugarNMS
智和网管平台主要基于SNMP网络协议对服务器进行运维监控,当然如果是其他协议的设备也可以进行协议扩展。

平台采用了J2SE、XML、Web Service、Web、HTML5、JavaScript、Struts、Spring、Hibernate、SNMP、HTTP、JDBC、Swing、RMI、O-M Mapping、O-R Mapping、Muti-Thread等成熟技术。由表示层、业务层、数据层和设备中间层多层次架构模式组成,提供corba和webservice接口。框架采用设备中间层屏蔽不同厂商设备管理协议的差异,实现支持管理不同类型的被管设备。

自动发现服务器
在自动发现的过程中可以搜索到服务器,并识别服务器的厂商型号,生成设备的面板图或搜索设备资源,如:板卡、端口、CPU、内存、磁盘等。自动设备生成拓扑图。
%title插图%num

服务器综合性能查看

在拓扑图上选中服务器,点击右键,选择设备综合信息。即可查看服务的总体报告、详细信息、管理建议等信息。

%title插图%num

服务器故障监控
智和网管平台实时动态监控网络和设备的运行状态。通过告警来反映设备的运行状态。设备的某个故障监视器(工作状态监视器),在某个时刻只能有一个状态。设备有多少个故障监视器,就有多少个对应的状态灯。

设备和资源图标上会显示设备*严重的状态灯颜色,如设备有4个故障监视器,对应的是红、黄、蓝、绿5个状态灯,那么在设备图标上显示红灯。同样网络图标上会显示网络下*严重的设备状态灯颜色。如网络下有2个设备,一个设备*严重的是红色,另一个设备*严重的是黄色,则网络显示红色。

智和网管平台实时在拓扑界面、资源视图、全网工作状态、告警列表中显示告警信息。

 

服务器性能监控
全面采集服务器资源、应用、服务等性能信息。可将性能信息数据按照时间、资源、性能类型等多种维度以图表等形式展现。支持根据资源类型、监视器种类、时间间隔组合条件查看设备某类资源的实时性能数据;根据时间范围,资源监视器类型以图形和列表的方式展示设备的单个资源的详细性能值。

%title插图%num

其他常用功能
自动发现:在自动发现的过程中可搜索到网络设备,并识别设备类型和厂商型号,生成设备的面板图或搜索设备资源,如:板卡、端口、CPU、内存、磁盘等,并发现设备之间的链路关系。

拓扑管理:以具象化拓扑图方式展示网络设备及其连接关系,用户可编辑。通过拓扑图可以对设备、设备资源、连接进行管理。

设备管理:通过拓扑视图中,用户可以方便的管理设备及其配置参数。

设备资源管理:支持在拓扑图的基础上,进一步展示设备细节,包括设备的物理组件,服务器上的服务(Web服务器、中间件应用服务、数据库服务器、邮件服务器)或者用户定义的其他监控对象。

连接管理:用户可以通过拓扑视图编辑连接,选择连接实时显示的性能数据项。

安全管理:支持多种安全管理功能,如QOS安全策略、MAC-IP绑定、黑白名单以及准入控制等。

统计报表:支持多项数据的统计功能,让用户对网络有一个全面直观的了解放。支持将软件中的统计图表导出或打印,以便备份或对比查看。

整个系统利用智和网管平台开源服务器运维监控解决方案,同时进行二次开发和扩展集成。实现了一套可管理、可监控、可报警的服务器运维监控专家系统。本平台实现了用户对机房的管理与运维监控,更重要的是利用这些信息来与其兄弟单位、子单位以及服务单位的数据对接联通情况。保证了用户可以实时、清晰、准确地了解预报中心各级业务环节的运行状态。一旦出现问题,用户可以及时根据这些信息进行决策,保证业务信息点及时发布。

Linux监控系统(三)

添加自定义监控项目
需求:监控某台web的80端口连接数,并出图
两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
对于*步,需要到客户端定义脚本
vim /usr/local/sbin/estab.sh //内容如下
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ‘:80 ‘ |grep -c ESTABLISHED
chmod 755 /usr/local/sbin/estab.sh
客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf//增加
UnsafeUserParameters=1 //表示使用自定义脚本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
//自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh
重启zabbix-agent服务 systemctl restart zabbix-agent

首先到服务端验证,执行命令
zabbix_get -s 192.168.133.132 -p 10050 -k ‘my.estab.count‘
然后在zabbix监控中心(浏览器)配置增加监控项目
键值写my.estab.count
添加该项目后,到“监测中” “*新数据”查看刚添加的项目是否有数据出现
有了数据就可以添加图形了
“配置”“主机” “图形” “创建图形”

配置邮件告警
• 使用163或者QQ邮箱发告警邮件

• 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务

• 开启并记录授权码

• 然后到监控中心设置邮件告警

• “管理”,“报警媒介类型”,“创建媒体类型”

• {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

创建报警脚本mail.py
vim /usr/lib/zabbix/alertscripts/mail.py//内容参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing”,注意用户的权限,如果没有需要到用户组去设置权限
设置动作,“配置”,“动作”,“创建动作”,名称写“sendmail”(自定义),“操作”页面,内容如下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
“新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类

“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”
切换到“恢复操作”,把信息改成如下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
点击“新的”,“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”
测试告警

服务器日常运维工具

网络流量负载情况监控

sar -n DEV  [interval]   [count]    # internal参数是统计间隔,count参数是统计次数

%title插图%num

执行会回显以上字段

IFACE:网络接口名称

rxpck/s、txpck/s: 每秒收或发的数据包数量

rxkB/s、txkB/s:每秒收或发的字节数,以kB/s为单位

rxcmp/s、txcmp/s:每秒收或发的压缩过的数据包数量

rxmcst/s:每秒收到的多播数据包

 

iftop的使用

iftop  [-i  interface]   # -i后跟的interface表示网络接口,若不指定则默认加测*块网卡使用情况

常用方法: iftop  -i  eth0  -P    # -P参数将会显示请求端口,可以看出流量较高的是哪个端口建立的链接

进入iftop界面后,可以通过按下相应的字母快捷按键,来对显示结果进行调整。

h:切换是否显示帮助。
n:切换显示本机的IP或主机名。
s:切换是否显示本机的host信息。
d:切换是否显示远端目标主机的host信息。
t:切换显示格式为2行、1行、只显示发送流量或只显示接收流量。
N:切换显示端口号或端口服务名称。
S:切换是否显示本机的端口信息。
D:切换是否显示远端目标主机的端口信息。
p:切换是否显示端口信息。
P:切换暂停或继续显示。
b:切换是否显示平均流量图形条。
B:切换计算2秒或10秒或40秒内的平均流量。
T:切换是否显示每个连接的总流量。
l:打开屏幕过滤功能,输入要过滤的字符。比如输入相应IP地址,回车后,屏幕就只显示这个IP相关的流量信息。
L:切换显示画面上边的刻度,刻度不同,流量图形条会有变化。
j或k:向上或向下滚动屏幕显示的连接记录。
1或2或3:根据右侧显示的三列流量数据进行排序。
<:根据左边的本机名或IP排序。
>:根据远端目标主机的主机名或IP排序。
o:切换是否固定只显示当前的连接。
f:编辑过滤代码。
!:调用shell命令。
q:退出

 

使用sar工具查看Linux实例各项资源使用情况

sar是System Activity Reporter(系统活动情况报告)的缩写。sar工具对系统状态进行取样后,通过计算数据和比例来表达系统当前的运行状态。其特点是可以连续对系统取样,获得大量的取样数据。其取样数据和分析结果可以存入文件,所需的负载很小。

sar是Linux系统中较为全面的性能分析工具,可以从多个方面对系统的活动进行监控和报告,包括文件读写情况、系统调用使用情况、串口、CPU效率、内存使用情况、进程活动及IPC有关的活动情况等等。

  1. yum install sysstat            #安装sar工具
  2. /etc/init.d/sysstat start      #启动服务

查看CPU负载

  1. sar -u 1 5
  2. Linux 3.10.0123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)
  3. 10:16:35 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
  4. 10:16:36 AM     all     14.14      0.00      1.01      0.00      0.00     84.85
  5. 10:16:37 AM     all     14.14      0.00      0.00      1.01      0.00     84.85
  6. 10:16:38 AM     all      0.00      0.00      1.01      0.00      0.00     98.99
  7. 10:16:39 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
  8. 10:16:40 AM     all      1.00      0.00      0.00      0.00      0.00     99.00
  9. Average:        all      5.86      0.00      0.40      0.20      0.00     93.54

注:%user:用户模式下消耗的CPU时间比例。
%nice:通过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间比例。
%system:系统模式下消耗的CPU时间比例。
%iowait:CPU等待磁盘I/O导致空闲状态消耗的时间比例。
%steal:利用Xen等操作系统虚拟化技术,等待其它虚拟CPU计算占用的时间比例。
%idle:CPU空闲时间比例。

查看平均负载

  1. sar -q 1 60
  2. Linux 3.10.0123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)
  3. 10:23:13 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
  4. 10:23:14 AM         0       142      0.00      0.01      0.05         0
  5. 10:23:15 AM         0       142      0.00      0.01      0.05         0
  6. 10:23:16 AM         0       142      0.00      0.01      0.05         0
  7. 10:23:17 AM         0       142      0.00      0.01      0.05         0
  8. 10:23:18 AM         0       142      0.00      0.01      0.05         0
  9. 10:23:19 AM         0       142      0.00      0.01      0.05         0
  10. Average:            0       142      0.00      0.01      0.05         0

注:指定-q参数后,可以查看运行队列中的进程数、系统上的进程大小、平均负载等信息。与其它命令相比,随时间变化查看各项指标的情况。

runq-sz:运行队列的长度,即等待运行的进程数。
plist-sz:进程列表中进程(processes)和线程(threads)的数量。
ldavg-1:*后1分钟的系统平均负载。
ldavg-5:过去5分钟的系统平均负载。
ldavg-15:过去15分钟的系统平均负载。

查看内存负载

  1. sar -r 1 3
  2. Linux 3.10.0123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)
  3. 10:27:34 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive  kbinact  kbdirty
  4. 10:27:35 AM    275992    740664     72.85    181552    315340    362052     35.61    471216   115828       60
  5. 10:27:36 AM    276024    740632     72.85    181552    315340    362052     35.61    471220   115828       64
  6. 10:27:37 AM    276024    740632     72.85    181552    315340    362052     35.61    471220   115828       64
  7. Average:       276013    740643     72.85    181552    315340    362052     35.61    471219   115828       63

注:kbmemfree:该值和free命令中的free值基本一致,它不包括buffer和cache空间。
kbmemused:该值和free命令中的used值基本一致,它包括buffer和cache空间。
%memused:物理内存使用率,该值是kbmemused和内存总量(不包括Swap内存)的百分比。
kbbuffers和kbcached:这两个值和free命令中的buffer和cache一致。
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存,即RAM加上Swap的内存。
%commit:该值是kbcommit与内存总量(包括Swap内存)的百分比。

查看页面交换发生的状况

  1. sar -W 1 3
  2. Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ) 07/04/2016 _x86_64 (1 CPU)
  3. 10:28:59 AM pswpin/s pswpout/s
  4. 10:29:00 AM 0.00 0.00
  5. 10:29:01 AM 0.00 0.00
  6. 10:29:02 AM 0.00 0.00
  7. Average: 0.00 0.00
  8. 注:pswpin/s:每秒从交换分区到系统的交换页面(Swap page)数量。
  9. pswpout/s:每秒从系统交换到Swap的交换页面(Swap page)的数量。

sar: 各参数说明

  1. sar命令的参数说明如下,注意区分大小写。
  2. -A:汇总所有的报告
  3. -a:报告文件读写使用情况
  4. -B:报告附加的缓存的使用情况
  5. -b:报告缓存的使用情况
  6. -c:报告系统调用的使用情况
  7. -d:报告磁盘的使用情况
  8. -g:报告串口的使用情况
  9. -h:报告关于buffer使用的统计数据
  10. -m:报告IPC消息队列和信号量的使用情况
  11. -n:报告命名cache的使用情况
  12. -p:报告调页活动的使用情况
  13. -q:报告运行队列和交换队列的平均长度
  14. -R:报告进程的活动情况
  15. -r:报告没有使用的内存页面和硬盘块
  16. -u:报告CPU的利用率
  17. -v:报告进程、i节点、文件和锁表状态
  18. -w:报告系统交换活动状况
  19. -y:报告TTY设备活动状况