我想咨询一下这段linuxlinux内核代码多少行是什么意思

帮我看看这段LINUX代码是什么意思?_百度知道
帮我看看这段LINUX代码是什么意思?
想在虚拟机上使用minidwep-gtk,但一直提示没有网卡,一块笔记本的网卡是瑞昱RTL8105E,另一块是外接的TL-WN822N急~
我有更好的答案
很明显你这台机器只有一个网卡,或者你只启用了一个网卡(ONBOOT了),貌似某些情况下如果修改,配置位于/etc/sysconfig/network-script/ifcfg-ethx,编辑可配置。在ubuntu中是另一种模式,不要奇怪,这就是IPV6的IP地址...0,会导致不能联网。inet6 addr 很好奇,你为什么不是inet4而是6,为毛没看到网关和子网掩码?lo表示local,127.0.0.1表示的术语叫 &回环地址&.0;centos等linux系统中..,内网都不行,难道你穿越到未来,在用IPV6上网吗?一般我们都是禁用IPV6的。fe80。在红帽redhat&#47linux的root下,ifconfig命令出来的网络卡配置信息,127,就是无论你本机的IP怎么变。ethx表示第x+1块网卡名称.....这一串是IP地址,对的。主要关心的是:HWaddr 硬件地址,相当于mac地址.1总是表示本机主机::20c:!不知道是不是我不懂IPV6
弱弱问,我在国外算原因吗?
也许算个原因...我不清楚国外的情况,但这解释不了IPV6没有网关啊!
采纳率:44%
来自团队:
conf# Uncomment the next line to enable packet forwarding for IPv4#net.ipv4.我的是Ubuntu 之前就是这样做的/etc/sysctl,应该默认成时IPV4的你这是只找到IPV6没有IPV4
老是提示command not found & 求教啊!
你这是由 ifconfig命令显示出来的网卡信息,eth0是第一块网卡,一次类推,eth1就是第二块了。。。lo就是loop环回回路,测试网卡配置用的,127.0.0.
晕 linux代码
ifconfig 现实的结果
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
linux的相关知识
换一换
回答问题,赢新手礼包我想学LINUX,系统我已基本熟悉,我想学得更深入一些,比如LINUX的源码分析,不知各位高手有何建议?比如有什么书值得推荐?谢谢!我上爱问并获得积分就是想问这个,希望不要让我失望!
学习linux最好也最值得去学的是源码分析,因为只有做好了这项工作,才能搞操作系统,尤其是嵌入式系统——一个现在包括以后的很长一段时间内会是一个很热门的东西。可以说LINUx是中国的系统软件,包括嵌入式系统,开发自己的系统,在计算机领域打出一片自己的天下的很好的契机。
有一本书很值得一看,是赵炯的《Linux内核完全注释》,我有电子版本,但太大了,如果你需要可以给我发信息。我可以传给你。不过我还是喜欢看纸版的书,因此我又买了一本。
你也可以去买一本,相信我,这本书很值得买的。
其他答案(共9个回答)
包,而不是使用现成的rpm包或者deb包,这样就可以慢慢理解linux中编译的过程了,然后再试着独立编译一下linux的内核
到了有一定的基础以后可以学者看看内核的源代码了,不过现在2.6版本的内核已经非常的大了,所以最好选一个版本较低的,例如0.02版的,不要过于好高骛远,...
建议还是先把c语言的基础打好吧,然后学者装一下常用的各种发行版本,了解一下,然后试着慢慢装上gcc,学者编译一些常用的相关信息包,而不是使用现成的rpm包或者deb包,这样就可以慢慢理解linux中编译的过程了,然后再试着独立编译一下linux的内核
到了有一定的基础以后可以学者看看内核的源代码了,不过现在2.6版本的内核已经非常的大了,所以最好选一个版本较低的,例如0.02版的,不要过于好高骛远,先学一下linux内核的基本结构,等能够有些了解了,如果想从事内核开发,再慢慢学习新版本的内核
这不是好大喜功,这叫基础资源积累,没有沉默,那有爆发?多学些知识,说不定哪天会用到,没坏处的.中国就因为有了众多思想家,才导致实干家的卓越成绩,没有他人的的思想处理,你能一步登天吗?除非你是爱因斯坦~~~~所以说话时,请区分作白日梦与进行思想推理的区别.
你是不是不喜欢知识积累?那么最好的体现是在辩论中会缺乏论据,不知你是否试过.
不要诋毁房主,在这儿人人都是朋友,都在进行对知识的神圣追求,友好相处~~~友好相处!!!
中国人就是喜欢好大喜功,或者做一些不切实际的事情。
先不要管以楼主的水平是否能够真正看懂内核源代码。我们假定楼主能够看懂内核源代码,那又怎样呢?你是否会为kernel的发展贡献自己的力量,又或者你能够从kernel的代码风格中获益以便在自己的工作中受用?我想大多数人都无法正视这两个问题。
中国并不缺少思想家,缺少的是实干家。与其做一些虚无飘渺的事情,不如脚踏实地搞一些应用开发。为什么大家都在说Linux无法在桌面突破,最重要的原因是缺乏杀手级的桌面应用。
楼主既然问出这个问题来,就表明他不是一个有志于研究Linux的人,也不是一个善于研究的人。如果他要是真有心,就应该一股脑投入进去,还要别人来给意见?
我并不是泄楼主的气,而是有太多和楼主一样的人,抱着要阅读内核的雄心壮志,结果呢?还不是白白的把钱送给了那些不知所谓的书商(会点小聪明的知道从网上下载书看),自己还是什么也没学会。稍微有点成绩的,会对着内核大赞一番,仅此而已。
现在可以用的版本的linux,界面和Windows差不多,但桌面功能没有Windows强大;
命令行功能比DOS强大,Linux的命令行可以完成所有的操作,简单...
红旗这个东西安装的时候都配置好的
什么都不用配置 而且操作接近XP
现在这上面熟悉熟悉环境
比如目录结构啦 命令啦之类的东西
都说ubuntu简...
比较适合的版本是fedora(红帽的桌面版)
ubuntu 这是目前使用比较广的一个版本
我建议你学习使用fedora,目前版本是17,很稳定好用
嵌入式Linux工程师的学习需要具备一定的语言基础,如果之前学过但之后就不再用的朋友,建议大家在学习之前先复习一下语言基础这块。关键的一点是,复习时不能只关注基...
如果你仅仅是玩一下,下载一个傻瓜型的比如ubuntu,用虚拟机安装线熟悉一下
如果你要在linux做开发应用,那么你应该下载一个比较广泛的发行版,比如redeh...
答: 如果这种情况下,你一定要去医院检查一下,看看,有可能会是先兆性流产,让医生给你看看孕酮低不低,吃点保胎药,多卧床休息
答: 比如常见的网吧电脑用的就是无盘网络技术。
优点:资源共享,节省资金。
缺点:访问速度慢,容易中毒!
答: dos下,输入netsh winsock reset 回车后重起.
或开始--运行--输入cmd --确定--弹出窗口后输入netsh winsock rese...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415背景介绍:
目前,在线上环境中,大家需要在家里远程访问很多受限的服务器页面,而这些服务器是通过自动伸缩创建的,IP地址变化很频繁,因此很难通过在VPN中添加删除静态路由的方式让大家访问。
因此,我一直通过创建SSH Tunnel的方式,利用一台固定的白名单主机去访问那些服务器。在此,将我的脚本分享给大家。
脚本地址:
面试题内容:
需求:以"|"为分隔符,打印第一字段第一个字符是1,第二个字段第二个字符是2,第三个字段第三个字符是3,以此类推;倒数第二个字段前8个字符是当天日期如“”。
源文件raw_data.txt:
1|12|a7f865ce-b274-4b23-890c-893c7d1f2198||||4
3|22|bd166d4f--a277-deb543db1a9d||||36|
1|a2af|a-4d4c-b56f|g5dfg|||37
1|222|1f3fe-4459-a1ee|sad4sadf|adsa5dfd|6092002|
<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb
1|12|a7f865ce-b274-4b23-890c-893c7d1f2198||||43|22|bd166d4f-5222-4d69-a277-deb543db1a9d||||36|1|a2af|1135ea2-067a-4d4c-b56f||308g5dfg|||371|222|1f3f1950-6b0e-4459-a1ee|sad4sadf|adsa5dfd|7746765||
$ date +%Y%m%d
<div class="crayon-num" data-line="crayon-5a21fb
我用Python实现的代码:
$ ./check_string.py
Matched: 1|a2af|a-4d4c-b56f|g5dfg|||37
<div class="crayon-num" data-line="crayon-5a21fb
Matched: 1|a2af|1135ea2-067a-4d4c-b56f||308g5dfg|||37
#!/usr/bin/env python
import datetime
def check_item(string):
item_list = string.split('|')
for item_id in range(0,len(item_list)):
item_sub_list = list(item_list[item_id])
except IndexError:
return False
special_item_id = len(item_list) - 2
expect_item_sub_value = item_id + 1
if item_id != special_item_id:
if not item_sub_list[item_id] != expect_item_sub_value:
return False
except IndexError:
return False
if not datetime.datetime.now().strftime("%Y%m%d") == ''.join(item_sub_list[0:8]):
return False
return True
if __name__=='__main__':
filename = 'raw_data.txt'
with open(filename) as fp:
for line in fp:
if check_item(line.replace('\n','')):
print "Matched: {0}".format(line.replace('\n',''))
网友“运维@苏东”用awk实现的代码:
$ cat raw_data.txt | awk -F\| 'BEGIN{d=strftime("%Y%m%d")} { i=1;j=NF-1;k=0;while(i&j-1){if ( substr($i,i,1) == i ){k++;}; i++}; if (k==i-1 && substr($j,1,8) == d && substr($NF,NF,1) == NF) {print $0} }'
1|a2af|a-4d4c-b56f|g5dfg|||37
1|a2af|1135ea2-067a-4d4c-b56f||308g5dfg|||37
参考资料:
背景介绍:
在我们的线上Hadoop集群中,采用了Oozie来作为Workflow的管理,而平时有不少Workflow在执行过程中会因为各种问题而失败。
于是,我们通常都会通过Oozie Web Console去Troubleshooting,但是整个过程并不方便,在研究了Oozie API之后,我写了一个脚本来自动化的帮我们完成绝大部分的Troubleshooting步骤。
具体配置:
整个脚本需要模拟的Troubleshooting思路如下:
1. 获取整个Workflow所有步骤的信息,通常的状态有:OK,RUNNING,FAILED,KILLED,ERROR
2. 对FAILED,KILLED,ERROR状态的步骤,首先获取其consoleUrl,然后进一步获取更有价值的logsLinks,同时打印相关的调试信息,并导出该步骤的相关XML配置文件
脚本地址:
执行示例:
[dong@idc1-server1 ~]$ debug_oozie_job.py --server idc1-hive1 --job_id -oozie-oozi-C@2387
##################################
externalId: -oozie-oozi-W
status: 'OK', name: 'fork-1'
status: 'OK', name: ':start:'
status: 'OK', name: 'check-point'
status: 'OK', name: 'daily-decision'
status: 'OK', name: 'extract-labelpair-profiles'
status: 'OK', name: 'extract-web-profiles'
status: 'ERROR', name: 'extract-nobid-profiles'
consoleUrl: 'http://idc1-:8100/proxy/application_9_227279'
logsLinks:
http://idc1-:19888/jobhistory/logs/idc1-:43483/container_9__000002/attempt_9_227279_m_/oozie
status: 'ERROR'
retries: '0'
transition: 'email-error'
stats: 'None'
startTime: 'Tue, 24 May :19 GMT'
toString: 'Action name[extract-nobid-profiles] status[ERROR]'
cred: 'null'
errorMessage: 'None'
errorCode: 'None'
consoleUrl: 'http://idc1-:8100/proxy/application_9_227279'
externalId: 'job_9_227279'
externalStatus: 'FAILED/KILLED'
conf: '/tmp/-oozie-oozi-C@2387_extract-nobid-profiles.xml'
type: 'map-reduce'
trackerUri: 'idc1-rm1:8032'
externalChildIDs: ''
endTime: 'Tue, 24 May :42 GMT'
data: 'None'
id: '-oozie-oozi-W@extract-nobid-profiles'
name: 'extract-nobid-profiles'
status: 'OK', name: 'extract-data-profiles'
status: 'OK', name: 'extract-optout-profiles'
status: 'OK', name: 'fail'
status: 'OK', name: 'email-error'
##################################
Please check the URLs in "logsLinks" above for detailed informations.
Do NOT ignore the messages in "Log Type: stdout".
<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb
[dong@idc1-server1 ~]$ debug_oozie_job.py --server idc1-hive1 --job_id 0011096-195-oozie-oozi-C@2387##################################externalId: 0061222-195-oozie-oozi-Wstatus: 'OK', name: 'fork-1'status: 'OK', name: ':start:'status: 'OK', name: 'check-point'status: 'OK', name: 'daily-decision'status: 'OK', name: 'extract-labelpair-profiles'status: 'OK', name: 'extract-web-profiles'status: 'ERROR', name: 'extract-nobid-profiles'&&consoleUrl: 'http://idc1-:8100/proxy/application_9_227279'&&logsLinks:&&&&http://idc1-:19888/jobhistory/logs/idc1-:43483/container_9__000002/attempt_9_227279_m_/oozie&&*DEBUG*:&&&&status: 'ERROR'&&&&retries: '0'&&&&transition: 'email-error'&&&&stats: 'None'&&&&startTime: 'Tue, 24 May :19 GMT'&&&&toString: 'Action name[extract-nobid-profiles] status[ERROR]'&&&&cred: 'null'&&&&errorMessage: 'None'&&&&errorCode: 'None'&&&&consoleUrl: 'http://idc1-:8100/proxy/application_9_227279'&&&&externalId: 'job_9_227279'&&&&externalStatus: 'FAILED/KILLED'&&&&conf: '/tmp/-oozie-oozi-C@2387_extract-nobid-profiles.xml'&&&&type: 'map-reduce'&&&&trackerUri: 'idc1-rm1:8032'&&&&externalChildIDs: ''&&&&endTime: 'Tue, 24 May :42 GMT'&&&&data: 'None'&&&&id: '-oozie-oozi-W@extract-nobid-profiles'&&&&name: 'extract-nobid-profiles'status: 'OK', name: 'extract-data-profiles'status: 'OK', name: 'extract-optout-profiles'status: 'OK', name: 'fail'status: 'OK', name: 'email-error'##################################Please check the URLs in "logsLinks" above for detailed informations.Do NOT ignore the messages in "Log Type: stdout".
参考资料:
背景介绍:
在我们的线上环境中,有大量的物理实体服务器,主要用于对配置要求很高的Hadoop集群。
通常在这些服务器中,都配置了RAID卡并且挂载有16块大小至少为3T的硬盘,由于Hadoop集群的IO密集型特征,不少硬盘经常不堪重负而损坏,因此对RAID磁盘健康状态的检查,非常有必要。
具体配置:
整个脚本的思路如下:
1. 通过MegaCli64分别获取异常状态的信息,通常有Degrade,Offline,Critical,Failed等状态
2. 将获取到的异常状态汇总,并提取出有问题的磁盘槽位信息
脚本地址:
执行示例:
[root@idc1-server1 ~]# /usr/local/nagios/libexec/check_megaraid_status
CRIT - Virtual Drives: {Degraded: 0, Offline: 2}, Physical Disks: {Critical: 0, Failed: 2}, Bad Drive: [{adapter: 0, enclID: 2, slot: 7, Span ref: 8, Row: 0}, {adapter: 0, enclID: 2, slot: 1, Span ref: 2, Row: 0}]
<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb
[root@idc1-server1 ~]# /usr/local/nagios/libexec/check_megaraid_statusCRIT - Virtual Drives: {Degraded: 0, Offline: 2}, Physical Disks: {Critical: 0, Failed: 2}, Bad Drive: [{adapter: 0, enclID: 2, slot: 7, Span ref: 8, Row: 0}, {adapter: 0, enclID: 2, slot: 1, Span ref: 2, Row: 0}]
背景介绍:
关于运维工具,网上已经有前辈用了三张图表,将系统各个层面的性能调优,性能监控,性能测试都进行了总结。
我觉得非常有必要再学习一次,因此打算将这三张图贴到本文当中,并且在之后不断的完善,针对各个命令做一些简单的介绍,并跟上用例。
图表浏览:
工具详解:
话不多说,具体内容如下:
haproxy-1.5.17.spec
The Reliable, High Performance TCP/HTTP Load Balancer
System Environment/Daemons
http://www.haproxy.org
haproxy-1.5.17.tar.gz
Willy Tarreau
BuildRequires:
gcc gcc-c++ autoconf automake cmake openssl openssl-devel pcre pcre-devel pcre-static
Requires: pcre pcre-devel pcre-static openssl openssl-devel
%description
HAProxy is a free, very fast and reliable solution offering high availability,
load balancing, and proxying for TCP and HTTP-based applications.
tar xzvf $RPM_SOURCE_DIR/haproxy-1.5.17.tar.gz
cd haproxy-1.5.17/
make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_CPU_AFFINITY=1
rm -rf $RPM_BUILD_ROOT
cd haproxy-1.5.17/
make install DESTDIR=$RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/etc/init.d
cp examples/haproxy.init $RPM_BUILD_ROOT/etc/init.d/haproxy
chmod 755 $RPM_BUILD_ROOT/etc/init.d/haproxy
mkdir -p $RPM_BUILD_ROOT/etc/haproxy
cp examples/examples.cfg $RPM_BUILD_ROOT/etc/haproxy/haproxy.cfg
mkdir -p $RPM_BUILD_ROOT/var/lib/haproxy
touch $RPM_BUILD_ROOT/var/lib/haproxy/stats
rm -rf $RPM_BUILD_DIR/haproxy-1.5.17
rm -f /usr/sbin/haproxy
userdel haproxy
/etc/haproxy
/etc/init.d/haproxy
/usr/local/doc/haproxy
/usr/local/sbin/haproxy
/usr/local/share/man/man1/haproxy.1
/var/lib/haproxy
useradd haproxy -M -d /var/lib/haproxy
ln -sf /usr/local/sbin/haproxy /usr/sbin/haproxy
%changelog
<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb
Name:&&&&&&&&&& haproxyVersion:&&&&&&&&1.5.17Release:&&&&&&&&el6Summary:&&&&&&&&The Reliable, High Performance TCP/HTTP Load Balancer&Group:&&&&&&&&&&System Environment/DaemonsLicense:&&&&&&&&GPLURL:&&&&&&&&&&&&http://www.haproxy.orgSource:&&&&&&&& haproxy-1.5.17.tar.gz&Vendor:&&&&&&&& Willy Tarreau&BuildRequires:&&gcc gcc-c++ autoconf automake cmake openssl openssl-devel pcre pcre-devel pcre-staticRequires: pcre pcre-devel pcre-static openssl openssl-devel&%description&HAProxy is a free, very fast and reliable solution offering high availability,load balancing, and proxying for TCP and HTTP-based applications.&%prep&tar xzvf $RPM_SOURCE_DIR/haproxy-1.5.17.tar.gz&%build&cd haproxy-1.5.17/make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_CPU_AFFINITY=1&%install&rm -rf $RPM_BUILD_ROOTcd haproxy-1.5.17/make install DESTDIR=$RPM_BUILD_ROOT&mkdir -p $RPM_BUILD_ROOT/etc/init.dcp examples/haproxy.init $RPM_BUILD_ROOT/etc/init.d/haproxychmod 755 $RPM_BUILD_ROOT/etc/init.d/haproxy&mkdir -p $RPM_BUILD_ROOT/etc/haproxycp examples/examples.cfg $RPM_BUILD_ROOT/etc/haproxy/haproxy.cfg&mkdir -p $RPM_BUILD_ROOT/var/lib/haproxytouch $RPM_BUILD_ROOT/var/lib/haproxy/stats&%clean&rm -rf $RPM_BUILD_DIR/haproxy-1.5.17&%preun&rm -f /usr/sbin/haproxy&%postun&userdel haproxy&%files&/etc/haproxy/etc/init.d/haproxy/usr/local/doc/haproxy/usr/local/sbin/haproxy/usr/local/share/man/man1/haproxy.1/var/lib/haproxy&%post&useradd haproxy -M -d /var/lib/haproxyln -sf /usr/local/sbin/haproxy /usr/sbin/haproxy&%changelog
haproxy.cfg
# /etc/sysconfig/syslog
# local2.* /var/log/haproxy.log
log 127.0.0.1 local2 notice
maxconn 100000
/var/lib/haproxy
pidfile /var/run/haproxy.pid
group haproxy
# turn on stats unix socket
stats socket /var/lib/haproxy/stats level admin
stats bind-process 1
# default ciphers to use on SSL-enabled listening sockets
ssl-default-bind-ciphers ALL:!SSLv2:!SSLv3:!LOW:!EXP:!MD5:!aNULL:!eNULL
# fix the Logjam issue
tune.ssl.default-dh-param 2048
forwardfor
except 127.0.0.0/8
dontlognull
abortonclose
redispatch
timeout http-request
timeout queue
timeout connect
timeout client
timeout server
timeout http-keep-alive 30s
timeout check
maxconn 100000
listen stats 0.0.0.0:9000
stats uri /haproxy_stats
stats hide-version
frontend http-in
bind 0.0.0.0:80
default_backend webapp-http
frontend https-in
bind 0.0.0.0:443 ssl crt /etc/haproxy/.pem
reqadd X-Forwarded-Proto:\ https
reqadd X-SSL-Secure:\ true
option forwardfor
default_backend webapp-http
backend webapp-http
option httplog
option forwardfor except 127.0.0.0/8
balance leastconn
cookie JSESSIONID prefix
option httpchk HEAD /keepalive.html HTTP/1.0
# health check file
server webapp1 10.192.1.11:80 cookie webapp1 check maxconn 5000 weight 2
server webapp2 10.192.1.12:80 cookie webapp2 check maxconn 5000 weight 2
server webapp3 10.192.1.13:80 cookie webapp3 check maxconn 5000 weight 2
server webapp4 10.192.1.14:80 cookie webapp4 check maxconn 5000 weight 2
server webapp5 10.192.1.15:80 cookie webapp5 check maxconn 5000 weight 2
<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb
global&&&&# /etc/sysconfig/syslog&&&&# local2.* /var/log/haproxy.log&&&&log 127.0.0.1 local2 notice&&&&&maxconn 100000&&&&chroot&&/var/lib/haproxy&&&&pidfile /var/run/haproxy.pid&&&&user&&haproxy&&&&group haproxy&&&&daemon&&&&&# turn on stats unix socket&&&&stats socket /var/lib/haproxy/stats level admin&&&&stats bind-process 1&&&&&nbproc 6&&&&&debug&&&&&# default ciphers to use on SSL-enabled listening sockets&&&&ssl-default-bind-ciphers ALL:!SSLv2:!SSLv3:!LOW:!EXP:!MD5:!aNULL:!eNULL&&&&&# fix the Logjam issue&&&&tune.ssl.default-dh-param 2048&defaults&&&&mode&&&&http&&&&log&&&& global&&&&option&&httplog&&&&option&&forwardfor&&&&&&except 127.0.0.0/8&&&&option&&dontlognull&&&&option&&abortonclose&&&&option&&redispatch&&&&retries 3&&&&timeout http-request&&&&30s&&&&timeout queue&&&&&&&&&& 30s&&&&timeout connect&&&&&&&& 30s&&&&timeout client&&&&&&&&&&30s&&&&timeout server&&&&&&&&&&30s&&&&timeout http-keep-alive 30s&&&&timeout check&&&&&&&&&& 5s&&&&maxconn 100000&listen stats 0.0.0.0:9000&&&&stats uri /haproxy_stats&&&&stats hide-version&frontend http-in&&&&bind 0.0.0.0:80&&&&default_backend webapp-http&frontend https-in&&&&bind 0.0.0.0:443 ssl crt /etc/haproxy/star.heylinux.com.pem&&&&reqadd X-Forwarded-Proto:\ https&&&&reqadd X-SSL-Secure:\ true&&&&option forwardfor&&&&default_backend webapp-http&backend webapp-http&&&&mode http&&&&option httplog&&&&option forwardfor except 127.0.0.0/8&&&&balance leastconn&&&&cookie JSESSIONID prefix&&&&option httpchk HEAD /keepalive.html HTTP/1.0&&&&&& # health check file&&&&server webapp1 10.192.1.11:80 cookie webapp1 check maxconn 5000 weight 2&&&&server webapp2 10.192.1.12:80 cookie webapp2 check maxconn 5000 weight 2&&&&server webapp3 10.192.1.13:80 cookie webapp3 check maxconn 5000 weight 2&&&&server webapp4 10.192.1.14:80 cookie webapp4 check maxconn 5000 weight 2&&&&server webapp5 10.192.1.15:80 cookie webapp5 check maxconn 5000 weight 2
在群里,总会有人聊到曾经做过的最坑的事情,其中当然少不了rm命令,比如最出名的rm -rf /*命令。
受HDFS回收站机制的启发,我即兴的写了一个shell脚本来实现类似的功能。
具体配置:
[dong@localhost ~]$ sudo touch /usr/bin/delete
[dong@localhost ~]$ sudo chmod +x /usr/bin/delete
[dong@localhost ~]$ sudo vim /usr/bin/delete
#!/bin/bash
trash_dir=${HOME}/.Trash/$(date +%Y%m%d%H%M%S)
function move_item(){
full_path=$2
full_dir=$(dirname ${full_path})
mkdir -p ${trash_dir}${full_dir}
mv ${item} ${trash_dir}${full_path}
if [[ $? -eq 0 ]]; then
echo "Moved ${item} to ${trash_dir}${full_path}"
if [[ $# -eq 0 ]] || $(echo "$1" |grep -Ewq '\-h|\-\-help'); then
echo "${0} [-f] [*|FILE]"
for item in $@; do
if $(echo ${item} |grep -vq '^-'); then
if $(echo ${item} |grep -q '^/'); then
full_path=${item}
full_path=$(pwd)/${item}
if $(echo $@ |grep -Ewq '\-f|\-rf|\-fr'); then
move_item ${item} ${full_path}
echo -n "Move ${item} to ${trash_dir}${full_path}? [y/n] "
if $(echo ${yorn} |grep -Ewq 'y|Y|yes|YES'); then
move_item ${item} ${full_path}
<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb<div class="crayon-num" data-line="crayon-5a21fb<div class="crayon-num crayon-striped-num" data-line="crayon-5a21fb
#!/bin/bash&trash_dir=${HOME}/.Trash/$(date +%Y%m%d%H%M%S)&function move_item(){&&item=$1&&full_path=$2&&full_dir=$(dirname ${full_path})&&mkdir -p ${trash_dir}${full_dir}&&mv ${item} ${trash_dir}${full_path}&&if [[ $? -eq 0 ]]; then&&&&echo "Moved ${item} to ${trash_dir}${full_path}"&&fi}&if [[ $# -eq 0 ]] || $(echo "$1" |grep -Ewq '\-h|\-\-help'); then&&echo "${0} [-f] [*|FILE]"&&exit 2fi&for item in $@; do&&if $(echo ${item} |grep -vq '^-'); then&&&&if $(echo ${item} |grep -q '^/'); then&&&&&&full_path=${item}&&&&else&&&&&&full_path=$(pwd)/${item}&&&&fi&&&&if $(echo $@ |grep -Ewq '\-f|\-rf|\-fr'); then&&&&&&move_item ${item} ${full_path}&&&&else&&&&&&echo -n "Move ${item} to ${trash_dir}${full_path}? [y/n] "&&&&&&read yorn&&&&&&if $(echo ${yorn} |grep -Ewq 'y|Y|yes|YES'); then&&&&&&&&move_item ${item} ${full_path}&&&&&&fi&&&&fi&&fidone
[dong@localhost ~]$ mkdir tmp
[dong@localhost ~]$ cd tmp
[dong@localhost tmp]$ mkdir 1 2 3
[dong@localhost tmp]$ echo 1 > 1/1.txt
[dong@localhost tmp]$ echo 2 > 2/2.txt
[dong@localhost tmp]$ echo 3 > 3/3.txt
[dong@localhost tmp]$ touch a b c
[dong@localhost tmp]$ ln -s a d
[dong@localhost tmp]$ delete 1
Move 1 to /home/dong/.Trash/10/home/dong/tmp/1? [y/n] y
Moved 1 to /home/dong/.Trash/10/home/dong/tmp/1
[dong@localhost tmp]$ delete -f *
Moved 2 to /home/dong/.Trash/17/home/dong/tmp/2
Moved 3 to /home/dong/.Trash/17/home/dong/tmp/3
Moved a to /home/dong/.Trash/17/home/dong/tmp/a
Moved b to /home/dong/.Trash/17/home/dong/tmp/b
Moved c to /home/dong/.Trash/17/home/dong/tmp/c
Moved d to /home/dong/.Trash/17/home/dong/tmp/d
参考资料:
背景介绍:
通常,我们会将比较重要的指标都纳入到监控系统中,并在监控系统中进行绘图。
但有时候,可能会需要临时的针对某些特定的数据进行分析并绘图,并且通常都是一堆历史数据,进行事后分析的。
比如,近期线上的日志传输系统,在某些节点上传输的比较慢,那么我们就想分析一下哪些时段的日志比较慢,就从历史记录中取出了在这些节点上近4天所有日志的传输细节,包括日志大小,传输时间等;然后,通过Graphite,非常方便的导入了这些数据,并绘图分析。
具体配置:
环境介绍:
OS: CentOS6.5 x86_64 Minimal
1. 安装EPEL扩展库
# yum install -y epel-release
# sed -i s/#baseurl=/baseurl=/g /etc/yum.repos.d/epel.repo
# sed -i s/mirrorlist=/#mirrorlist=/g /etc/yum.repos.d/epel.repo
# yum clean all
2. 安装系统所需套件
yum install -y python python-devel python-pip
yum groupinstall -y 'Development Tools'
3. 安装配置Graphite相关软件(MySQL部分可以分开配置,使用独立的服务器)
# yum install -y graphite-web graphite-web-selinux mysql mysql-server MySQL-python
# mysql_secure_installation
Set root password? [Y/n] Y
New password: graphite
Re-enter new password: graphite
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
# mysql -uroot -pgraphite
mysql> CREATE DATABASE
mysql> GRANT ALL PRIVILEGES ON graphite.* TO 'graphite'@'localhost' IDENTIFIED BY 'graphite';
mysql> FLUSH PRIVILEGES;
# vi /etc/graphite-web/local_settings.py
DATABASES = {
'default': {
'NAME': 'graphite',
'ENGINE': 'django.db.backends.mysql',
'USER': 'graphite',
'PASSWORD': 'graphite',
# /usr/lib/python2.6/site-packages/graphite/manage.py syncdb
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): root
E-mail address:
Password: graphite
Password (again): graphite
4. 启动Apache服务,作为Graphite的Web服务器
# /etc/init.d/httpd start
5. 安装底层的绘图与数据采集软件
# yum install -y python-carbon python-whisper
6. 启动数据采集进程
# /etc/init.d/carbon-cache start
7. 更新配置,保留所有metrics目录下数据90天(默认仅保留1天,也就是说看不到1天以前的数据绘图)
# vi /etc/carbon/storage-schemas.conf
priority = 101
pattern = ^carbon\.
retentions = 60:90d
[default_1min_for_90days]
priority = 100
pattern = .*
retentions = 60:90d
发送一些测试数据
# python /usr/share/doc/graphite-web-0.9.12/example-client.py
sending message
--------------------------------------------------------------------------------
system.loadavg_1min 0.01
system.loadavg_5min 0.03
system.loadavg_15min 0.05
8. 查看当前服务器进程
# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address
Foreign Address
PID/Program name
0 0.0.0.0:80
2131/httpd
0 0.0.0.0:2003
2210/python
0 0.0.0.0:2004
2210/python
0 0.0.0.0:22
0 127.0.0.1:25
976/master
0 0.0.0.0:7002
2210/python
0 0.0.0.0:3306
2063/mysqld
9. 生成24小时的模拟数据,体验Graphite的绘图功能
安装nc命令
# yum install -y nc
创建生成模拟数据的脚本
# vi feed_random_data.sh
#!/bin/bash
# Generate random pageview data and feed Graphite
tree_path=metrics.random.pageview
time_period_hours=24
now_timestamp=$(date +%s)
minutes_number=$((${time_period_hours}*60))
echo ${minutes_number}
timestamp=$((${now_timestamp}-${minutes_number}*60))
for i in $(seq 1 ${minutes_number}); do
echo "echo ${tree_path} $(($RANDOM%5000)) ${timestamp} | nc localhost 2003"
echo ${tree_path} $(($RANDOM%5000)) ${timestamp} | nc localhost 2003
let timestamp+=60
执行脚本,将数据喂给Graphite,在使用nc命令的时候固定格式为:
echo 目录结构 数值 时间戳 | nc 服务器地址 服务端口
echo metrics.random.pageview 415 | nc localhost 2003
# chmod +x feed_random_data.sh
# ./feed_random_data.sh
当然,也可以参考上面的example-client.py脚本,使用Python的方式来喂数据。
然后,打开Graphite Web,即可看到如下所示的绘图:
使用账号root/graphite登陆以后,还可以创建一个Dashboard,将多个绘图放在一起方便查看:
Graphite还支持通过API生成图片,方便我们获取,如下所示:
学好英语,不仅仅是能考试,更重要的是,听力,和口语表达。
这里,我推荐给大家一个学英语的很棒的方法,以前外教教过的,亲身体验很爽,妙不可言,很多英语本身才有的幽默都可以体会到。
具体如下:
1. 在网上搜索一部英文电影的剧本
2. 阅读剧本并将所有的生词都学会
3. 找到这部电影
4. 去掉电影字幕(包括英文字幕)来欣赏
参考资料:
背景介绍:
在调试网络时,经常需要检测两台主机间的最大带宽,我一直使用iperf命令,效果很好很准确,但发现有一些运维朋友并不知道有这个工具,于是打算写篇文章简单介绍一下。
具体操作:
操作系统:CentOS6.5 x86_64 Minimal
192.168.10.11
192.168.10.12
[root@192.168.10.11 ~]# yum install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@192.168.10.11 ~]# yum install iperf
[root@192.168.10.12 ~]# yum install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@192.168.10.12 ~]# yum install iperf
[root@192.168.10.12 ~]# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
[root@192.168.10.11 ~]# iperf -c 192.168.10.12
------------------------------------------------------------
Client connecting to 192.168.10.12, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
3] local 192.168.10.11 port 23351 connected with 192.168.10.12 port 5001
[ ID] Interval
0.0-10.0 sec
744 MBytes
624 Mbits/sec
[root@192.168.10.12 ~]# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
4] local 192.168.10.12 port 5001 connected with 192.168.10.11 port 23351
[ ID] Interval
0.0-10.0 sec
744 MBytes
623 Mbits/sec
标签云(Tags)
WP Cumulus Flash tag cloud by
新浪微博(Sina Weibo)
友情链接(Blogroll)
文章归档(Archives)
功能(Meta)
网站安全监测(Webscan)
美国时间(US Time)
Google +1 (Plusone Button)
广告(Google Adsense)
Fusion theme by
| powered by}

我要回帖

更多关于 linux内核代码多少行 的文章

更多推荐

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

点击添加站长微信