<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IPCPU——网络之路 &#187; Linux</title>
	<atom:link href="http://www.ipcpu.com/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ipcpu.com</link>
	<description></description>
	<lastBuildDate>Sat, 03 Dec 2011 17:16:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Linux学习笔记之vmstat</title>
		<link>http://www.ipcpu.com/2011/07/linux-vmstat/</link>
		<comments>http://www.ipcpu.com/2011/07/linux-vmstat/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 15:14:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[性能]]></category>

		<guid isPermaLink="false">http://www.ipcpu.com/?p=1213</guid>
		<description><![CDATA[Virtual Memory Statistics ( vmstat ) vmstat 是报告关于进程，内存，IO，CPU活动的一个统计报告。 在不同的系统中，特别是linux和unix中显示的相关选项会有很大差别。 我们先以ubuntu为例： 一般VMSTAT工具的使用是通过两个数字参数来完成的，第一个参数是采样的时间间隔数，单位是秒，第二个参数是采样的次数。 1 2 3 4 5 6 7 8 9 ipcpu@ubuntu:~$ vmstat 5 10 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 6797712 147668 884660 0 0 3 [...]]]></description>
			<content:encoded><![CDATA[<p>Virtual Memory Statistics ( vmstat )<br />
vmstat 是报告关于进程，内存，IO，CPU活动的一个统计报告。</p>
<p>在不同的系统中，特别是linux和unix中显示的相关选项会有很大差别。</p>
<p>我们先以ubuntu为例：</p>
<p>一般VMSTAT工具的使用是通过两个数字参数来完成的，第一个参数是采样的时间间隔数，单位是秒，第二个参数是采样的次数。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">ipcpu<span style="color: #000000; font-weight: bold;">@</span>ubuntu:~$ <span style="color: #c20cb9; font-weight: bold;">vmstat</span> <span style="color: #000000;">5</span> <span style="color: #000000;">10</span>
procs <span style="color: #660033;">-----------memory----------</span> <span style="color: #660033;">---swap--</span> <span style="color: #660033;">-----io----</span> <span style="color: #660033;">-system--</span> <span style="color: #660033;">----cpu----</span>
r  b   swpd   <span style="color: #c20cb9; font-weight: bold;">free</span>   buff  cache   si   so    bi    bo   <span style="color: #000000; font-weight: bold;">in</span>   cs us sy <span style="color: #c20cb9; font-weight: bold;">id</span> wa
<span style="color: #000000;">1</span>  <span style="color: #000000;">0</span>      <span style="color: #000000;">0</span> <span style="color: #000000;">6797712</span> <span style="color: #000000;">147668</span> <span style="color: #000000;">884660</span>    <span style="color: #000000;">0</span>    <span style="color: #000000;">0</span>     <span style="color: #000000;">3</span>    <span style="color: #000000;">21</span>  <span style="color: #000000;">162</span>  <span style="color: #000000;">146</span>  <span style="color: #000000;">1</span>  <span style="color: #000000;">1</span> <span style="color: #000000;">98</span>  <span style="color: #000000;">0</span>
<span style="color: #000000;">0</span>  <span style="color: #000000;">0</span>      <span style="color: #000000;">0</span> <span style="color: #000000;">6797696</span> <span style="color: #000000;">147668</span> <span style="color: #000000;">884660</span>    <span style="color: #000000;">0</span>    <span style="color: #000000;">0</span>     <span style="color: #000000;">0</span>     <span style="color: #000000;">3</span>   <span style="color: #000000;">35</span>   <span style="color: #000000;">37</span>  <span style="color: #000000;">1</span>  <span style="color: #000000;">0</span> <span style="color: #000000;">99</span>  <span style="color: #000000;">0</span>
<span style="color: #000000;">1</span>  <span style="color: #000000;">0</span>      <span style="color: #000000;">0</span> <span style="color: #000000;">6797332</span> <span style="color: #000000;">147668</span> <span style="color: #000000;">884660</span>    <span style="color: #000000;">0</span>    <span style="color: #000000;">0</span>     <span style="color: #000000;">0</span>    <span style="color: #000000;">24</span>   <span style="color: #000000;">62</span>   <span style="color: #000000;">95</span>  <span style="color: #000000;">1</span>  <span style="color: #000000;">0</span> <span style="color: #000000;">99</span>  <span style="color: #000000;">0</span>
<span style="color: #000000;">0</span>  <span style="color: #000000;">0</span>      <span style="color: #000000;">0</span> <span style="color: #000000;">6811632</span> <span style="color: #000000;">147668</span> <span style="color: #000000;">884692</span>    <span style="color: #000000;">0</span>    <span style="color: #000000;">0</span>     <span style="color: #000000;">0</span>     <span style="color: #000000;">5</span>   <span style="color: #000000;">25</span>   <span style="color: #000000;">26</span>  <span style="color: #000000;">1</span>  <span style="color: #000000;">0</span> <span style="color: #000000;">99</span>  <span style="color: #000000;">0</span>
<span style="color: #000000;">0</span>  <span style="color: #000000;">0</span>      <span style="color: #000000;">0</span> <span style="color: #000000;">6818360</span> <span style="color: #000000;">147668</span> <span style="color: #000000;">884704</span>    <span style="color: #000000;">0</span>    <span style="color: #000000;">0</span>     <span style="color: #000000;">0</span>     <span style="color: #000000;">5</span>   <span style="color: #000000;">70</span>  <span style="color: #000000;">265</span>  <span style="color: #000000;">1</span>  <span style="color: #000000;">3</span> <span style="color: #000000;">96</span>  <span style="color: #000000;">0</span>
<span style="color: #000000;">0</span>  <span style="color: #000000;">0</span>      <span style="color: #000000;">0</span> <span style="color: #000000;">6817468</span> <span style="color: #000000;">147668</span> <span style="color: #000000;">884728</span>    <span style="color: #000000;">0</span>    <span style="color: #000000;">0</span>     <span style="color: #000000;">0</span>   <span style="color: #000000;">316</span>  <span style="color: #000000;">253</span>  <span style="color: #000000;">474</span>  <span style="color: #000000;">3</span>  <span style="color: #000000;">2</span> <span style="color: #000000;">95</span>  <span style="color: #000000;">0</span></pre></td></tr></table></div>

<p><strong>procs相关选项: </strong><br />
r    在运行队列中等待的进程数<br />
b    在等待io的进程数</p>
<p><strong>memoy </strong><br />
swapd    现时可用的交换内存（k表示）<br />
free    空闲的内存（k表示）<br />
buff    作为buffer cache的内存数量，一般对块设备的读写才需要缓冲。<br />
cache    作为page cache的内存数量，一般作为文件系统的cache，</p>
<p>如果cache较大，说明用到cache的文件较多，如果此时IO中bi比较小，说明文件系统效率比较好。<br />
<span id="more-1213"></span><br />
<strong>swap</strong><br />
si     由内存进入内存交换区数量。<br />
so    由内存交换区进入内存数量。<br />
如今的大内存也让swap渐渐淡出了人们的视线，这个不好分析。</p>
<p><strong>IO</strong><br />
bi     从块设备读入数据的总量（读磁盘）（每秒kb）。<br />
bo     向块设备写入数据的总量（写磁盘）（每秒kb）</p>
<p><strong>system 显示采集间隔内发生的中断数</strong><br />
in     列表示在某一时间间隔中观测到的每秒设备中断数。<br />
cs    列表示每秒产生的上下文切换次数。</p>
<p>如当 cs 比磁盘 I/O 和网络信息包速率高得多，都应进行进一步调查。</p>
<p><strong>cpu相关状态</strong><br />
cs[user]    用户进程消耗的CPU时间百分比<br />
sy[system]    内核进程消耗的CPU时间百分比<br />
id[idle]    cpu空闲的时间<br />
wa[wait]    IO等待消耗的CPU时间百分比</p>
<p>us的值比较高时，说明用户进程消耗的cpu时间多，但是如果长期大于50%，需要考虑优化用户的程序。<br />
us+sy 大于 80%说明可能存在CPU不足。<br />
wa超过30%，说明IO等待严重，这可能是磁盘大量随机访问造成的，也可能磁盘或者磁盘访问控制器的带<br />
宽瓶颈造成的(主要是块操作)。wa长期超过10% 就该考虑了。</p>
<p><strong><span style="color: #ff00ff;">*注意：</span></strong><br />
NFS由于是在内核里面运行的，所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话，就需要注意是否某个内核进程，比如NFS任务比较繁重。如果us和sy同时都比较大的话，就需要考虑将某些用户程序分离到另外的服务器上面，以免互相影响。</p>
<p><strong>CPU问题现象:</strong><br />
1) 如果在processes中运行的序列(process r)是连续的大于在系统中的CPU的个数表示系统现在运行比较慢，有多数的进程等待CPU。<br />
2) 如果r的输出数大于系统中可用CPU个数的4倍的话，则系统面临着CPU短缺的问题，或者是CPU的速率过低，系统中有多数的进程在等待CPU，造成系统中进程运行过慢。<br />
3) 如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us) 系统则面临着CPU资源的短缺。</p>
<p>解决办法:<br />
当发生以上问题的时候请先调整应用程序对CPU的占用情况。使得应用程序能够更有效的使用CPU。同时可以考虑增加更多的CPU。<br />
关于CPU的使用情况还可以结合mpstat，   ps aux top   prstat等等一些相应的命令来综合考虑关于具体的CPU的使用情况，和那些进程在占用大量的CPU时间。一般情况下，应用程序的问题会比较大一些。比如一些SQL语句不合理等等都会造成这样的现象。</p>
<p><strong>Unix中的vmstat</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">freebsd7<span style="color: #339933;">.</span>2中的vmstat
<span style="color: #009900;">&#91;</span>ipcpu<span style="color: #339933;">@</span>freebsd ~<span style="color: #009900;">&#93;</span>$ vmstat
procs      memory      page                   disk   faults         cpu
r b w     avm    fre   flt  re  <span style="color: #990000;">pi</span>  po    fr  sr ad4   in   sy   cs us sy id
<span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span>    152M  7448M   <span style="color: #cc66cc;">131</span>   <span style="color: #cc66cc;">0</span>   <span style="color: #cc66cc;">0</span>   <span style="color: #cc66cc;">0</span>   <span style="color: #cc66cc;">132</span>   <span style="color: #cc66cc;">0</span>   <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">167</span>  <span style="color: #cc66cc;">644</span>  <span style="color: #cc66cc;">860</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">99</span>
<span style="color: #009900;">&#91;</span>ipcpu<span style="color: #339933;">@</span>freebsd ~<span style="color: #009900;">&#93;</span>$
&nbsp;
AIX <span style="color:#800080;">5.3</span>中的vmstat
<span style="color: #339933;">-</span>bash<span style="color: #339933;">-</span><span style="color:#800080;">3.00</span>$ vmstat
&nbsp;
<span style="color: #990000;">System</span> configuration<span style="color: #339933;">:</span> lcpu<span style="color: #339933;">=</span><span style="color: #cc66cc;">4</span> mem<span style="color: #339933;">=</span>1904MB
&nbsp;
kthr    memory              page              faults        cpu   
<span style="color: #339933;">-----</span> <span style="color: #339933;">-----------</span> <span style="color: #339933;">------------------------</span> <span style="color: #339933;">------------</span> <span style="color: #339933;">-----------</span>
r  b   avm   fre  re  <span style="color: #990000;">pi</span>  po  fr   sr  cy  in   sy  cs us sy id wa
<span style="color: #cc66cc;">1</span>  <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">308679</span> <span style="color: #cc66cc;">55310</span>   <span style="color: #cc66cc;">0</span>   <span style="color: #cc66cc;">0</span>   <span style="color: #cc66cc;">0</span>   <span style="color: #cc66cc;">0</span>    <span style="color: #cc66cc;">1</span>   <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">94</span> <span style="color: #cc66cc;">4501</span> <span style="color: #cc66cc;">333</span>  <span style="color: #cc66cc;">1</span>  <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">98</span>  <span style="color: #cc66cc;">0</span>
<span style="color: #339933;">-</span>bash<span style="color: #339933;">-</span><span style="color:#800080;">3.00</span>$
&nbsp;
SunOS <span style="color:#800080;">5.10</span>的vmstat
&nbsp;
<span style="color: #339933;">-</span>bash<span style="color: #339933;">-</span><span style="color:#800080;">3.00</span>$ vmstat
kthr      memory            page            disk          faults      cpu
r b w   swap  free  re  mf <span style="color: #990000;">pi</span> po fr de sr s0 s1 s2 s5   in   sy   cs us sy id
<span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">2584720</span> <span style="color: #cc66cc;">2665344</span> <span style="color: #cc66cc;">3</span> <span style="color: #cc66cc;">10</span>  <span style="color: #cc66cc;">1</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">495</span>  <span style="color: #cc66cc;">249</span>  <span style="color: #cc66cc;">235</span>  <span style="color: #cc66cc;">0</span>  <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">99</span>
<span style="color: #339933;">-</span>bash<span style="color: #339933;">-</span><span style="color:#800080;">3.00</span>$</pre></td></tr></table></div>

<p>这里稍微介绍下page相关选项：<br />
re    回收的页面<br />
mf    非严重错误的页面<br />
pi    进入页面数（k表示）<br />
po    出页面数（k表示）<br />
fr    空余的页面数（k表示）<br />
de    提前读入的页面中的未命中数<br />
sr    通过时钟算法扫描的页面</p>
<p><strong><span style="color: #ff00ff;">Tips小提示</span></strong>：<strong>Linux的块设备和字符设备</strong><br />
他们根本区别在于是否可以被随机访问——换句话说就是，能否在访问设备时随意地从一个位置跳转到另一个位置。</p>
<p>举个例子，键盘这种设备提供的就是一个数据流，只能按照你敲击的字母顺序进行录入，所以键盘就是一种典型的字符设备。</p>
<p>硬盘设备的驱动可能要求读取磁盘上任意块的内容，然后又转去读取别的块的内容，而被读取的块在磁盘上位置不一定要连续，所以说硬盘可以被随机访问，而不是以流的方式被访问，显然它是一个块设备。</p>
<p><strong>参考资料：</strong><br />
http://qa.taobao.com/?p=2269&amp;cpage=2<br />
http://hi.baidu.com/loveastyy/blog/item/29bdb2fa117f1e2b4f4aeade.html<br />
http://linux.ccidnet.com/art/9513/20070730/1160333_1.html<br />
http://www.jb51.net/os/RedHat/2161.html<br />
http://bbs.linuxtone.org/forum-viewthread-tid-845.html</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcpu.com/2011/07/linux-vmstat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux学习笔记之netstat</title>
		<link>http://www.ipcpu.com/2011/07/netstat-linux/</link>
		<comments>http://www.ipcpu.com/2011/07/netstat-linux/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 16:49:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[netstat]]></category>
		<category><![CDATA[命令]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://www.ipcpu.com/?p=1198</guid>
		<description><![CDATA[netstat命令是一个监控TCP/IP网络的非常有用的工具，它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息，在我的计算机上执行netstat后，其输出结果为： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Active Internet connections &#40;w/o servers&#41; Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED tcp 0 80 [...]]]></description>
			<content:encoded><![CDATA[<p>netstat命令是一个监控TCP/IP网络的非常有用的工具，它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息，在我的计算机上执行netstat后，其输出结果为：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Active Internet connections <span style="color: #009900;">&#40;</span>w<span style="color: #339933;">/</span>o servers<span style="color: #009900;">&#41;</span>
Proto Recv<span style="color: #339933;">-</span>Q Send<span style="color: #339933;">-</span>Q Local Address Foreign Address State
tcp <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">2</span> 210<span style="color: #339933;">.</span>34<span style="color: #339933;">.</span>6<span style="color: #339933;">.</span>89<span style="color: #339933;">:</span>telnet 210<span style="color: #339933;">.</span>34<span style="color: #339933;">.</span>6<span style="color: #339933;">.</span>96<span style="color: #339933;">:</span><span style="color: #cc66cc;">2873</span> ESTABLISHED
tcp <span style="color: #cc66cc;">296</span> <span style="color: #cc66cc;">0</span> 210<span style="color: #339933;">.</span>34<span style="color: #339933;">.</span>6<span style="color: #339933;">.</span>89<span style="color: #339933;">:</span><span style="color: #cc66cc;">1165</span> 210<span style="color: #339933;">.</span>34<span style="color: #339933;">.</span>6<span style="color: #339933;">.</span>84<span style="color: #339933;">:</span>netbios<span style="color: #339933;">-</span>ssn ESTABLISHED
tcp <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> localhost<span style="color: #339933;">.</span>localdom<span style="color: #339933;">:</span><span style="color: #cc66cc;">9001</span> localhost<span style="color: #339933;">.</span>localdom<span style="color: #339933;">:</span><span style="color: #cc66cc;">1162</span> ESTABLISHED
tcp <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> localhost<span style="color: #339933;">.</span>localdom<span style="color: #339933;">:</span><span style="color: #cc66cc;">1162</span> localhost<span style="color: #339933;">.</span>localdom<span style="color: #339933;">:</span><span style="color: #cc66cc;">9001</span> ESTABLISHED
tcp <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">80</span> 210<span style="color: #339933;">.</span>34<span style="color: #339933;">.</span>6<span style="color: #339933;">.</span>89<span style="color: #339933;">:</span><span style="color: #cc66cc;">1161</span> 210<span style="color: #339933;">.</span>34<span style="color: #339933;">.</span>6<span style="color: #339933;">.</span>10<span style="color: #339933;">:</span>netbios<span style="color: #339933;">-</span>ssn CLOSE
&nbsp;
Active UNIX domain sockets <span style="color: #009900;">&#40;</span>w<span style="color: #339933;">/</span>o servers<span style="color: #009900;">&#41;</span>
Proto RefCnt Flags Type State I<span style="color: #339933;">-</span>Node Path
unix <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#91;</span> <span style="color: #009900;">&#93;</span> STREAM CONNECTED <span style="color: #cc66cc;">16178</span> <span style="color: #339933;">@</span>000000dd
unix <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#91;</span> <span style="color: #009900;">&#93;</span> STREAM CONNECTED <span style="color: #cc66cc;">16176</span> <span style="color: #339933;">@</span>000000dc
unix <span style="color: #cc66cc;">9</span> <span style="color: #009900;">&#91;</span> <span style="color: #009900;">&#93;</span> DGRAM <span style="color: #cc66cc;">5292</span> <span style="color: #339933;">/</span>dev<span style="color: #339933;">/</span><span style="color: #990000;">log</span>
unix <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#91;</span> <span style="color: #009900;">&#93;</span> STREAM CONNECTED <span style="color: #cc66cc;">16182</span> <span style="color: #339933;">@</span>000000df</pre></td></tr></table></div>

<p>从整体上看，netstat的输出结果可以分为两个部分，<br />
一个是Active Internet connections，称为有源TCP连接，<br />
另一个是Active UNIX domain sockets，称为有源Unix域套接口。</p>
<p>在上面的输出结果中，第一部分有5个输出结果，显示有源TCP连接的情况，而第二部分的输出结果显示的是Unix域套接口的连接情况。Proto显示连接使用的协议；RefCnt表示连接到本套接口上的进程号；Types显示套接口的类型；State显示套接口当前的状态；Path表示连接到套接口的其它进程使用的路径名。</p>
<p><strong>常用参数</strong></p>
<p>-a (all)显示所有选项，默认不显示LISTEN相关<br />
-t (tcp)仅显示tcp相关选项<br />
-u (udp)仅显示udp相关选项<br />
-n 拒绝显示别名，能显示数字的全部转化成数字。<br />
-l 仅列出有在 Listen (监听) 的服務状态</p>
<p>-p 显示建立相关链接的程序名<br />
-r 显示路由信息，路由表<br />
-e 显示扩展信息，例如uid等<br />
-s 按各个协议进行统计<br />
-c 每隔一个固定时间，执行该netstat命令。</p>
<p>提示：LISTEN和LISTENING的状态只有用-a或者-l才能看到<span id="more-1198"></span></p>
<p><strong>常见用法：</strong></p>
<p>查看个服务监听状况</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># netstat -tunlp
</span>tcp        <span style="color: #cc66cc;">0</span>      <span style="color: #cc66cc;">0</span> 127<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>1<span style="color: #339933;">:</span><span style="color: #cc66cc;">12221</span>         0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">:*</span>               LISTEN      <span style="color: #339933;">-</span>
tcp        <span style="color: #cc66cc;">0</span>      <span style="color: #cc66cc;">0</span> 127<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>1<span style="color: #339933;">:</span><span style="color: #cc66cc;">8222</span>          0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">:*</span>               LISTEN      <span style="color: #339933;">-</span>
udp        <span style="color: #cc66cc;">0</span>      <span style="color: #cc66cc;">0</span> 0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">:</span><span style="color: #cc66cc;">787</span>             0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">:*</span>                           <span style="color: #339933;">-</span>
udp        <span style="color: #cc66cc;">0</span>      <span style="color: #cc66cc;">0</span> 0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">:</span><span style="color: #cc66cc;">177</span>             0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">:*</span></pre></td></tr></table></div>

<p>查看连接某服务端口最多的的IP地址</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">wss8848<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ netstat <span style="color: #339933;">-</span>nat <span style="color: #339933;">|</span> grep <span style="color: #0000ff;">&quot;192.168.1.15:22&quot;</span> <span style="color: #339933;">|</span>awk <span style="color: #0000ff;">'{print $5}'</span><span style="color: #339933;">|</span>awk <span style="color: #339933;">-</span>F<span style="color: #339933;">:</span> <span style="color: #0000ff;">'{print $1}'</span><span style="color: #339933;">|</span>sort<span style="color: #339933;">|</span>uniq <span style="color: #339933;">-</span>c<span style="color: #339933;">|</span>sort <span style="color: #339933;">-</span>nr<span style="color: #339933;">|</span>head <span style="color: #339933;">-</span><span style="color: #cc66cc;">20</span>
<span style="color: #cc66cc;">18</span> 221<span style="color: #339933;">.</span>136<span style="color: #339933;">.</span>168<span style="color: #339933;">.</span>36
<span style="color: #cc66cc;">3</span> 154<span style="color: #339933;">.</span>74<span style="color: #339933;">.</span>45<span style="color: #339933;">.</span>242
<span style="color: #cc66cc;">2</span> 78<span style="color: #339933;">.</span>173<span style="color: #339933;">.</span>31<span style="color: #339933;">.</span>236
<span style="color: #cc66cc;">2</span> 62<span style="color: #339933;">.</span>183<span style="color: #339933;">.</span>207<span style="color: #339933;">.</span>98
<span style="color: #cc66cc;">2</span> 192<span style="color: #339933;">.</span>168<span style="color: #339933;">.</span>1<span style="color: #339933;">.</span>14
<span style="color: #cc66cc;">2</span> 182<span style="color: #339933;">.</span>48<span style="color: #339933;">.</span>111<span style="color: #339933;">.</span>215
<span style="color: #cc66cc;">2</span> 124<span style="color: #339933;">.</span>193<span style="color: #339933;">.</span>219<span style="color: #339933;">.</span>34
<span style="color: #cc66cc;">2</span> 119<span style="color: #339933;">.</span>145<span style="color: #339933;">.</span>41<span style="color: #339933;">.</span>2
<span style="color: #cc66cc;">2</span> 114<span style="color: #339933;">.</span>255<span style="color: #339933;">.</span>41<span style="color: #339933;">.</span>30
<span style="color: #cc66cc;">1</span> 75<span style="color: #339933;">.</span>102<span style="color: #339933;">.</span>11<span style="color: #339933;">.</span>99</pre></td></tr></table></div>

<p>TCP各种状态列表</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">netstat <span style="color: #339933;">-</span>nat <span style="color: #339933;">|</span>awk <span style="color: #0000ff;">'{print $6}'</span><span style="color: #339933;">|</span>sort<span style="color: #339933;">|</span>uniq <span style="color: #339933;">-</span>c<span style="color: #339933;">|</span>sort <span style="color: #339933;">-</span>rn</pre></td></tr></table></div>

<p>我们进行详细的分析：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">wss8848<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ netstat <span style="color: #339933;">-</span>nat <span style="color: #339933;">|</span>awk <span style="color: #0000ff;">'{print $6}'</span>
established<span style="color: #009900;">&#41;</span>
Foreign
LISTEN
TIME_WAIT
ESTABLISHED
TIME_WAIT
SYN_SENT
先把状态全都取出来
wss8848<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ netstat <span style="color: #339933;">-</span>nat <span style="color: #339933;">|</span>awk <span style="color: #0000ff;">'{print $6}'</span><span style="color: #339933;">|</span>sort<span style="color: #339933;">|</span>uniq <span style="color: #339933;">-</span>c
<span style="color: #cc66cc;">143</span> ESTABLISHED
<span style="color: #cc66cc;">1</span> FIN_WAIT1
<span style="color: #cc66cc;">1</span> Foreign
<span style="color: #cc66cc;">1</span> LAST_ACK
<span style="color: #cc66cc;">36</span> LISTEN
<span style="color: #cc66cc;">6</span> SYN_SENT
<span style="color: #cc66cc;">113</span> TIME_WAIT
<span style="color: #cc66cc;">1</span> established<span style="color: #009900;">&#41;</span>
然后使用uniq <span style="color: #339933;">-</span>c统计，之后再进行排序。</pre></td></tr></table></div>

<p>当然也可以使用经典的语句，但要理解什么意思哦</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># netstat -na | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
</span>TIME_WAIT <span style="color: #cc66cc;">4</span>
ESTABLISHED <span style="color: #cc66cc;">6</span>
LISTEN <span style="color: #cc66cc;">12</span></pre></td></tr></table></div>

<p>这里在附加一个常见的Linux面试题。<br />
分析access.log获得访问前10位的ip地址</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">awk <span style="color: #0000ff;">'{print $1}'</span> access<span style="color: #339933;">.</span><span style="color: #990000;">log</span> <span style="color: #339933;">|</span>sort<span style="color: #339933;">|</span>uniq <span style="color: #339933;">-</span>c<span style="color: #339933;">|</span>sort <span style="color: #339933;">-</span>nr<span style="color: #339933;">|</span>head <span style="color: #339933;">-</span><span style="color: #cc66cc;">10</span></pre></td></tr></table></div>

<p>其实和我们详细分析的TCP状态列表差不多的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcpu.com/2011/07/netstat-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux学习笔记之sed命令基础</title>
		<link>http://www.ipcpu.com/2011/07/linux-sed-basic/</link>
		<comments>http://www.ipcpu.com/2011/07/linux-sed-basic/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 03:39:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[命令]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://www.ipcpu.com/?p=1190</guid>
		<description><![CDATA[1. Sed简介 sed 是一种在线编辑器，它一次处理一行内容。处理时，把当前处理的行存储在临时缓冲区中，称为“模式空间”（pattern space），接着用sed命令处理缓冲区中的内容，处理完成后，把缓冲区的内容送往屏幕。接着处理下一行，这样不断重复，直到文件末尾。文件内容并没有 改变，除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件；简化对文件的反复操作；编写转换程序等. Centos4的sed版本sed-4.1.5-5.fc6 2. 定址 可以通过定址来定位你所希望编辑的行，该地址用数字构成，用逗号分隔的两个行数表示以这两行为起止的行的范围（包括行数表示的那两行）。如1，3表示1，2，3行，美元符号($)表示最后一行。范围可以通过数据，正则表达式或者二者结合的方式确定. 3. Sed命令 调用sed命令有两种形式： 1 2 3 * sed &#91;options&#93; 'command' file&#40;s&#41; &#160; * sed &#91;options&#93; -f scriptfile file&#40;s&#41; 一种是直接写命令，一种是将命令写到文件再调用 4. 选项[options] -e command, &#8211;expression=command ##允许多次编辑。 -n, &#8211;quiet, &#8211;silent ##取消默认输出（默认输出文件全文） -f, &#8211;filer=script-file引导sed脚本文件名。 ##调用命令文件 -i， ##直接修改文件 5.命令[command] 我们采用案例方法来讲述这部分： 使用的案例文件为1233.txt内容如下： ipcpu@ubuntu:~$ cat 1233.txt first second third five ipcpu@ubuntu:~$ [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="color: #000000;"><strong>1. Sed简介</strong></span></h2>
<p>sed 是一种在线编辑器，它一次处理一行内容。处理时，把当前处理的行存储在临时缓冲区中，称为“模式空间”（pattern space），接着用sed命令处理缓冲区中的内容，处理完成后，把缓冲区的内容送往屏幕。接着处理下一行，这样不断重复，直到文件末尾。文件内容并没有 改变，除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件；简化对文件的反复操作；编写转换程序等.</p>
<p>Centos4的sed版本sed-4.1.5-5.fc6</p>
<h2><span style="color: #000000;"><strong>2. 定址</strong></span></h2>
<p>可以通过定址来定位你所希望编辑的行，该地址用数字构成，用逗号分隔的两个行数表示以这两行为起止的行的范围（包括行数表示的那两行）。如1，3表示1，2，3行，美元符号($)表示最后一行。范围可以通过数据，正则表达式或者二者结合的方式确定.</p>
<h2><span style="color: #000000;"><strong>3. Sed命令</strong></span></h2>
<p>调用sed命令有两种形式：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">*</span> sed <span style="color: #009900;">&#91;</span>options<span style="color: #009900;">&#93;</span> <span style="color: #0000ff;">'command'</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span>s<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #339933;">*</span> sed <span style="color: #009900;">&#91;</span>options<span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span>f scriptfile <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span>s<span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>一种是直接写命令，一种是将命令写到文件再调用</p>
<h2><span style="color: #000000;"><strong>4. 选项[options]</strong></span></h2>
<p>-e command, &#8211;expression=command<br />
##允许多次编辑。</p>
<p>-n, &#8211;quiet, &#8211;silent<br />
##取消默认输出（默认输出文件全文）</p>
<p>-f, &#8211;filer=script-file引导sed脚本文件名。<br />
##调用命令文件</p>
<p>-i，<br />
##直接修改文件<br />
<span id="more-1190"></span><br />
<span style="color: #000000;"><strong>5.命令[command]</strong></span></p>
<p>我们采用案例方法来讲述这部分：</p>
<p>使用的案例文件为1233.txt内容如下：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ cat <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
third
five
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$</pre></div></div>

<p>&nbsp;</p>
<p><span style="color: #339966;"><strong>============打印匹配的行============</strong></span><br />
<span style="color: #ff0000;">p  打印模板块的行。</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ cat <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
third
five
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$
&nbsp;
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'/second/p'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
second
third
five
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #339933;">-</span>n <span style="color: #0000ff;">'/second/p'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
second
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$</pre></td></tr></table></div>

<p>sed默认会把所有行打印出来，匹配上second会执行p再打印一遍</p>
<p><strong><span style="color: #339966;">============添加和插入文本 ============</span></strong></p>
<p><span style="color: #ff0000;">a  在行后面添加文本</span><br />
<span style="color: #ff0000;"> i  在航前面添加文本</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'$a \
&gt; oo \
&gt; last line '</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
third
five
oo
last line
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$
注意此处的反斜线\表示回车，在反斜线后必须按下回车
&nbsp;
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'3a four'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
third
four
five
在第三行后面加入内容
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'1i zero'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
zero
first
second
third
five
在第一行前面插入内容
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'/five/i four'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
third
four
five
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$
在five前面插入一行，内容为four</pre></td></tr></table></div>

<p><strong><span style="color: #339966;">============删除行 ============</span></strong></p>
<p><span style="color: #ff0000;">d 删除行</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'1,3d'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
five
删除<span style="color: #cc66cc;">1</span>到<span style="color: #cc66cc;">3</span>行
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'$d'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
third
删除最后一行
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'2d'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
third
five
删除第<span style="color: #cc66cc;">2</span>行
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'/^th/d'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
five
删除th开头的行
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'/^$/d'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
third
five
删除空行
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'s/^..//'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
rst
cond 2nd
ird
ve
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$
删除每行的前两个字符</pre></td></tr></table></div>

<p><span style="color: #339966;"><strong>============替换============</strong></span></p>
<p><span style="color: #ff0000;">s 替换</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'s/f/F/g'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
First
second
third
Five
将所有的f替换成大写F
&nbsp;
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'1,2 s/d$/&amp;dd/'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
seconddd
third
five
在<span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span>行中，所有以d结尾字段后附加一个dd
&nbsp;
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'/first/ s/st/ST/'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
firST
second
third
five
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$
在含有first的行中，把st换成大写ST
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ cat box
it is a box<span style="color: #339933;">.</span>
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'s/ /\t/g'</span> box
it      is      a       box<span style="color: #339933;">.</span>
将文中所有空格替换成TAB</pre></td></tr></table></div>

<p><strong><span style="color: #339966;">============转换============</span></strong><br />
<span style="color: #ff0000;">y 转换</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'y/five/six1/'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
sirst
s1cond 2nd
third
six1
通常用于大小写转换，要求长度必须一致。功能与s基本一致。</pre></td></tr></table></div>

<p><span style="color: #339966;"><strong>============指定行的范围============</strong></span><br />
<span style="color: #ff0000;">，逗号</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #339933;">-</span>n <span style="color: #0000ff;">'/second/,/five/ p'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
second
third
five
输出second和five中间的数据，此处不加<span style="color: #339933;">-</span>n会出现重复
&nbsp;
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'/second/,/five/ s/i/IIII/'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
thIIIIrd
fIIIIve
修改second和five中间的数据，用III替换i</pre></td></tr></table></div>

<p><span style="color: #339966;"><strong>============多次编辑============<br />
</strong><span style="color: #ff0000;">e 多次编辑</span><strong> </strong></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #339933;">-</span>e <span style="color: #0000ff;">'1d'</span> <span style="color: #339933;">-</span>e <span style="color: #0000ff;">'s/^sec/2nd/'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
2ndond
third
five
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$</pre></td></tr></table></div>

<p><strong><span style="color: #339966;">============读写文件============<br />
</span></strong><span style="color: #ff0000;">r  读文件<br />
w 写文件</span><strong> </strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'/second/r box'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
it is a box<span style="color: #339933;">.</span>
third
five
匹配上second后，在其后读入文件
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ sed <span style="color: #0000ff;">'/second/w write'</span> <span style="color: #cc66cc;">1233</span><span style="color: #339933;">.</span>txt
first
second
third
five
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$ cat write
second
ipcpu<span style="color: #339933;">@</span>ubuntu<span style="color: #339933;">:</span>~$
匹配上second后把该行写入到文件</pre></td></tr></table></div>

<p><span style="color: #339966;"><strong>============提前退出============<br />
</strong><span style="color: #ff0000;">q提前退出</span><strong></strong></span></p>
<p>sed 默认读取整个文件，并只在到达末尾时才停止。不过，您可以使用退出命令提前停止处理。只能指定一条退出命令，而处理将一直持续直到满足调用退出命令的条件。</p>
<p>例如，仅在文件的前五行上执行替换，然后退出：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">$ sed <span style="color: #0000ff;">'
&gt; /two/ s/1/2/
&gt; /three/ s/1/3/
&gt; 5q'</span> sample_one
one <span style="color: #cc66cc;">1</span>
two <span style="color: #cc66cc;">2</span>
three <span style="color: #cc66cc;">3</span>
one <span style="color: #cc66cc;">1</span>
two <span style="color: #cc66cc;">2</span>
$</pre></td></tr></table></div>

<p>============其他命令<br />
暂存与取用<br />
h 和 g<br />
暂存和互换<br />
x</p>
<p><strong>参考资料：</strong></p>
<p>http://blog.csdn.net/thimin/article/details/1802738</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcpu.com/2011/07/linux-sed-basic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux安全方面的考虑</title>
		<link>http://www.ipcpu.com/2011/07/linux-security-think/</link>
		<comments>http://www.ipcpu.com/2011/07/linux-security-think/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 03:07:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[安全]]></category>
		<category><![CDATA[系统]]></category>

		<guid isPermaLink="false">http://www.ipcpu.com/?p=1187</guid>
		<description><![CDATA[虽然Linux的安全性要比其他的系统好一些，但是同样会有些安全问题需要考虑。 本文仅以自己的观点对Linux安全进行一个简单的分析。以CentOS为例子解释。 对于一个刚刚装完的CentOS系统来说，需要考虑一下几个方面： 1.系统服务 对于没用的系统服务，能关掉的尽量关掉。在CentOS中有很多例如blueteeth蓝牙，nfs的很多服务，用不到的关掉可以减少系统进程。 2.使用iptables、SELinux加固系统。 SELinux很多人是不喜欢用的，但是iptables还是尽量利用起来。 3.改掉SSH端口 这个问题很无奈，如果你不换掉端口，就会有人不停的猜测你的用户名密码，然后日志就会暴增，而这些日志也毫无意义。 4.文件完整性 在部署完生产环境后，使用AIDE或者其他的审计工具，对系统的重要文件进行检测，做好指纹记录比起保存到其他地方，需要查询文件改动个时候，在调出来检测。 5.用户和密码的管理 用户和密码的管理是Linux的一大难题。这实际到了管理方式的问题。很多公司的服务器是N个人拥有root权限，一登陆上去w一下发现好几个root用户。尽量不要让root直接登陆。 用户的管理，每个用户一个账号还是公用一个帐户，员工离职后如何确保帐户完全收回，这也是管理方式上的一个大挑战。 临时用户的管理，很多人喜欢开临时帐户，这些临时账户往往过一段时间就忘记了，对于临时账户最好确保帐户的有效期限，并及时追踪使用者。 密码的管理，使用长密码还是密钥登陆还是使用其他诸如密码令牌的方式，所有的服务器使用相同的密码密钥，还是每台服务器密码密钥都不一样都要考虑，选择最合适自己的。 6.日志和软件的管理 日志最好做集中日志，本地保存一段时间的日志。日志的作用是为了查询有效信息。对于SNMP的扫描，帐户密码的猜接能关掉的直接关掉。 软件的管理，不要随意从网下下载安装乱七八糟的软件，随着Linux越来越被人们熟识，像windows那样流氓软件的出现只是早晚问题。 7.及时跟踪安全漏洞 像前段时间比较人们的gcc提权漏洞等，即使打好补丁。对于Linux软件的升级应该慎重，先做好测试，一般情况不需要及时升级。 8.及时备份 及时备份能够最大限度的减小损失，不过注意不要把鸡蛋放到同一个篮子里。 8.硬件防火墙、IDS、IPS、蜜罐 当网站初具规模，硬件防火墙就少不了了，不要迷信IDC的安全设备。所谓有备无患，防范DDOS事在必行。 其他的可以考虑，比如使用snort搭建简单的IDS，或是搭建一个蜜罐，不过对大多数人来说可能显得没太大的必要。 本文仅代表作者自己的观点，如果大家有不同的想法可以说出来一起讨论。]]></description>
			<content:encoded><![CDATA[<p>虽然Linux的安全性要比其他的系统好一些，但是同样会有些安全问题需要考虑。</p>
<p>本文仅以自己的观点对Linux安全进行一个简单的分析。以CentOS为例子解释。</p>
<p>对于一个刚刚装完的CentOS系统来说，需要考虑一下几个方面：</p>
<p><strong>1.系统服务</strong><br />
对于没用的系统服务，能关掉的尽量关掉。在CentOS中有很多例如blueteeth蓝牙，nfs的很多服务，用不到的关掉可以减少系统进程。</p>
<p><strong>2.使用iptables、SELinux加固系统。</strong><br />
SELinux很多人是不喜欢用的，但是iptables还是尽量利用起来。</p>
<p><strong>3.改掉SSH端口</strong><br />
这个问题很无奈，如果你不换掉端口，就会有人不停的猜测你的用户名密码，然后日志就会暴增，而这些日志也毫无意义。</p>
<p><strong>4.文件完整性</strong><br />
在部署完生产环境后，使用AIDE或者其他的审计工具，对系统的重要文件进行检测，做好指纹记录比起保存到其他地方，需要查询文件改动个时候，在调出来检测。</p>
<p><strong>5.用户和密码的管理</strong><br />
用户和密码的管理是Linux的一大难题。这实际到了管理方式的问题。很多公司的服务器是N个人拥有root权限，一登陆上去w一下发现好几个root用户。尽量不要让root直接登陆。</p>
<p>用户的管理，每个用户一个账号还是公用一个帐户，员工离职后如何确保帐户完全收回，这也是管理方式上的一个大挑战。</p>
<p>临时用户的管理，很多人喜欢开临时帐户，这些临时账户往往过一段时间就忘记了，对于临时账户最好确保帐户的有效期限，并及时追踪使用者。<br />
密码的管理，使用长密码还是密钥登陆还是使用其他诸如密码令牌的方式，所有的服务器使用相同的密码密钥，还是每台服务器密码密钥都不一样都要考虑，选择最合适自己的。</p>
<p><span id="more-1187"></span><br />
<strong>6.日志和软件的管理</strong></p>
<p>日志最好做集中日志，本地保存一段时间的日志。日志的作用是为了查询有效信息。对于SNMP的扫描，帐户密码的猜接能关掉的直接关掉。</p>
<p>软件的管理，不要随意从网下下载安装乱七八糟的软件，随着Linux越来越被人们熟识，像windows那样流氓软件的出现只是早晚问题。</p>
<p><strong>7.及时跟踪安全漏洞</strong><br />
像前段时间比较人们的gcc提权漏洞等，即使打好补丁。对于Linux软件的升级应该慎重，先做好测试，一般情况不需要及时升级。</p>
<p><strong>8.及时备份</strong><br />
及时备份能够最大限度的减小损失，不过注意不要把鸡蛋放到同一个篮子里。</p>
<p><strong>8.硬件防火墙、IDS、IPS、蜜罐</strong><br />
当网站初具规模，硬件防火墙就少不了了，不要迷信IDC的安全设备。所谓有备无患，防范DDOS事在必行。<br />
其他的可以考虑，比如使用snort搭建简单的IDS，或是搭建一个蜜罐，不过对大多数人来说可能显得没太大的必要。</p>
<p>本文仅代表作者自己的观点，如果大家有不同的想法可以说出来一起讨论。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcpu.com/2011/07/linux-security-think/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Linux中的lsof</title>
		<link>http://www.ipcpu.com/2011/06/linux-study-lsof/</link>
		<comments>http://www.ipcpu.com/2011/06/linux-study-lsof/#comments</comments>
		<pubDate>Sat, 18 Jun 2011 15:29:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[使用]]></category>
		<category><![CDATA[命令]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://www.ipcpu.com/?p=1261</guid>
		<description><![CDATA[[lsof - list open files] Lsof是遵从Unix哲学的典范，它只做一件事情，并且做的相当完美——它可以列出某个进程打开的所有文件信息。 如何使用lsof 这篇文章中我会尽力列举我能想到的所有lsof的用法，让我们先从最简单的开始（或许你已经知道了）， 然后逐渐增加复杂度： 列出所有进程打开的所有文件 # lsof 不带任何参数运行lsof会列出所有进程打开的所有文件。 找出谁在使用某个文件 # lsof /path/to/file 只需要执行文件的路径，lsof就会列出所有使用这个文件的进程，你也可以列出多个文件，lsof会列出所有使用这些文件的进程。 [root@s0 ~]# lsof &#124; grep mm.txt vim       2406 ipcpu    4u   REG   3,3  4096   4593356 /home/wss8849/.mm.txt.swp [root@s0 ~]# 列出某个用户打开的所有文件 # lsof -u pkrumins -u选项限定只列出所有被用户pkrumins打开的文件，你可以通过逗号指定多个用户： # lsof -u rms,root 这条命令会列出所有rms和root用户打开的文件。 你也可以像下面这样使用多个-u做同样的事情： # lsof -u rms -u root 查找某个程序打开的所有文件 # [...]]]></description>
			<content:encoded><![CDATA[<p>[lsof - list open files]</p>
<p>Lsof是遵从Unix哲学的典范，它只做一件事情，并且做的相当完美——它可以列出某个进程打开的所有文件信息。</p>
<p><span style="color: #ff0000;"><strong>如何使用lsof</strong></span></p>
<p>这篇文章中我会尽力列举我能想到的所有lsof的用法，让我们先从最简单的开始（或许你已经知道了），</p>
<p>然后逐渐增加复杂度：</p>
<p><strong>列出所有进程打开的所有文件</strong></p>
<p># lsof</p>
<p>不带任何参数运行lsof会列出所有进程打开的所有文件。</p>
<p><strong>找出谁在使用某个文件</strong></p>
<p># lsof /path/to/file<br />
只需要执行文件的路径，lsof就会列出所有使用这个文件的进程，你也可以列出多个文件，lsof会列出所有使用这些文件的进程。</p>
<p>[root@s0 ~]# lsof | grep mm.txt<br />
vim       2406 ipcpu    4u   REG   3,3  4096   4593356 /home/wss8849/.mm.txt.swp<br />
[root@s0 ~]#</p>
<p><strong>列出某个用户打开的所有文件</strong></p>
<p># lsof -u pkrumins</p>
<p>-u选项限定只列出所有被用户pkrumins打开的文件，你可以通过逗号指定多个用户：</p>
<p># lsof -u rms,root</p>
<p>这条命令会列出所有rms和root用户打开的文件。</p>
<p>你也可以像下面这样使用多个-u做同样的事情：</p>
<p># lsof -u rms -u root</p>
<p><strong>查找某个程序打开的所有文件</strong></p>
<p># lsof -c apache</p>
<p>-c选项限定只列出以apache开头的进程打开的文件：</p>
<p>所以你可以不用像下面这样写：</p>
<p># lsof | grep foo</p>
<p>而使用下面这个更简短的版本：</p>
<p># lsof -c foo</p>
<p>事实上，你可以只制定进程名称的开头：</p>
<p># lsof -c apa</p>
<p>这会列出所有以apa开头的进程打开的文件<span id="more-1261"></span></p>
<p>你同样可以制定多个-c参数：</p>
<p># lsof -c apache -c python</p>
<p>这会列出所有由apache和python打开的文件</p>
<p>列出所有由某个用户或某个进程打开的文件</p>
<p># lsof -u pkrumins -c apache</p>
<p>你也可以组合使用多个选项，这些选项默认进行或关联，也就是说上面的命令会输入由pkrumins用户或是apache进程打开的文件。</p>
<p><strong>列出所有由一个用户与某个进程打开的文件</strong></p>
<p># lsof -a -u pkrumins -c bash</p>
<p>-a参数可以将多个选项的组合条件由或变为与，上面的命令会显示所有由pkrumins用户以及bash进程打</p>
<p>开的文件。</p>
<p><strong>列出除root用户外的所有用户打开的文件</strong></p>
<p># lsof -u ^root</p>
<p>注意root前面的^符号，它执行取反操作，因此lsof会列出所有root用户之外的用户打开的文件。</p>
<p><strong>列出所有由某个PID对应的进程打开的文件</strong></p>
<p># lsof -p 1</p>
<p>-p选项让你可以使用进程id来过滤输出。</p>
<p>记住你也可以用都好来分离多个pid。</p>
<p># lsof -p 450,980,333</p>
<p><strong>列出所有进程打开的文件除了某个pid的</strong></p>
<p># lsof -p ^1</p>
<p>同前面的用户一样，你也可以对-p选项使用^来进行取反。</p>
<p><strong>列出所有网络连接</strong></p>
<p># lsof -i</p>
<p>lsof的-i选项可以列出所有打开了网络套接字（TCP和UDP）的进程。</p>
<p><strong>列出所有TCP网络连接</strong></p>
<p># lsof -i tcp</p>
<p>也可以为-i选项加上参数，比如tcp，tcp选项会强制lsof只列出打开TCP sockets的进程。</p>
<p><strong>列出所有UDP网络连接</strong></p>
<p># lsof -i udp</p>
<p>同样udp让lsof只列出使用UDP socket的进程。</p>
<p><strong>找到使用某个端口的进程</strong><br />
[常被用作面试题]</p>
<p># lsof -i :25</p>
<p>:25和-i选项组合可以让lsof列出占用TCP或UDP的25端口的进程。</p>
<p>你也可以使用/etc/services中制定的端口名称来代替端口号，比如：</p>
<p># lsof -i :smtp</p>
<p>找到使用某个udp端口号的进程</p>
<p># lsof -i udp:53</p>
<p>同样的，也可以找到使用某个tcp端口的进程：</p>
<p># lsof -i tcp:80</p>
<p><strong>找到某个用户的所有网络连接</strong></p>
<p># lsof -a -u hacker -i</p>
<p>使用-a将-u和-i选项组合可以让lsof列出某个用户的所有网络行为。</p>
<p><strong>列出所有NFS（网络文件系统）文件</strong></p>
<p># lsof -N</p>
<p>这个参数很好记，-N就对应NFS。</p>
<p><strong>列出所有UNIX域Socket文件</strong></p>
<p># lsof -U</p>
<p>这个选项也很好记，-U就对应UNIX。</p>
<p>本文参考文章（基本上属于部分转载了）：</p>
<p>http://heikezhi.com/2011/06/19/swiss-army-knife-of-unix-debugging-lsof/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcpu.com/2011/06/linux-study-lsof/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet的安装（一）</title>
		<link>http://www.ipcpu.com/2011/06/puppet-install-one/</link>
		<comments>http://www.ipcpu.com/2011/06/puppet-install-one/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 15:52:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[安装]]></category>

		<guid isPermaLink="false">http://www.ipcpu.com/?p=1149</guid>
		<description><![CDATA[&#160; Version：1.0 Author： ipcpu Date：    2011-6-1 &#160; Puppet是一款开源的工具，使用自有的puppet描述语言，可管理配置文件、用户、cron任务、软件包、系统服务等，实现自动化部署。 工作原理 Puppet使用C/S方式工作，开发语言ruby，中心服务器称为puppet master，用做管理安装配置功能，安装在各个节点的客户端软件称为puppetd，用于接收服务器编译过后配置文件，将配置应用于节点。 puppet的传输使用XML_RPC web service，使用https协议，监听端口8140。 默认情况下，客户端每半小时向服务端问询一次，确定服务端的配置是否更新或者改变，如果改变，服务器将重新编译配置文件，并将更新的配置应用于客户端。如果需要，配置更新也可由服务端发出，强制客户端更新。客户端与服务器端采用证书方式对通讯进行加密。 &#160; 编译安装 1. 安装ruby Puppet使用ruby开发，所以先装好ruby。RDoc是用来使用puppet的帮助文件。 #yum install ruby rdoc 2． 安装facter 它的作用是收集主机的一些资料，比如CPU，主机IP等，facter把收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件。 &#160; 1 2 3 4 5 6 7 #wget http://puppetlabs.com/downloads/facter/facter-latest.tgz # tar zxvf facter-latest.tgz # cd facter-1.5.8 # /usr/local/bin/ruby install.rb 2． 下载安装puppet主程序 &#160; 1 2 3 4 5 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p style="text-align: left;">Version：1.0</p>
<p style="text-align: left;">Author： ipcpu</p>
<p style="text-align: left;">Date：    2011-6-1</p>
<p>&nbsp;</p>
<p>Puppet是一款开源的工具，使用自有的puppet描述语言，可管理配置文件、用户、cron任务、软件包、系统服务等，实现自动化部署。</p>
<h1><strong>工作原理</strong></h1>
<p><strong> </strong></p>
<p>Puppet使用C/S方式工作，开发语言ruby，中心服务器称为puppet master，用做管理安装配置功能，安装在各个节点的客户端软件称为puppetd，用于接收服务器编译过后配置文件，将配置应用于节点。</p>
<p><a rel="attachment wp-att-1150" href="http://www.ipcpu.com/2011/06/puppet-install-one/puppetsetup0/"><img class="aligncenter size-full wp-image-1150" title="puppetsetup0" src="http://www.ipcpu.com/wp-content/uploads/2011/06/puppetsetup0.jpg" alt="" width="348" height="174" /></a></p>
<p>puppet的传输使用XML_RPC web service，使用https协议，监听端口8140。<br />
默认情况下，客户端每半小时向服务端问询一次，确定服务端的配置是否更新或者改变，如果改变，服务器将重新编译配置文件，并将更新的配置应用于客户端。如果需要，配置更新也可由服务端发出，强制客户端更新。客户端与服务器端采用证书方式对通讯进行加密。</p>
<p>&nbsp;</p>
<h1><strong>编译安装</strong></h1>
<p><strong>1. </strong><strong>安装ruby</strong></p>
<p><strong> </strong></p>
<p>Puppet使用ruby开发，所以先装好ruby。RDoc是用来使用puppet的帮助文件。</p>
<p>#yum install ruby rdoc</p>
<p><strong>2． </strong><strong>安装facter</strong></p>
<p>它的作用是收集主机的一些资料，比如CPU，主机IP等，facter把收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件。<span id="more-1149"></span></p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#wget http://puppetlabs.com/downloads/facter/facter-latest.tgz
</span>
<span style="color: #666666; font-style: italic;"># tar zxvf facter-latest.tgz
</span>
<span style="color: #666666; font-style: italic;"># cd facter-1.5.8
</span>
<span style="color: #666666; font-style: italic;"># /usr/local/bin/ruby install.rb</span></pre></td></tr></table></div>

<p><strong>2． </strong><strong>下载安装puppet</strong><strong>主程序</strong></p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># wget http://puppetlabs.com/downloads/puppet/puppet-latest.tar.gz
</span>
<span style="color: #666666; font-style: italic;"># tar zxvf puppet-2.6.3.tar.gz
</span>
<span style="color: #666666; font-style: italic;"># cd puppet-2.6.3
</span>
<span style="color: #666666; font-style: italic;"># /usr/local/bin/ruby install.rb</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>假如我们的构架如下图所示：</p>
<p><a rel="attachment wp-att-1151" href="http://www.ipcpu.com/2011/06/puppet-install-one/puppetsetup1/"><img class="aligncenter size-full wp-image-1151" title="puppetsetup1" src="http://www.ipcpu.com/wp-content/uploads/2011/06/puppetsetup1.jpg" alt="" width="351" height="160" /></a></p>
<p>接下来我们分成两部分，一部分是服务端的设定，一部分是客户端的设定。</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p>&nbsp;</p>
<p><strong>4. </strong><strong>服务端的设定</strong></p>
<p>a)         修改/etc/hosts文件</p>
<p>加入</p>
<p>116.61.61.2    s07.ipcpu.com</p>
<p>不加可不可以？可以。只要这个域名DNS解析到客户端即可。</p>
<p>&nbsp;</p>
<p>b)        拷贝源文件</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#mkdir /etc/puppet
</span>
<span style="color: #666666; font-style: italic;">#cp conf/auth.conf /etc/puppet/
</span>
<span style="color: #666666; font-style: italic;">#cp conf/redhat/fileserver.conf /etc/puppet/
</span>
<span style="color: #666666; font-style: italic;">#cp conf/redhat/puppet.conf /etc/puppet/
</span>
<span style="color: #666666; font-style: italic;">#cp conf/redhat/server.init /etc/init.d/puppetmaster
</span>
<span style="color: #666666; font-style: italic;">#chmod +x /etc/init.d/puppetmaster
</span>
<span style="color: #666666; font-style: italic;">#chkconfig --add puppetmaster
</span>
<span style="color: #666666; font-style: italic;">#chkconfig puppetmaster on
</span>
<span style="color: #666666; font-style: italic;">#mkdir -p /etc/puppet/manifests</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>c)        创建puppet帐号</p>
<p># puppetmasterd &#8211;mkusers（执行中可能会出一些错误，基本上以前安装或创建过puppet用户的原因，执行就是让它自动去 /var/lib/puppet下创建一些目录）</p>
<p>#cat /etc/passwd  #确认系统生成puppet用户</p>
<p>保证/var/lib/puppet/rrd目录存在且属主是puppet，如果没有则这行以下语句</p>
<p>#mkdir /var/lib/puppet/rrd &amp;&amp; chown puppet.puppet /var/lib/puppet/rrd</p>
<p>&nbsp;</p>
<p>d)        启动服务</p>
<p>&nbsp;</p>
<p>加入site.pp</p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#cd /etc/puppet/manifests
</span>
<span style="color: #666666; font-style: italic;">#vim site.pp            //启动时必须要有
</span>
<span style="color: #990000;">file</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">&quot;/tmp/testfile&quot;</span><span style="color: #339933;">:</span>
&nbsp;
ensure <span style="color: #339933;">=&gt;</span> present<span style="color: #339933;">,</span>
&nbsp;
owner <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;root&quot;</span><span style="color: #339933;">,</span>
&nbsp;
group <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;root&quot;</span><span style="color: #339933;">,</span>
&nbsp;
mode <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">644</span><span style="color: #339933;">,</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>第一次启动时puppet会自动创建所需的文件，包括一系列证书文件等</p>
<p>&nbsp;</p>
<p>#service puppetmaster start</p>
<p>服务端会占用8140端口。</p>
<p><strong>5. </strong><strong>客户端的设定</strong></p>
<p>&nbsp;</p>
<p>a)         修改/etc/hosts文件</p>
<p>加入</p>
<p>116.61.61.1    server.ipcpu.com</p>
<p>&nbsp;</p>
<p>b)        复制配置文件</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#mkdir /etc/puppet
</span>
<span style="color: #666666; font-style: italic;">#cp conf/auth.conf /etc/puppet/
</span>
<span style="color: #666666; font-style: italic;">#cp conf/namespaceauth.conf /etc/puppet/
</span>
<span style="color: #666666; font-style: italic;">#cp conf/redhat/puppet.conf /etc/puppet/
</span>
<span style="color: #666666; font-style: italic;">#cp conf/redhat/client.init /etc/init.d/puppet
</span>
<span style="color: #666666; font-style: italic;">#chmod +x /etc/init.d/puppet
</span>
<span style="color: #666666; font-style: italic;">#chkconfig --add puppet
</span>
<span style="color: #666666; font-style: italic;">#chkconfig puppet on</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>c)        创建puppet帐号</p>
<p># puppetd –mkusers</p>
<p>如果报错也可以使用puppetmasterd –mkusers来生成用户，但会出现常见错误1，后面有解决办法</p>
<p>确认存在puppet账户和下面目录权限</p>
<p>#mkdir –r /var/lib/puppet/rrd &amp;&amp;chown puppet.puppet /var/lib/puppet/rrd</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>d)        编辑配置文件</p>
<p>#vim  /etc/puppet/puppet.conf</p>
<p>&nbsp;</p>
<p>加入：</p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">server<span style="color: #339933;">=</span>server<span style="color: #339933;">.</span>ipcpu<span style="color: #339933;">.</span>com
&nbsp;
listen <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>#vim /etc/puppet/namespaceauth.conf</p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>fileserver<span style="color: #009900;">&#93;</span>
&nbsp;
allow <span style="color: #339933;">*</span>
&nbsp;
<span style="color: #009900;">&#91;</span>puppetmaster<span style="color: #009900;">&#93;</span>
&nbsp;
allow <span style="color: #339933;">*</span>
&nbsp;
<span style="color: #009900;">&#91;</span>puppetrunner<span style="color: #009900;">&#93;</span>
&nbsp;
allow <span style="color: #339933;">*</span>
&nbsp;
<span style="color: #009900;">&#91;</span>puppetbucket<span style="color: #009900;">&#93;</span>
&nbsp;
allow <span style="color: #339933;">*</span>
&nbsp;
<span style="color: #009900;">&#91;</span>puppetreports<span style="color: #009900;">&#93;</span>
&nbsp;
allow <span style="color: #339933;">*</span>
&nbsp;
<span style="color: #009900;">&#91;</span>resource<span style="color: #009900;">&#93;</span>
&nbsp;
allow <span style="color: #339933;">*</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>e)         启动客户端服务</p>
<p>#service puppet start</p>
<p>客户端会占用8139端口。</p>
<p>&nbsp;</p>
<p>本文还有后半截：<a href="http://www.ipcpu.com/2011/06/puppet-install-two/" target="_blank">Puppet的安装（二）</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcpu.com/2011/06/puppet-install-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

