﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xiaomage234-随笔分类-shell</title><link>http://www.blogjava.net/xiaomage234/category/28165.html</link><description>生命本就是一次凄美的漂流，记忆中放不下的，永远是孩提时代的那一份浪漫与纯真！</description><language>zh-cn</language><lastBuildDate>Thu, 17 Sep 2015 07:12:17 GMT</lastBuildDate><pubDate>Thu, 17 Sep 2015 07:12:17 GMT</pubDate><ttl>60</ttl><item><title>linux nc(netcat)命令详解</title><link>http://www.blogjava.net/xiaomage234/archive/2015/09/16/427347.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Wed, 16 Sep 2015 01:01:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2015/09/16/427347.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/427347.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2015/09/16/427347.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/427347.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/427347.html</trackback:ping><description><![CDATA[<div id="art_desc" style="clear: both; border: 1px dashed #bfdfff; color: #444444; padding: 3px; word-wrap: break-word; word-break: break-all; line-height: 25.2000007629395px; text-indent: 20px; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background: #ffffff;"><div>NetCat，在网络工具中有ldquo;瑞士军刀rdquo;美誉，其有Windows和Linux的版本。因为它短小精悍（1.84版本也不过25k，旧版本或缩</div></div><div id="con_all" style="clear: both; padding-top: 20px; padding-bottom: 20px; margin: 0px; overflow: hidden; width: 640px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; line-height: 25.2000007629395px; background-color: #f7fcff;"><div id="con_ad1" style="float: left; width: 300px; margin: 0px; overflow: hidden;"></div><div id="con_ad8" style="float: right; margin: 0px; overflow: hidden;"></div></div><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"></p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">NetCat，在网络工具中有&#8220;瑞士军刀&#8221;美誉，其有Windows和Linux的版本。因为它短小精悍（1.84版本也不过25k，旧版本或缩减版甚至更小）、功能实用，被设计为一个简单、可靠的网络工具，可通过TCP或UDP协议传输读写数据。同时，它还是一个网络应用Debug分析器，因为它可以根据需要创建各种不同类型的网络连接。</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">一、版本<br />通常的Linux发行版中都带有NetCat（简称nc），甚至在拯救模式光盘中也由busybox提供了简版的nc工具。但不同的版本，其参数的使用略有差异。<br />NetCat 官方地址：</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"><br />引用[root@hatest1 ~]# cat /etc/asianux-release<br />Asianux release 2.0 (Trinity SP2)<br />[root@hatest1 ~]# cat /etc/redflag-release<br />Red Flag DC Server release 5.0 (Trinity SP2)<br />[root@hatest1 ~]# type -a nc<br />nc is /usr/bin/nc<br />[root@hatest1 ~]# rpm -q nc<br />nc-1.10-22</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">建议在使用前，先用man nc看看帮助。这里以红旗DC Server 5.0上的1.10版本进行简单说明。<br />假设两<a href="http://www.68idc.cn/" style="text-decoration: none; color: blue;">服务器</a>信息：</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">server1: 192.168.10.10<br />server2: 192.168.10.11</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">二、常见使用<br />1、远程拷贝文件<br />从server1拷贝文件到server2上。需要先在server2上，，用nc激活监听，</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">server2上运行： nc -l 1234 &gt; text.txt</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">server1上运行： nc 192.168.10.11 1234 &lt; text.txt</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">注：server2上的监听要先打开</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"><br />2、克隆硬盘或分区<br />操作与上面的拷贝是雷同的，只需要由dd获得硬盘或分区的数据，然后传输即可。<br />克隆硬盘或分区的操作，不应在已经mount的的系统上进行。所以，需要使用安装光盘引导后，进入拯救模式（或使用Knoppix工具光盘）启动系统后，在server2上进行类似的监听动作：</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">&nbsp;nc -l -p 1234 | dd of=/dev/sda</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">server1上执行传输，即可完成从server1克隆sda硬盘到server2的任务：</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">&nbsp;dd if=/dev/sda | nc192.168.10.11 1234</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">&#8251; 完成上述工作的前提，是需要落实光盘的拯救模式支持<a href="http://www.68idc.cn/" style="text-decoration: none; color: blue;">服务器</a>上的网卡，并正确配置IP。</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">3、端口扫描<br />可以执行：</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"># nc -v -w 2 192.168.10.11 -z 21-24<br />nc: connect to 192.168.10.11 port 21 (tcp) failed: Connection refused<br />Connection to 192.168.10.11 22 port [tcp/ssh] succeeded!<br />nc: connect to 192.168.10.11 port 23 (tcp) failed: Connection refused<br />nc: connect to 192.168.10.11 port 24 (tcp) failed: Connection refused&nbsp;<br />-z后面跟的是要扫描的端口</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"><br />4、保存Web页面</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"># while true; do nc -l -p 80 -q 1 &lt; somepage.html; done</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"><br />5、模拟HTTP Headers</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">引用[root@hatest1 ~]# nc 80<br />GET / HTTP/1.1<br />Host: ispconfig.org<br />Referrer: mypage.com<br />User-Agent: my-browser</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">HTTP/1.1 200 OK<br />Date: Tue, 16 Dec 2008 07:23:24 GMT<br />Server: Apache/2.2.6 (Unix) DAV/2 mod_mono/1.2.1 mod_python/3.2.8 Python/2.4.3 mod_perl/2.0.2 Perl/v5.8.8<br />Set-Cookie: PHPSESSID=bbadorbvie1gn037iih6lrdg50; path=/<br />Expires: 0<br />Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0<br />Pragma: no-cache<br />Cache-Control: private, post-check=0, pre-check=0, max-age=0<br />Set-Cookie: oWn_sid=xRutAY; expires=Tue, 23-Dec-2008 07:23:24 GMT; path=/<br />Vary: Accept-Encoding<br />Transfer-Encoding: chunked<br />Content-Type: text/html<br />[......]</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">在nc命令后，输入红色部分的内容，然后按两次回车，即可从对方获得HTTP Headers内容。</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">6、聊天<br />nc还可以作为简单的字符下聊天工具使用，同样的，server2上需要启动监听：</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">server2上启动：# nc -lp 1234&nbsp;<br />server1上传输：# nc 192.168.10.11 1234</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"><br />这样，双方就可以相互交流了。使用Ctrl+D正常退出。</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">7、传输目录<br />从server1拷贝nginx-0.6.34目录内容到server2上。需要先在server2上，用nc激活监听，</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">server2上运行：# nc -l 1234 |tar xzvf -</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">server1上运行：# tar czvf - nginx-0.6.34|nc 192.168.10.11 1234</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">&nbsp;</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;"><br />8、用nc命名操作memcached</p><p style="margin: 13px 0px; padding: 0px; line-height: 25px; color: #444444; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background-color: #f7fcff;">1）存储数据：printf &#8220;set key 0 10 6rnresultrn&#8221; |nc 192.168.10.11 11211<br />2）获取数据：printf &#8220;get keyrn&#8221; |nc 192.168.10.11 11211<br />3）删除数据：printf &#8220;delete keyrn&#8221; |nc 192.168.10.11 11211<br />4）查看状态：printf &#8220;statsrn&#8221; |nc 192.168.10.11 11211<br />5）模拟top命令查看状态：watch &#8220;echo stats&#8221; |nc 192.168.10.11 11211<br />6）清空缓存：printf &#8220;flush_allrn&#8221; |nc 192.168.10.11 11211 (小心操作，清空了缓存就没了）</p><img src ="http://www.blogjava.net/xiaomage234/aggbug/427347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2015-09-16 09:01 <a href="http://www.blogjava.net/xiaomage234/archive/2015/09/16/427347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux mount 工作组服务器</title><link>http://www.blogjava.net/xiaomage234/archive/2012/07/04/382197.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Wed, 04 Jul 2012 07:34:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2012/07/04/382197.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/382197.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2012/07/04/382197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/382197.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/382197.html</trackback:ping><description><![CDATA[<div>#!/bin/sh<br /><br />defaultHost=//192.168.0.1/proj<br />defaultUserName=root<br />mountPath=/path/proj<br />host=$defaultHost<br />userName=$defaultUserName<br /><br />if [ $# -eq 1 ] <br />then<br />&nbsp;&nbsp;&nbsp; host=$1<br />&nbsp;&nbsp;&nbsp; umount -l $mountPath<br />elif [ $# -eq 2 ] <br />then<br />&nbsp;&nbsp;&nbsp; host=$1<br />&nbsp;&nbsp;&nbsp; userName=$2<br />&nbsp;&nbsp;&nbsp; umount -l $mountPath<br />elif [ $# -eq 3 ] <br />then<br />&nbsp;&nbsp;&nbsp; host=$1<br />&nbsp;&nbsp;&nbsp; userName=$2<br />&nbsp;&nbsp;&nbsp; mountPath=$3<br />&nbsp;&nbsp;&nbsp; umount -l $mountPath<br />fi<br />scmd="mount -t cifs -o user=$userName,password=workstation,rw,file_mode=0777,dir_mode=0777 $host $mountPath"<br />echo $scmd<br />eval $scmd<br /></div><img src ="http://www.blogjava.net/xiaomage234/aggbug/382197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2012-07-04 15:34 <a href="http://www.blogjava.net/xiaomage234/archive/2012/07/04/382197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实用的shell脚本命令和脚本【原创】</title><link>http://www.blogjava.net/xiaomage234/archive/2012/03/15/371968.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Thu, 15 Mar 2012 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2012/03/15/371968.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/371968.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2012/03/15/371968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/371968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/371968.html</trackback:ping><description><![CDATA[<div><div>最常用的10大shell命令:</div> <div>1&nbsp;grep&nbsp;key&nbsp;./file*&nbsp;-IR</div> <div>2&nbsp;find&nbsp;.&nbsp;-name&nbsp;"xxx"&nbsp;--exec&nbsp;rm&nbsp;-rf&nbsp;{}&nbsp;\;</div> <div>3&nbsp;rsync&nbsp;-avP&nbsp;-e&nbsp;ssh&nbsp;--exclude="config"&nbsp;/src/*&nbsp;/dest/</div> <div>4&nbsp;tail&nbsp;-5&nbsp;/etc/passwd&nbsp;|&nbsp;awk&nbsp;-F:&nbsp;'BEGIN{t=0}{t=t+$3}END{print&nbsp;t}'</div> <div>5&nbsp;sed&nbsp;-i&nbsp;'s/abc/123/'&nbsp;tmp</div> <div>6&nbsp;ps&nbsp;aux&nbsp;|grep&nbsp;mysql</div> <div>7&nbsp;df&nbsp;&nbsp;-lh</div> <div>8&nbsp;du&nbsp;/usr/local/&nbsp;-lh&nbsp;--max-depth=1</div> <div>9&nbsp;cat&nbsp;/etc/passwd&nbsp;|&nbsp;sort&nbsp;|uniq&nbsp;-c&nbsp;|wc&nbsp;-l</div> <div>10&nbsp;netstat -an | awk '/^tcp/ {++arr[$NF];++arr["TOTAL_REQ"]} END{for(key in arr)print key,"\t",arr[key]}' | sort<br /><br /><br /><br />测试脚本:<br /><div></div><div>#!/bin/bash</div><div>#stat by datestr</div><div>function stathour()</div><div>{</div><div>&nbsp; &nbsp; datestr=$1</div><div>&nbsp; &nbsp; for file in `ls ./thumnail_log/TESTSERVER_downloadstat_${datestr}* | awk '{print $NF}'`</div><div>&nbsp; &nbsp; do</div><div><span style="white-space:pre">			</span>echo $file<span style="white-space:pre">	</span></div><div><span style="white-space:pre">			</span>awk '{print $10}' $file |sort -n |uniq -c</div><div>&nbsp; &nbsp; done</div><div>}</div><div></div><div>function statday()</div><div>{</div><div>&nbsp; &nbsp; datestr=$1</div><div>&nbsp; &nbsp; echo $datestr</div><div>&nbsp; &nbsp; awk '{print $10}' ./thumnail_log/TESTSERVER_downloadstat_${datestr}* |sort -n |uniq -c</div><div>}</div><div></div><div>function statperson()</div><div>{</div><div>&nbsp; &nbsp; datestr=$1</div><div>&nbsp; &nbsp; echo $datestr</div><div>&nbsp; &nbsp; awk '{if($10=1)print $1,$10}' ./thumnail_log/TESTSERVER_downloadstat_${datestr}* |sort -n |uniq -c |sort -n |wc -l</div><div>}</div><div></div><div>function getstartday()</div><div>{</div><div>&nbsp; &nbsp; local startday=""</div><div>&nbsp; &nbsp; if [ $# -lt 1 ]</div><div>&nbsp; &nbsp; then</div><div>&nbsp; &nbsp; &nbsp; &nbsp;startday="2012-03-09"</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; &nbsp; &nbsp;startday=$1</div><div>&nbsp; &nbsp; fi</div><div>&nbsp; &nbsp; echo $startday</div><div>}</div><div></div><div>today=`date -d "tomorrow" +'%Y-%m-%d'`</div><div></div><div>startday=`getstartday $1`</div><div>cmd=$2</div><div>if [ -z $2 ];then</div><div>&nbsp; &nbsp; cmd="d"</div><div>fi</div><div>echo "cmd:$cmd"</div><div></div><div>while [ $startday != $today ]</div><div>do</div><div>&nbsp; &nbsp;#echo $startday</div><div>&nbsp; &nbsp;case $cmd in</div><div>&nbsp; &nbsp; &nbsp; h) stathour $startday;;</div><div>&nbsp; &nbsp; &nbsp; d) statday $startday;;</div><div>&nbsp; &nbsp; &nbsp; p) statperson $startday;;</div><div>&nbsp; &nbsp; &nbsp; *) echo 'wrong cmd!';;</div><div>&nbsp; &nbsp;esac</div><div>&nbsp; &nbsp;startday=$(date -d "$startday +1 day" +%Y-%m-%d)</div><div>done</div><div></div><div></div><div></div></div></div><img src ="http://www.blogjava.net/xiaomage234/aggbug/371968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2012-03-15 18:31 <a href="http://www.blogjava.net/xiaomage234/archive/2012/03/15/371968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux SHELL技巧</title><link>http://www.blogjava.net/xiaomage234/archive/2009/03/02/257387.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 02 Mar 2009 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2009/03/02/257387.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/257387.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2009/03/02/257387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/257387.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/257387.html</trackback:ping><description><![CDATA[<p style="font-family: Arial"><font size="4">1.删除0字节文件<br />
<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=find">find</span> -type f -size 0 -exec rm -rf {} \;<br />
<br />
2.查看进程<br />
按内存从大到小排列<br />
ps -e&nbsp;&nbsp; -o "%C&nbsp;&nbsp; : %p : %z : %a"|sort -k5 -nr<br />
<br />
3.按cpu利用率从大到小排列<br />
ps -e&nbsp;&nbsp; -o "%C&nbsp;&nbsp; : %p : %z : %a"|sort&nbsp;&nbsp; -nr<br />
<br />
4.打印说<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=cache">cache</span>里的URL<br />
grep -r -a&nbsp;&nbsp; jpg /data/cache/* | strings | grep "http:" | <span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=awk">awk</span> -F'http:' '{print "http:"$2;}'<br />
<br />
5.查看http的并发请求数及其TCP连接<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=%D7%B4%CC%AC">状态</span>：<br />
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'<br />
<br />
<br />
6. <span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=sed">sed</span> -i '/Root/s/no/yes/' /etc/<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=ssh">ssh</span>/sshd_config&nbsp;&nbsp; sed在这个文里Root的一行，匹配Root一行，将no<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=%CC%E6%BB%BB">替换</span>成yes.<br />
<br />
7.1.如何杀掉<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=mysql">mysql</span>进程：<br />
ps aux|grep mysql|grep -v grep|awk '{print $2}'|xargs kill -9 (从中了解到awk的用途)<br />
<br />
killall -TERM mysqld<br />
<br />
kill -9 `cat /usr/local/apache2/logs/httpd.pid`&nbsp;&nbsp; 试试查杀进程PID<br />
<br />
<br />
<br />
8.显示运行3级别开启的服务:<br />
ls /etc/rc3.d/S* |<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=cut">cut</span> -c 15-&nbsp;&nbsp; (从中了解到cut的用途，截取数据)<br />
<br />
9.如何在编写SHELL显示多个信息，用EOF<br />
cat &lt;&lt; EOF<br />
+--------------------------------------------------------------+<br />
| &nbsp;&nbsp; &nbsp;&nbsp; === Welcome to Tunoff services === &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; |<br />
+--------------------------------------------------------------+<br />
EOF<br />
<br />
10. for 的巧用(如给mysql建软链接)<br />
cd /usr/local/mysql/bin<br />
for i in *<br />
do ln /usr/local/mysql/bin/$i /usr/bin/$i<br />
done<br />
<br />
11. 取IP地址：<br />
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-&nbsp;&nbsp; 或者<br />
<br />
ifconfig&nbsp;&nbsp; | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'<br />
<br />
12.内存的<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=%B4%F3%D0%A1">大小</span>:<br />
free -m |grep "Mem" | awk '{print $2}'<br />
<br />
<br />
13.<br />
netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort<br />
<br />
14.查看<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=Apache">Apache</span>的并发请求数及其TCP连接状态：<br />
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'<br />
<br />
15.因为同事要统计一下<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=%B7%FE%CE%F1%C6%F7">服务器</span>下面所有的jpg的文件的大小,写了个<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=shell">shell</span>给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=%C3%FC%C1%EE">命令</span>就能解决啦.<br />
find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'<br />
<br />
<br />
CPU的数量（多核算多个CPU，cat /proc/cpuinfo |grep -c processor）越多，<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=%CF%B5%CD%B3">系统</span>负载越低，每秒能处理的请求数也越多。<br />
<br />
--------------------------------------------------------------------------------------------------------------------<br />
16&nbsp;&nbsp; CPU负载&nbsp;&nbsp; # cat /proc/loadavg<br />
检查前三个输出值是否超过了系统逻辑CPU的4倍。&nbsp;&nbsp;<br />
<br />
18&nbsp;&nbsp; CPU负载&nbsp;&nbsp; #mpstat 1 1<br />
检查%idle是否过低(比如小于5%)<br />
<br />
19&nbsp;&nbsp; 内存空间&nbsp;&nbsp; # free<br />
检查free值是否过低&nbsp;&nbsp; 也可以用 # cat /proc/meminfo<br />
<br />
20&nbsp;&nbsp; swap空间&nbsp;&nbsp; # free<br />
检查swap used值是否过高&nbsp;&nbsp; 如果swap used值过高，进一步检查swap动作是否频繁：<br />
# vmstat 1 5<br />
观察si和so值是否较大<br />
<br />
21&nbsp;&nbsp; 磁盘空间&nbsp;&nbsp; # df -h<br />
检查是否有分区使用率(Use%)过高(比如超过90%)&nbsp;&nbsp; 如发现某个分区空间接近用尽，可以进入该分区的挂载点，用以下命令找出占用空间最多的文件或目录：<br />
# du -cks * | sort -rn | head -n 10<br />
<br />
22&nbsp;&nbsp; 磁盘I/O负载&nbsp;&nbsp; # iostat -x 1 2<br />
检查I/O使用率(%util)是否超过100%<br />
<br />
23&nbsp;&nbsp; 网络负载&nbsp;&nbsp; # sar -n DEV<br />
检查网络流量(rxbyt/s, txbyt/s)是否过高<br />
<br />
24&nbsp;&nbsp; 网络错误&nbsp;&nbsp; # netstat -i<br />
检查是否有网络错误(drop fifo colls carrier)&nbsp;&nbsp; 也可以用命令：# cat /proc/net/dev<br />
<br />
25 网络连接数目&nbsp;&nbsp; # netstat -an | grep -E &#8220;^(tcp)&#8221; | cut -c 68- | sort | uniq -c | sort -n<br />
<br />
26&nbsp;&nbsp; 进程总数&nbsp;&nbsp; # ps aux | wc -l<br />
检查进程个数是否正常 (比如超过250)<br />
<br />
27&nbsp;&nbsp; 可运行进程数目&nbsp;&nbsp; # vmwtat 1 5<br />
列给出的是可运行进程的数目，检查其是否超过系统逻辑CPU的4倍<br />
<br />
<br />
28&nbsp;&nbsp; 进程&nbsp;&nbsp; # top -id 1<br />
观察是否有异常进程出现<br />
<br />
29&nbsp;&nbsp; 网络状态&nbsp;&nbsp; 检查DNS, 网关等是否可以正常连通<br />
<br />
30&nbsp;&nbsp; 用户&nbsp;&nbsp; # who | wc -l<br />
检查登录用户是否过多 (比如超过50个)&nbsp;&nbsp; 也可以用命令：# uptime<br />
<br />
31&nbsp;&nbsp; 系统<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=%C8%D5%D6%BE">日志</span>&nbsp;&nbsp; # cat /var/log/rflogview/*errors<br />
检查是否有异常错误记录&nbsp;&nbsp; 也可以搜寻一些异常关键字，例如：<br />
# grep -i error /var/log/messages<br />
# grep -i fail /var/log/messages<br />
<br />
32&nbsp;&nbsp; 核心日志&nbsp;&nbsp; # dmesg<br />
检查是否有异常错误记录<br />
<br />
33&nbsp;&nbsp; 系统时间&nbsp;&nbsp; # date<br />
检查系统时间是否正确<br />
<br />
34&nbsp;&nbsp; 打开文件数目&nbsp;&nbsp; # lsof | wc -l<br />
检查打开文件总数是否过多<br />
<br />
35&nbsp;&nbsp; 日志&nbsp;&nbsp; # logwatch &#8211;print&nbsp;&nbsp; 配置/etc/log.d/logwatch.conf，将 Mailto 设置为自己的email 地址，启动mail服务 (sendmail或者<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=postfix">postfix</span>)，这样就可以每天收到日志报告了。<br />
缺省logwatch只报告昨天的日志，可以用# logwatch &#8211;print &#8211;range all 获得所有的<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=%C8%D5%D6%BE%B7%D6%CE%F6">日志分析</span>结果。<br />
可以用# logwatch &#8211;print &#8211;detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。<br />
<br />
36.杀掉80端口相关的进程<br />
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh<br />
<br />
37.清除僵死进程。<br />
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9<br />
<br />
38.tcpdump 抓包 ，用来防止80端口被人攻击时可以分析数据<br />
# tcpdump -c 10000 -i eth0 -n dst port 80 &gt; /root/pkts<br />
<br />
39.然后检查IP的重复数 并从小到大排序 注意 "-t\ +0"&nbsp;&nbsp; 中间是两个空格<br />
# less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0<br />
<br />
40.查看有多少个活动的<span class="t_tag" href="http://hi.baidu.com/linux%5Flife/blog/item/tag.php?name=php">php</span>-cgi进程<br />
netstat -anp | grep php-cgi | grep ^tcp | wc -l</font> </p>
<p style="font-family: Arial"></p>
<font style="font-family: Arial" size="4">chkconfig --list | awk '{if ($5=="3:on") print $1}'<br />
41.kudzu查看网卡型号<br />
kudzu --probe --class=network</font>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/257387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2009-03-02 18:02 <a href="http://www.blogjava.net/xiaomage234/archive/2009/03/02/257387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转）Linux SHELL if 命令参数说明 </title><link>http://www.blogjava.net/xiaomage234/archive/2008/03/24/188205.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 24 Mar 2008 04:10:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/03/24/188205.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/188205.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/03/24/188205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/188205.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/188205.html</trackback:ping><description><![CDATA[<p>俺反正是经常忘啊，用的时候总是翻箱倒柜的找也不是个事，把它们列在这里吧。</p>
<ul>
    <li>&#8211;b 当file存在并且是块文件时返回真
    <li>-c 当file存在并且是字符文件时返回真
    <li>-d 当pathname存在并且是一个目录时返回真
    <li>-e 当pathname指定的文件或目录存在时返回真
    <li>-f 当file存在并且是正规文件时返回真
    <li>-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
    <li>-h 当file存在并且是符号链接文件时返回真，该选项在一些老系统上无效
    <li>-k 当由pathname指定的文件或目录存在并且设置了&#8220;粘滞&#8221;位时返回真
    <li>-p 当file存在并且是命令管道时返回为真
    <li>-r 当由pathname指定的文件或目录存在并且可读时返回为真
    <li>-s 当file存在文件大小大于0时返回真
    <li>-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
    <li>-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
    <li>-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。</li>
</ul>
<p>UNIX Shell 里面比较字符写法：</p>
<ul>
    <li>-eq&nbsp;&nbsp; 等于
    <li>-ne&nbsp;&nbsp;&nbsp; 不等于
    <li>-gt&nbsp;&nbsp;&nbsp; 大于
    <li>-lt&nbsp;&nbsp;&nbsp; 小于
    <li>-le&nbsp;&nbsp;&nbsp; 小于等于
    <li>-ge&nbsp;&nbsp; 大于等于
    <li>-z&nbsp;&nbsp;&nbsp; 空串
    <li>= &nbsp;&nbsp; 两个字符相等
    <li>!=&nbsp;&nbsp;&nbsp; 两个字符不等
    <li>-n&nbsp;&nbsp;&nbsp; 非空串</li>
</ul>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/188205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-03-24 12:10 <a href="http://www.blogjava.net/xiaomage234/archive/2008/03/24/188205.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用shell的find命令删除n天前的文件</title><link>http://www.blogjava.net/xiaomage234/archive/2007/12/21/169479.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Fri, 21 Dec 2007 15:43:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2007/12/21/169479.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/169479.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2007/12/21/169479.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/169479.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/169479.html</trackback:ping><description><![CDATA[主要是利用find命令的mtime参数n[n为整数]，表示最后修改时间在n*24小时之前。<br />
&nbsp;n要带符号。<br />
可实际上 +0 的含义并不是表示0小时之前，而是表示24小时之前，跟 n=1的含义一样。<br />
<br />
值得一提的是还有两个类似的参数 atime和ctime。<br />
atime表示文件的最后访问时间，ctime表示文件的最后状态修改时间.<br />
<br />
这里将完整的脚本贴出来：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">#</span><span style="color: #000000">!/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">bash<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#删除tmp目录下符合&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">.htm模式的文件，不进行递归。<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />ARCHDIR</span><span style="color: #000000">=/</span><span style="color: #000000">tmp</span><span style="color: #000000">/</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />ARCHDAY</span><span style="color: #000000">=+</span><span style="color: #000000">0</span><span style="color: #000000"><br />
</span><span style="color: #008080">5&nbsp;&nbsp;&nbsp; </span><span style="color: #000000">find&nbsp;$ARCHDIR&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">mtime&nbsp;$ARCHDAY&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">a&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">type&nbsp;f&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">a&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">name&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">*.htm</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">maxdepth&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">exec&nbsp;ls&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">l&nbsp;</span><span id="Codehighlighter1_149_150_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000">&nbsp;\;<br />
</span><span style="color: #008080">6&nbsp;&nbsp;&nbsp; </span><span style="color: #000000">find&nbsp;$ARCHDIR&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">mtime&nbsp;$ARCHDAY&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">a&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">type&nbsp;f&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">a&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">name&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">*.htm</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">maxdepth&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">exec&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">rm&nbsp;</span><span id="Codehighlighter1_240_241_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000">&nbsp;\;</span></div>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/169479.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2007-12-21 23:43 <a href="http://www.blogjava.net/xiaomage234/archive/2007/12/21/169479.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BlogJava之unix shell编程</title><link>http://www.blogjava.net/xiaomage234/archive/2007/12/09/166420.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Sun, 09 Dec 2007 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2007/12/09/166420.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/166420.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2007/12/09/166420.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/166420.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/166420.html</trackback:ping><description><![CDATA[通俗点讲，shell就是跟unix系统核心服务之间的调用接口，它是解释执行的，不需要编译，这点很爽。<br />
shell的功能很强大，基本unix有的服务，都可以通过shell去调用，对于系统管理员是必备的技能，可以节约不少时间，提高效率。<br />
shell里，awk,sed,grep这3种类型功能最强大。<br />
awk提供字符串处理功能，方便进行分析统计；<br />
sed是流文本编辑命令工具，功能大于vi；<br />
grep能根据正则表达式进行查找，支持管道过滤。<br />
这里根据工作用到的一个每天定时清除n天之前的mysql数据库文件为例。<br />
主要是依据每天生成的表的日期字符串跟7天前字符串的值进行比较。[这里是大小比较]<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">#</span><span style="color: #000000">!/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">bash<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />datestr</span><span style="color: #000000">=</span><span style="color: #000000">`date&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">date</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">7&nbsp;day&nbsp;ago</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+%</span><span style="color: #000000">Y</span><span style="color: #000000">%</span><span style="color: #000000">m</span><span style="color: #000000">%</span><span style="color: #000000">d`<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />find&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">mysql</span><span style="color: #000000">-</span><span style="color: #000000">standard</span><span style="color: #000000">-</span><span style="color: #000000">4.1</span><span style="color: #000000">.</span><span style="color: #000000">7</span><span style="color: #000000">-</span><span style="color: #000000">pc</span><span style="color: #000000">-</span><span style="color: #000000">linux</span><span style="color: #000000">-</span><span style="color: #000000">i686</span><span style="color: #000000">/</span><span style="color: #000000">data</span><span style="color: #000000">/</span><span style="color: #000000">movie_pvfrom</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">name&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">*.frm</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">a&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">name&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">*_200*</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">o&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">name&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">*.MYD</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">a&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">name&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">*_2</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">00</span><span style="color: #000000">*</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;-o&nbsp;-name&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">*</span><span style="color: #000000">.MYI</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;&nbsp;-a&nbsp;-name&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">*</span><span style="color: #000000">_200</span><span style="color: #000000">*</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;&gt;&nbsp;tmp</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">fileList</span><span style="color: #000000">=</span><span style="color: #000000">`more&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;tmp`<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;fileName&nbsp;in&nbsp;$fileList<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">do</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />MovedDir2</span><span style="color: #000000">=</span><span style="color: #000000">`echo&nbsp;$fileName</span><span style="color: #000000">|</span><span style="color: #000000">awk&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">F</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">{print&nbsp;$NF}</span><span style="color: #000000">'</span><span style="color: #000000">|</span><span style="color: #000000">awk&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">F_&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">{print&nbsp;substr($NF,&nbsp;0,&nbsp;8)}</span><span style="color: #000000">'</span><span style="color: #000000">`<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;[&nbsp;$MovedDir2&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">lt&nbsp;$datestr&nbsp;]<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />then<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />echo&nbsp;$fileName<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />rm&nbsp;$fileName<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />fi<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />done</span></div>
<br />
一行一行解释一下：<br />
1，表示这个脚本以bash shell来解释执行；<br />
2，date命令，设置变量datestr为7天前的年月日格式的值;<br />
3,4,&nbsp; 查找数据库文件目录下的.frm,.MYD,.MYI文件，并且文件名含有"_200"字符串，将这些文件的路径重定向到 tmp文件;<br />
5,将tmp的数据读到变量fileList;<br />
6,7,14,循环结构，每次读一行数据；<br />
8，设置变量MovedDir2的值为一行数据的最后一个"/"分隔号值的最后一个"_"分隔号的前8位字符.<br />
[假设一行数据为"/usr/local/mysql-standard-4.1.7-pc-linux-i686/data/movie_end/end_20071206.MYI"，那么变量MovedDir2的值为 20071206]<br />
9,10,13,判断 变量MovedDir2的值 是否小于datestr的值，条件判断结构；<br />
11，回显 变量fileName的值；<br />
12，删除变量fileName定位的文件；<br />
<br />
demo总结：<br />
1，循环，判断结构的使用；<br />
2，date,find,awk,rm命令的利用；<br />
3，重定向符 "&gt;"的使用，管道"|"的使用。<br />
<br />
 <img src ="http://www.blogjava.net/xiaomage234/aggbug/166420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2007-12-09 11:42 <a href="http://www.blogjava.net/xiaomage234/archive/2007/12/09/166420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>