??xml version="1.0" encoding="utf-8" standalone="yes"?>老司机亚洲精品影视www,色偷偷噜噜噜亚洲男人,亚洲一级特黄大片在线观看http://www.tkk7.com/huyi2006/category/27153.html专注于网l应用开发,电信增值服务,数据挖掘Q通信工程 --武汉---zh-cnSat, 05 Apr 2008 09:31:51 GMTSat, 05 Apr 2008 09:31:51 GMT60linux下通过脚本实现自动重启E序http://www.tkk7.com/huyi2006/articles/190902.html胡意胡意Sat, 05 Apr 2008 05:35:00 GMThttp://www.tkk7.com/huyi2006/articles/190902.htmlhttp://www.tkk7.com/huyi2006/comments/190902.htmlhttp://www.tkk7.com/huyi2006/articles/190902.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/190902.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/190902.html无论什么程序都不可能完无~,理论上,ME序都有 Core Dump 的一天,正式q营的程序,其是服务器E序Q一?/span> Core Dump Q后果不堪设惻I有过服务器开发经验的朋友Q一定都l历q深夜美梦中Q被电话惊醒的惨痛经历,手忙脚ؕ把服务器重新启动Q第二天上班q要被老板一狠扏V所以,E序发生错误时自动重启变得很重要。这里集中讨?/span> linux 实现自动重启E序的方法?/span>

    linux 下实现程序的自动重启有很多方法,q里我们介绍的是通过自己写脚本来实现Q?br />
    自动重启脚本


假定需要实现重启的E序名ؓ
test Q我们这里通过判断q程数目来判断程序是否正常?/span>

ps -ef | grep "$1" | grep -v "grep" | wc –l 是获?/span> $1 Q本例中?/span> test Q的q程敎ͼ脚本Ҏq程数来军_下一步的操作。通过一个死循环Q每?/span> 1 U检查一ơ系l中的指定程序的q程数?/span>

代码如下Q?br />    脚本check

																		#!/bin/sh
																
																		#------------------------------------------------------------------------------
# 函数: CheckProcess
# 功能: 查一个进E是否存?br /># 参数: $1 --- 要检查的q程名称
# q回: 如果存在q回0, 否则q回1.
#------------------------------------------------------------------------------
CheckProcess()
{
  # 查输入的参数是否有效
  if [ "$1" = "" ];
  then
    return 1
  fi
 
  #$PROCESS_NUM获取指定q程名的数目Qؓ1q回0Q表C正常,不ؓ1q回1Q表C有错误Q需要重新启?br />  PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`
  if [ $PROCESS_NUM -eq 1 ];
  then
    return 0
  else
    return 1
  fi
}
																		# 查test实例是否已经存在
while [ 1 ] ; do
 CheckProcess "test"
 CheckQQ_RET=$?
 if [ $CheckQQ_RET -eq 1 ];
 then

# 杀L有testq程Q可换Q意你需要执行的操作


  killall -9 test
  exec ./test &  
 fi
 sleep 1
done



    脚本startQ?/strong>
    加入limit coredumpsize 102400Q设|core file的大,一旦程序Core DumpQ有q可寅R在该脚本中后台执行check脚本Q可以省d多麻烦,

																		#!/bin/csh
limit coredumpsize 102400
																		./check &
																


 



胡意 2008-04-05 13:35 发表评论
]]>
讄crondhttp://www.tkk7.com/huyi2006/articles/189237.html胡意胡意Fri, 28 Mar 2008 04:20:00 GMThttp://www.tkk7.com/huyi2006/articles/189237.htmlhttp://www.tkk7.com/huyi2006/comments/189237.htmlhttp://www.tkk7.com/huyi2006/articles/189237.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/189237.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/189237.html

讄crond

本文来自redhat官方文

Cron是根据月、天、周、时间的l合讑֮Q周期性的执行特定d的守护程序?Cron需要系l处于运行状态。如果系l未q行Q则计划d无法被执行。要使用cron服务, 需安装vixie-cron RPM?也要保crond处于q行状态。用rpm -q vixie-cron?定此Y件包是否安装.?sbin/service crond status?定crond?否处于运行状态?cron的主要配|文件在以下?etc/crontab文g??含如下行

 SHELL=/bin/bash 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin 
 MAILTO=root 
 HOME=/ 
 # run-parts 
 01 * * * * root run-parts /etc/cron.hourly 
 02 4 * * * root run-parts /etc/cron.daily 
 22 4 * * 0 root run-parts /etc/cron.weekly 
 42 4 1 * * root run-parts /etc/cron.monthly 

?四行是有兌|cron?务运行的环境变量. SHELL?量的值指定系l用的SHELL???样例为bash shell)QPATH?量定义了执行命o的\径。Cron?输出以电子邮件的形式发给MSILTO?量定义的用户? ?果MAILTO?量定义ؓI字W串(MAILTO=""), 电子邮g?会被发? ?行命令或脚本时HOME?量可用来讄家目录?

??etc/crontab?每行d的描q格式如?

minute hour day_of_month month day_of_week command

  • minute - ? ?59?整数
  • hour - ??3?整数
  • day - ??1?整数 (必须是指定月份的有效日期)
  • month - ??2?整数 (或如Jan或Feb写的月䆾)
  • dayofweek - ??的整?0?用来描述周日 (?用Sun或Mon 写来表示)
  • command - 需要执行的命o(?用as ls /proc >> /tmp/proc?执行自定义脚本的命o)

?于以上各语句,??*)?C所有可用的? ??*?指代month?表示每月执行Q需要符合其他限制条Ӟ该命令?

?数间的连字号(-)?C整数列,??-4?思是整数1,2,3,4.

?定数值由逗号分开。如Q?,4,6,8?C四个指定整数.

W?号?”指 定步q设|??<interger>”表 C步q倹{如0-59/2?义每两分钟执行一ơ。步qg可用星号表示。如*/3?来运行每三个月䆾q行指定d.

以?”开 头的为注释行,?会被执行?

?文g/etc/crontab所 C??在RUNQPART?本中指定pȝ每小Ӟ每天Q每周。每月运?cron.hourly, /etc/cron.daily, /etc/cron.weekly, ?etc/cron.monthly?的文?q?些目录中的文件ؓshell?本?

?果一个cron?务需要定期而不是按时,???来执??需要添?etc/cron.d?? q?个目录下的所有文件和文g/etc/crontab?法相? ?看样?

 # record the memory usage of the system every monday 
 # at 3:30AM in the file /tmp/meminfo 
 30 3 * * mon cat /proc/meminfo >> /tmp/meminfo 
 # run custom script the first day of every month at 4:10AM 
 10 4 1 * * /root/scripts/backup.sh 

?了root?户之外的用户可以执行crontab?|计划Q务。所有用户定义的crontab?储在目录/var/spool/cron? ?务会以创的w䆾被执行。要以特定用户创Z个crontab, ?以该用户d,?行命令crontab -e, pȝ会启动在VISUAL?者EDITOR?指定的的~辑软g~辑crontab. ?件内容与/etc/crontab?式相? ?更改的crontab需 要保存时,?件会保存在成如下文g/var/spool/cron/username.?件名会根据用户名而不同?

cron ?务会每分钟检查一?etc/crontab, /etc/cron.d/, ?var/spool/cron?件下的变??果发现变??会下载到存储器中.???时crontab?件改变了,E?序也不需要重新启动?/p>

胡意 2008-03-28 12:20 发表评论
]]>
Bash 试和比较函?http://www.tkk7.com/huyi2006/articles/188617.html胡意胡意Tue, 25 Mar 2008 15:51:00 GMThttp://www.tkk7.com/huyi2006/articles/188617.htmlhttp://www.tkk7.com/huyi2006/comments/188617.htmlhttp://www.tkk7.com/huyi2006/articles/188617.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/188617.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/188617.html您是否ؓ Bash shell 中大量的试和比较选项而困惑呢Q这个技巧可以帮助您解密不同cd的文件、算术和字符串测试,q样您就能够知道什么时候?test?[ ]?[[ ]]?(( )) ?if-then-else 了?/blockquote>

Bash shell 在当今的许多 Linux] ?UNIX] pȝ上都可用,?Linux 上常见的默认 shell。Bash 包含强大的编E功能,其中包括丰富的可试文gcd和属性的函数Q以及在多数~程语言中可以用的术和字W串比较函数。理解不同的试q认识到 shell q能把一些操作符解释?shell 元字W,是成为高U?shell 用户的重要一步。这文章摘?developerWorks 教程 LPI exam 102 prep: Shells, scripting, programming, and compilingQ介l了如何理解和?Bash shell 的测试和比较操作?/p>

q个技巧解释了 shell 试和比较函敎ͼ演示了如何向 shell d~程功能。您可能已经看到q?&& ?|| 操作W的?shell 逻辑Q它允许您根据前一条命令的退出状态(正确退出或伴随错误退出)而执行后一条命令。在q个技巧中Q将看到如何把这些基本的技术扩展成更复杂的 shell ~程?/p>

在Q何一U编E语a中,学习了如何给变量分配值和传递参C后,都需要测试这些值和参数。在 shell 中,试会设|返回的状态,q与其他命o执行的功能相同。实际上Q?code>test 是个内置命oQ?/p>

test ?[

内置命o test Ҏ表达?i>expr 求值的l果q回 0Q真Q或 1Q假Q。也可以使用ҎPtest expr ?[ expr ] 是等L?可以?$? 查返回|可以使用 && ?|| 操作q回|也可以用本技巧后面介l的各种条gl构试q回倹{?/p>
清单 1. 一些简单测?/b>
[ian@pinguino ~]$ test 3 -gt 4 && echo True || echo false
false
[ian@pinguino ~]$ [ "abc" != "def" ];echo $?
0
[ian@pinguino ~]$ test -d "$HOME" ;echo $?
0

在清?1 的第一个示例中Q?code>-gt 操作W对两个字符g间执行算术比较。在W二个示例中Q用 [ ] 的Ş式比较两个字W串不相{。在最后一个示例中Q测?HOME 变量的|用单目操作符 -d 查它是不是目录?/p>

可以?-eq?-ne?code>-lt?-le?-gt ?-ge 比较术|它们分别表示{于、不{于、小于、小于等于、大于、大于等于?

可以分别用操作符 =?!=?code>< ?> 比较字符串是否相{、不相等或者第一个字W串的排序在W二个字W串的前面或后面。单目操作符 -z 试 null 字符Ԍ如果字符串非I?-n q回 TrueQ或者根本没有操作符Q?/p>

说明Q?/b>shell 也用 < ?> 操作W进行重定向Q所以必ȝ \< ?\> 加以转义。清?2 昄了字W串试的更多示例。检查它们是否如您预期的一栗?/p>
清单 2. 一些字W串试
[ian@pinguino ~]$ test "abc" = "def" ;echo $?
1
[ian@pinguino ~]$ [ "abc" != "def" ];echo $?
0
[ian@pinguino ~]$ [ "abc" \< "def" ];echo $?
0
[ian@pinguino ~]$ [ "abc" \> "def" ];echo $?
1
[ian@pinguino ~]$ [ "abc" \<"abc" ];echo $?
1
[ian@pinguino ~]$ [ "abc" \> "abc" ];echo $?
1

?1 昄了一些更常见的文件测试。如果被试的文件存在,而且有指定的特征Q则l果?True?/p>
?1. 一些常见的文g试
操作W?/th> 特征
-d 目录
-e 存在Q也可以?-aQ?/td>
-f 普通文?/td>
-h W号q接Q也可以?-LQ?/td>
-p 命名道
-r 可读
-s 非空
-S 套接?/td>
-w 可写
-N 从上ơ读取之后已l做q修?/td>

除了上面的单目测试,q可以用表 2 所C的双目操作W比较两个文Ӟ

?2. 试一Ҏ?/em>
操作W?/th> ?True 的情?
-nt 试 file1 是否?file2 更新。修Ҏ期将用于q次和下ơ比较?/td>
-ot 试 file1 是否?file2 旧?/td>
-ef 试 file1 是不?file2 的硬链接?

其他一些测试可以用来测试文件许可之cȝ内容。请参阅 bash 手册获得更多l节或?help test 查看内置试的简要信息。也可以?help 命o了解其他内置命o?/p>

-o 操作W允许测试利?set -o 选项 讄的各U?shell 选项Q如果设|了该选项Q则q回 True (0)Q否则返?False (1)Q如清单 3 所C?/p>
清单 3. 试 shell 选项
[ian@pinguino ~]$ set +o nounset
[ian@pinguino ~]$ [ -o nounset ];echo $?
1
[ian@pinguino ~]$ set -u
[ian@pinguino ~]$ test  -o nounset; echo $?
0

最后,-a ?-o 选项允许使用逻辑q算W?AND ?OR 表辑ּl合在一赗单目操作符 ! 可以使测试的意义相反。可以用括号把表辑ּ分组Q覆盖默认的优先U。请C shell 通常要在?shell 中运行括号中的表辑ּQ所以需要用 \( ?\) 转义括号Q或者把q些操作W括在单引号或双引号内。清?4 演示了摩Ҏ则在表达式上的应用?/p>
清单 4. l合和分l测?/b>
[ian@pinguino ~]$ test "a" != "$HOME" -a 3 -ge 4 ; echo $?
1
[ian@pinguino ~]$ [ ! \( "a" = "$HOME" -o 3 -lt 4 \) ]; echo $?
1
[ian@pinguino ~]$ [ ! \( "a" = "$HOME" -o '(' 3 -lt 4 ')' ")" ]; echo $?
1

(( ?[[

test 命o非常强大Q但是很难满_转义需求以及字W串和算术比较之间的区别。幸q的是,bash 提供了其他两U测试方式,q两U方式对熟悉 C、C++ ?Java] 语法的h来说会更自然些?/p>

(( )) 复合命o 计算术表达式,如果表达式求gؓ 0Q则讄退出状态ؓ 1Q如果求gؓ?0 |则设|ؓ 0。不需要对 (( ?)) 之间的操作符转义。算术只Ҏ数进行。除 0 会生错误,但不会生溢出。可以执?C 语言中常见的术、逻辑和位操作?let 命o也能执行一个或多个术表达式。它通常用来为算术变量分配倹{?/p>


清单 5. 分配和测试算术表辑ּ

[ian@pinguino ~]$ let x=2 y=2**3 z=y*3;echo $? $x $y $z
0 2 8 24
[ian@pinguino ~]$ (( w=(y/x) + ( (~ ++x) & 0x0f ) )); echo $? $x $y $w
0 3 8 16
[ian@pinguino ~]$ (( w=(y/x) + ( (~ ++x) & 0x0f ) )); echo $? $x $y $w
0 4 8 13

同?(( )) 一P利用复合命o [[ ]] 可以Ҏ件名和字W串使用更自然的语法。可以用括号和逻辑操作W把 test 命o支持的测试组合v来?


清单 6. 使用 [[ 复合命o

[ian@pinguino ~]$ [[ ( -d "$HOME" ) && ( -w "$HOME" ) ]] &&  
>  echo "home is a writable directory"
home is a writable directory

在?= ?!= 操作W时Q复合命?[[ q能在字W串上进行模式匹配。匹配的方式像清单 7 所C的通配W匹配?/p>


清单 7. ?[[ q行通配W测?/b>

[ian@pinguino ~]$ [[ "abc def .d,x--" == a[abc]*\ ?d* ]]; echo $?
0
[ian@pinguino ~]$ [[ "abc def c" == a[abc]*\ ?d* ]]; echo $?
1
[ian@pinguino ~]$ [[ "abc def d,x" == a[abc]*\ ?d* ]]; echo $?
1

甚至q可以在 [[ 复合命o内执行算术测试,但是千万要小心。除非在 (( 复合命o内,否则 < ?> 操作W会把操作数当成字符串比较ƈ在当前排序序列中试它们的顺序。清?8 用一些示例演CZq一炏V?/p>


清单 8. ?[[ 包含术试

[ian@pinguino ~]$ [[ "abc def d,x" == a[abc]*\ ?d* || (( 3 > 2 )) ]]; echo $?
0
[ian@pinguino ~]$ [[ "abc def d,x" == a[abc]*\ ?d* || 3 -gt 2 ]]; echo $?
0
[ian@pinguino ~]$ [[ "abc def d,x" == a[abc]*\ ?d* || 3 > 2 ]]; echo $?
0
[ian@pinguino ~]$ [[ "abc def d,x" == a[abc]*\ ?d* || a > 2 ]]; echo $?
0
[ian@pinguino ~]$ [[ "abc def d,x" == a[abc]*\ ?d* || a -gt 2 ]]; echo $?
-bash: a: unbound variable

条g试

虽然使用以上的测试和 &&?|| 控制操作W能实现许多~程Q但 bash q包含了更熟悉的 “if, then, else??case l构。学习完q些之后Q将学习循环l构Q这h的工L真正得到扩展?/p>

If、then、else 语句

bash ?if 命o是个复合命oQ它试一个测试或命oQ?code>$?Q的q回|q根据返回gؓ TrueQ?Q或 FalseQ不?0Q进行分支。虽然上面的试只返?0 ?1 |但命令可能返回其他倹{请参阅 LPI exam 102 prep: Shells, scripting, programming, and compiling 教程学习q方面的更多内容?/p>

Bash 中的 if 命o有一?then 子句Q子句中包含试或命令返?0 时要执行的命令列表,可以有一个或多个可选的 elif 子句Q每个子句可执行附加的测试和一?then 子句Q子句中又带有相关的命o列表Q最后是可选的 else 子句及命令列表,在前面的试?elif 子句中的所有测试都不ؓ真的时候执行,最后?fi 标记表示该结构结束?

使用q今为止学到的东西,现在能够构徏单的计算器来计算术表达式,如清?9 所C:


清单 9. ?if、then、else 计算表达?/b>

[ian@pinguino ~]$ function mycalc ()
> {
>   local x
>   if [ $# -lt 1 ]; then
>     echo "This function evaluates arithmetic for you if you give it some"
>   elif (( $* )); then
>     let x="$*"
>     echo "$* = $x"
>   else
>     echo "$* = 0 or is not an arithmetic expression"
>   fi
> }
[ian@pinguino ~]$ mycalc 3 + 4
3 + 4 = 7
[ian@pinguino ~]$ mycalc 3 + 4**3
3 + 4**3 = 67
[ian@pinguino ~]$ mycalc 3 + (4**3 /2)
-bash: syntax error near unexpected token `('
[ian@pinguino ~]$ mycalc 3 + "(4**3 /2)"
3 + (4**3 /2) = 35
[ian@pinguino ~]$ mycalc xyz
xyz = 0 or is not an arithmetic expression
[ian@pinguino ~]$ mycalc xyz + 3 + "(4**3 /2)" + abc
xyz + 3 + (4**3 /2) + abc = 35
        

q个计算器利?local 语句?x 声明为局部变量,只能?mycalc 函数的范围内使用?code>let 函数h几个可用的选项Q可以执行与它密切关联的 declare 函数。请参?bash 手册或?help let 获得更多信息?/p>

如清?9 所C,需要确保在表达式?shell 元字W?—?例如(???gt; ?< ?—?正确地对表达式{义。无论如何,现在有了一个非常方便的计器Q可以像 shell 那样q行术计算?/p>

在清?9 中可能注意到 else 子句和最后的两个CZ。可以看刎ͼ?xyz 传递给 mycalc q没有错误,但计结果ؓ 0。这个函数还不够灵yQ不能区分最后用的CZ中的字符|所以不能警告用戗可以用字W串模式匚w试Q例?
[[ ! ("$*" == *[a-zA-Z]* ]]
Q或使用适合自己范围的Ş式)消除包含字母表字W的表达式,但是q会妨碍在输入中使用 16 q制标记Q因Z?16 q制标记时可能要?0x0f 表示 15。实际上Qshell 允许的基数最高ؓ 64Q?base#value 标记Q,所以可以在输入中加?_ ?@ 合法C用Q何字母表字符? q制?16 q制使用常用的标记方式,开头ؓ 0 表示八进Ӟ开头ؓ 0x ?0X 表示 16 q制。清?10 昄了一些示例?/p>


清单 10. 用不同的基数q行计算

[ian@pinguino ~]$ mycalc 015
015 = 13
[ian@pinguino ~]$ mycalc 0xff
0xff = 255
[ian@pinguino ~]$ mycalc 29#37
29#37 = 94
[ian@pinguino ~]$ mycalc 64#1az
64#1az = 4771
[ian@pinguino ~]$ mycalc 64#1azA
64#1azA = 305380
[ian@pinguino ~]$ mycalc 64#1azA_@
64#1azA_@ = 1250840574
[ian@pinguino ~]$ mycalc 64#1az*64**3 + 64#A_@
64#1az*64**3 + 64#A_@ = 1250840574

对输入进行的额外处理出了本技巧的范围Q所以请心使用q个计算器?/p>

elif 语句非常方便。它允许化羃q,从而有助于脚本~写。在清单 11 中可能会?type 命o?mycalc 函数中的输出感到惊讶?/p>


清单 11. Type mycalc

[ian@pinguino ~]$ type mycalc
mycalc is a function
mycalc ()
{
    local x;
    if [ $# -lt 1 ]; then
        echo "This function evaluates arithmetic for you if you give it some";
    else
        if (( $* )); then
            let x="$*";
            echo "$* = $x";
        else
            echo "$* = 0 or is not an arithmetic expression";
        fi;
    fi
}
 

当然Q也可以只用 $(( 表达?/i> )) ?echo 命oq行 shell 术q算Q如清单 12 所C。这样就不必学习关于函数或测试的M内容Q但是请注意 shell 不会解释元字W,例如 *Q因此元字符不能?(( 表达?/i> )) ?[[ 表达?/i> ]] 中那h常发挥作用?


清单 12. ?shell 中用 echo ?$(( )) 直接q行计算

[ian@pinguino ~]$  echo $((3 + (4**3 /2)))
35
 


胡意 2008-03-25 23:51 发表评论
]]>
shell 技?/title><link>http://www.tkk7.com/huyi2006/articles/188614.html</link><dc:creator>胡意</dc:creator><author>胡意</author><pubDate>Tue, 25 Mar 2008 15:09:00 GMT</pubDate><guid>http://www.tkk7.com/huyi2006/articles/188614.html</guid><wfw:comment>http://www.tkk7.com/huyi2006/comments/188614.html</wfw:comment><comments>http://www.tkk7.com/huyi2006/articles/188614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huyi2006/comments/commentRss/188614.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huyi2006/services/trackbacks/188614.html</trackback:ping><description><![CDATA[kill -9 pid &> /dev/null           <strong>屏蔽标准输出和标准错误输?br /><br />[root@localhost shell]# echo $BASH_VERSION<br />2.05b.0(1)-release<br />[root@localhost shell]# echo $PATH<br />/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/huyi/bin<br />[root@localhost shell]# $PATH=$HOME:/usr/bin<br />bash: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/huyi/bin=/root:/usr/bin: ????<br />[root@localhost shell]# <br />[root@localhost shell]# export PATH<br />[root@localhost shell]# hash<br />hits    command<br />   1    /bin/egrep<br />   1    /bin/bash<br />   1    /bin/cat<br />   1    /bin/cp<br />   1    /bin/stty<br />  15    /bin/ls<br />[root@localhost shell]# $!<br /><br />[root@localhost shell]# echo ${newfruit:-apple} <br />apple<br />[root@localhost shell]# echo ${fruit:-peach}<br />orange<br /><br />[root@localhost shell]# food=grapes<br />[root@localhost shell]# echo ${food:+pears}<br />pears<br />[root@localhost shell]# echo $food<br />grapes<br /><br /></strong><img src ="http://www.tkk7.com/huyi2006/aggbug/188614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huyi2006/" target="_blank">胡意</a> 2008-03-25 23:09 <a href="http://www.tkk7.com/huyi2006/articles/188614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centos 中vim不能昄彩色?/title><link>http://www.tkk7.com/huyi2006/articles/187903.html</link><dc:creator>胡意</dc:creator><author>胡意</author><pubDate>Sat, 22 Mar 2008 08:38:00 GMT</pubDate><guid>http://www.tkk7.com/huyi2006/articles/187903.html</guid><wfw:comment>http://www.tkk7.com/huyi2006/comments/187903.html</wfw:comment><comments>http://www.tkk7.com/huyi2006/articles/187903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huyi2006/comments/commentRss/187903.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huyi2006/services/trackbacks/187903.html</trackback:ping><description><![CDATA[ <p>今天用的centos下的vi时不能显C彩Ԍ查看了下有关vi的rpm包有四个<br />[huyi@localhost ~]$ rpm -qa|grep vim<br />vim-enhanced-7.0.109-3.el5.3<br />vim-common-7.0.109-3.el5.3<br />vim-minimal-7.0.109-3.el5.3<br />q少一个包vim-X11-7.0.109-3.el5.3Q?用centos的yum -install vim-X11,下蝲安装后?br />vi 能正常显C彩色了<br /></p> <img src ="http://www.tkk7.com/huyi2006/aggbug/187903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huyi2006/" target="_blank">胡意</a> 2008-03-22 16:38 <a href="http://www.tkk7.com/huyi2006/articles/187903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim 配置http://www.tkk7.com/huyi2006/articles/187901.html胡意胡意Sat, 22 Mar 2008 08:09:00 GMThttp://www.tkk7.com/huyi2006/articles/187901.htmlhttp://www.tkk7.com/huyi2006/comments/187901.htmlhttp://www.tkk7.com/huyi2006/articles/187901.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/187901.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/187901.html%whereis vim
vim: /usr/ports/editors/vim

在终端下使用vimq行~辑Ӟ默认情况下,~辑的界面上是没有显C受语法高亮度昄、智能羃q等功能的。ؓ了更好的在vim下进行工作,需要手动设|一个配|文Ӟ.vimrc?br />在启动vimӞ当前用户根目录下?vimrc文g会被自动dQ该文g可以包含一些设|甚臌本,所以,一般情况下?vimrc文g创徏在当前用L根目录下比较方便Q即创徏的命令ؓQ?br />$ vi ~/.vimrc
讄完后
$:x 或?$wq
q行保存退出即可?br />下面l出一个例子,其中列出了经常用到的讄Q详l的讄信息请参照参考资料:

“双引号开始的行ؓ注释行,下同
"红表示~写形式
“去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局?br />set nocompatible

“显C?br />set nummber   (set nu)

“检文件的cd
filetype on

“记录历史的行数
set history=1000

“背景用黑?br />set background=dark

“语法高亮度昄
syntax on

“下面两行在q行~写代码Ӟ在格式对起上很有用;
“第一行,vim使用自动对vQ也是把当前行的对h式应用到下一行;
“第二行Q依据上面的对v格式Q智能的选择对v方式Q对于类似C语言~?br />“写上很有用
set autoindent
set smartindent


“第一行设|tab键ؓ4个空|W二行设|当行之间交错时使用4个空?br />set tabstop=4         (set ts=4)
set shiftwidth=4


“设|匹配模式,cM当输入一个左括号时会匚w相应的那个右括号
set showmatch

“去除vim的GUI版本中的toolbar
set guioptions-=T

“当vimq行~辑Ӟ如果命o错误Q会发出一个响壎ͼ该设|去掉响?br />set vb t_vb=

“在~辑q程中,在右下角昄光标位置的状态行
set ruler

“默认情况下Q寻扑֌配是高亮度显C的Q该讄关闭高亮昄
set nohls

“查询时非常方便Q如要查找book单词Q当输入?bӞ会自动找到第一
“个b开头的单词Q当输入?boӞ会自动找到第一个bo开头的单词Q依
“次cLQ进行查找时Q用此讄会快速找到答案,当你找要匚w的单?br />“时Q别忘记回R
set incsearch

“修改一个文件后Q自动进行备份,备䆾的文件名为原文g名加“~“后~
if has(“vms?
set nobackup
else
set backup
endif

如果去除注释后,一个完整的.vimrc配置信息如下所C:

set nocompatible

set nummber

filetype on

set history=1000

set background=dark

syntax on

set autoindent
set smartindent

set tabstop=4
set shiftwidth=4

set showmatch

set guioptions-=T

set vb t_vb=

set ruler

set nohls

set incsearch

if has(“vms?
set nobackup
else
set backup
endif

如果讄完后Q发现功能没有v作用Q检查一下系l下是否安装了vim-enhanced包,查询命o为:
$rpm –q vim-enhanced
参考资料:

1Qvim的完全翻译版在下面连接处可以扑ֈ
http://vimcdoc.sourceforge.net/
可以下栽其中的一个PDF版本Q里面介l的很详l,强烈推荐Q)
2Q更详细的vim信息可以讉KQ?br />http://www.vim.org
3Q一个带有英文注释的.vimrc例子
http://www.vi-improved.org/vimrc.php
主要实现自动~进Q换行等功能?br />一个很单的.vimrc
主要实现自动~进Q换行等功能?br />set nocompatible
set columns=80
set tabstop=4
set ruler
set noexpandtab
set number
set ignorecase
set wrapmargin=15
set cindent
set shiftwidth=4
syntax on

"x备䆾文g
set nobackup

"暂时没用Q留着?br />hi CursorLine guibg=LightBlue

"高亮当前?br />set cursorline

"讄颜色Ҏ
colorscheme torte

"昄行号
set number

"x工具?br />set go=e

Windows ?Linux 下适用Q无需更改Q除了要重新讄用到的程序\径;
GUI ?Console 或终端下适用Q无需更改?br />
可在我的站点上下?查看Q?_vimrc, _vimrc.txt, _vimrc.html
http://linxiao.li.googlepages.com/vim
http://www.leal.cn

使用前需要先下蝲一?scriptsQ??_vimrc ?plugin_list.txt, plugin_list.html
同上|址?br />
使用前先查看 vimrc 的用说明?br />
Good LuckQ?/font>

胡意 2008-03-22 16:09 发表评论
]]>
linux 学习W记Q不断添加中http://www.tkk7.com/huyi2006/articles/187899.html胡意胡意Sat, 22 Mar 2008 07:26:00 GMThttp://www.tkk7.com/huyi2006/articles/187899.htmlhttp://www.tkk7.com/huyi2006/comments/187899.htmlhttp://www.tkk7.com/huyi2006/articles/187899.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/187899.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/187899.html# /etc/init.d/network restart

配置|卡
# ifconfig eth0 10.8.0.9 netmask 255.255.255.0

linux下添加默认网?br /># /etc/sysconfig/network-scripts/ifcfg-eth0
# /etc/init.d/network restart

重启eth0
ifconfig eth0 down/up

ipaddr add 192.168.1.1/24 edv eth0    d192.168.1.1/24到eth0|卡

改DNS
more    /etc/resolv.conf

关闭iptables
/etc/rc.d/init.d/iptables stop

修改启动{
/etc/inittab

胡意 2008-03-22 15:26 发表评论
]]>
bash循环d文g的每一行ƈ处理http://www.tkk7.com/huyi2006/articles/178496.html胡意胡意Wed, 30 Jan 2008 04:15:00 GMThttp://www.tkk7.com/huyi2006/articles/178496.htmlhttp://www.tkk7.com/huyi2006/comments/178496.htmlhttp://www.tkk7.com/huyi2006/articles/178496.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/178496.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/178496.htmlbash循环d文g的每一行ƈ处理

cat afile | while read oneline
do
    echo $oneline
done
q只是个单例子,把文件afile的每一行读入,然后昄出来?/p>

也可以这?如果行中有空格或者tab则无法用此Ҏ,不好意思啊,呵呵):
for i in `cat afile`
do
echo $i
done



胡意 2008-01-30 12:15 发表评论
]]>
写了一个简单的防止IPd的脚?/title><link>http://www.tkk7.com/huyi2006/articles/178495.html</link><dc:creator>胡意</dc:creator><author>胡意</author><pubDate>Wed, 30 Jan 2008 04:14:00 GMT</pubDate><guid>http://www.tkk7.com/huyi2006/articles/178495.html</guid><wfw:comment>http://www.tkk7.com/huyi2006/comments/178495.html</wfw:comment><comments>http://www.tkk7.com/huyi2006/articles/178495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huyi2006/comments/commentRss/178495.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huyi2006/services/trackbacks/178495.html</trackback:ping><description><![CDATA[ <p>写了一个简单的防止IPd的脚?br />׃工作需要我p己写了一个简单的防止IPd的脚?可以防止linux虚拟L一些小斚w的IPd</p> <p>pȝ是基于RHEL的centos,包括3,4,5三个版本,当然自己也初学shell,中间肯定用了很多W的办法,效果也不一定怎么?请大家给Ҏ?/p> <p>注意:q个脚本是根据apache服务器的server-status和系l的dmesg分析l果q行防范?所以非apache用户和没有开启server-status的朋友没法?/p> <p>可以在服务器的crontab里设定每一分钟q行一ơ脚? <br />复制下面的脚本到autoblock.sh,<br />root用户? chmod u+x autoblock.sh</p> <p>#!/bin/bash<br /># author hao32</p> <p># basic setting<br />echo 1 > /proc/sys/net/ipv4/tcp_syncookies</p> <p># find  server-status  name<br />ss_name="/usr/local/autoblock"</p> <p>if [ -e $ss_name/ss_name ];then<br />ss_n=`cat $ss_name/ss_name`<br />else<br />mkdir /usr/local/autoblock >/dev/null 2>&1<br />cat `locate httpd.conf|grep -E "httpd/conf/httpd.conf$|apache_ssl/conf/httpd.conf$"`\<br />|grep "n /server-status"|cut -d/ -f2|cut -d\> -f1 > $ss_name/ss_name<br />ss_n=`cat $ss_name/ss_name`<br />fi</p> <p># block setting<br />#讑֮排除的IP地址<br />ip_exclude="192.168.1.*|60.195.249.*|222.76.212.*|218.241.156.*|58.215.87.*|218.107.216.110"<br />ip_amou=25<br />ss_url="<a </p> <p>ss_tmp="/tmp/server-status"<br />poss_ip="/tmp/poss_ip"<br />real_ip="/tmp/real_ip"</p> <p># block start...<br />if [ -e "$poss_ip" ];then<br />echo "" > $poss_ip<br />fi<br />if [ -e "$real_ip" ];then<br />echo "" > $real_ip<br />fi</p> <p># analysedemsg<br />dmesg |grep "short"|awk '{if($4!="From"){print $4} else {print $5}}'|awk -F: '{print $1}'|sort|uniq>$poss_ip</p> <p>wget -q -O "$ss_tmp" "$ss_url"</p> <p>grep "<i>" $ss_tmp|grep -vE $ip_exclude|awk '{print $1}'|sed 's/<i>//g'|sort|uniq -c\<br />|awk '{if($1>'$ip_amou') print $2}'>>$poss_ip</p> <p>#iptables -nvL|grep "DROP  "|awk '{print $8}'|sort|uniq|sed 's/0\/24/*/g'>$rule_ip<br />rule_ip=`iptables -nvL|grep "DROP  "|awk '{print $8}'|sort|uniq|sed 's/0\/24/*/g'|xargs|sed 's/\ /|/g'`<br />if [ -z $rule_ip ];then<br />for i in `cat $poss_ip`<br />do<br />/sbin/iptables -I INPUT -p all -s $i -j DROP<br />done<br />else<br />cat $poss_ip|grep -vE "$rule_ip" > $real_ip<br />for i in `cat $real_ip`<br />do<br />/sbin/iptables -I INPUT -p all -s $i -j DROP<br />done</p> <p>fi</p> <img src ="http://www.tkk7.com/huyi2006/aggbug/178495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huyi2006/" target="_blank">胡意</a> 2008-01-30 12:14 <a href="http://www.tkk7.com/huyi2006/articles/178495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】linux安装expectl极解决Ҏhttp://www.tkk7.com/huyi2006/articles/175385.html胡意胡意Tue, 15 Jan 2008 02:19:00 GMThttp://www.tkk7.com/huyi2006/articles/175385.htmlhttp://www.tkk7.com/huyi2006/comments/175385.htmlhttp://www.tkk7.com/huyi2006/articles/175385.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/175385.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/175385.html安装ȝ
需要两个安装程?br />tcl8.4.11
expect-5.43
首先安装tcl8.4.11
Tcl ?configure 脚本有一个语法错误,下面的命令可以纠正它Q?br />sed -i "s/relid'/relid/" configure
~译tcl
cd unix
./configure --prefix=/tools
make
make install
需要的内容都拷贝到/tools目录,
Q!Q!安装完毕完先不要删除源码Q以后还要用?br />头文g目录export到环境变量,
cd ..
export TCLPATH='pwd'
不晓得ؓ什么我在configure时还是报找不到头文g的错?br />Z个必ȝW号链接
ln -sv tclsh8.4 /tools/bin/tclsh

好了Q下面就是编译expect?br />我用的是
./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no
如果?br />checking for Tcl private headers... checking for tclInt.h... no
configure: error: Can't find Tcl private headers
再添加一个头文g目录参数
 --with-tclinclude=../tcl8.4.11/generic
脚本q行正常Q进行执行makeq行~译
make
~译q程中未出现错误Q执行安装:
make install



胡意 2008-01-15 10:19 发表评论
]]>
[转]在shell脚本中用expect 实现 scp 文g的时候不手动输入密码http://www.tkk7.com/huyi2006/articles/175296.html胡意胡意Mon, 14 Jan 2008 13:14:00 GMThttp://www.tkk7.com/huyi2006/articles/175296.htmlhttp://www.tkk7.com/huyi2006/comments/175296.htmlhttp://www.tkk7.com/huyi2006/articles/175296.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/175296.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/175296.html
set password 密码

spawn scp 用户名@目标机器ip:拯文g的\?存放本地文g的\?
set timeout 300
expect "用户名@目标机器ip's password:" #注意Q这里的“用户名@目标机器ip?跟上面的一?br />set timeout 300
send "$password\r"
set timeout 300
send "exit\r"

expect eof

附:scp参数
-rQ拷贝目?br />-cQ允许压~?br />
一个完整的例子

#!/usr/bin/expect -f
set password 123456
#download
spawn scp root@192.168.1.218:/root/a.wmv /home/yangyz/
set timeout 300
expect "root@192.168.1.218's password:"
set timeout 300
send "$password\r"
set timeout 300
send "exit\r"
expect eof

#upload
spawn scp /home/yangyz/abc.sql root@192.168.1.218:/root/test.sql
set timeout 300
expect "root@192.168.1.218's password:"
set timeout 300
send "$password\r"
set timeout 300
send "exit\r"
expect eof

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1697005

胡意 2008-01-14 21:14 发表评论
]]>
用Squid实现反向代理http://www.tkk7.com/huyi2006/articles/169127.html胡意胡意Thu, 20 Dec 2007 10:45:00 GMThttp://www.tkk7.com/huyi2006/articles/169127.htmlhttp://www.tkk7.com/huyi2006/comments/169127.htmlhttp://www.tkk7.com/huyi2006/articles/169127.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/169127.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/169127.html

背景介绍 Q?span lang="EN-US">

 

    代理服务器是使用非常普遍的一U将局域网L联入互联|的一U方式,使用代理上网可以节约紧缺?span lang="EN-US">IP地址资源Q而且可以L外部L对内部主机的讉KQ内部|主机免受外部网L的攻凅R但是,如果惌互联|上的主问内部网的主源(例如Q?span lang="EN-US">Web站点Q,又想使内部网L免受外部|主机攻击,一般的代理服务是不能实现的Q需要用反向代理来实现?span lang="EN-US">

    本文详l介l反向代理服务的概念以及如何利用反向代理服务器提?span lang="EN-US">WEB服务器的性能和安全性?span lang="EN-US">

 

一Q?span style="FONT: 7pt 'Times New Roman'">       反向代理的概?

 

什么是反向代理呢?其实Q反向代理也是通常所说的WEB服务器加速,它是一U通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB~冲服务器(卻IWEB反向代理服务器)来降低实际的WEB服务器的负蝲。典型的l构如下图所C:

 

Web 服务器加速(反向代理Q是针对Web服务器提供加速功能的。它作ؓ代理CacheQ但q不针对览器用P而针对一台或多台特定Web服务器(q也是反向代理名U的由来Q。实施反向代理(如上图所C)Q只要将Reverse Proxy Cache讑֤攄在一台或多台Web服务器前端即可。当互联|用戯问某?span lang="EN-US">WEB服务器时Q通过DNS服务器解析后?span lang="EN-US">IP地址?span lang="EN-US">Reverse Proxy Server?span lang="EN-US">IP地址,而非原始Web服务器的IP地址,q时Reverse Proxy Server讑֤充当Web服务器,览器可以与它连接,无需再直接与Web服务器相q。因此,大量Web服务工作量被卸蝲到反向代理服务上。不但能够防止外部网L直接?span lang="EN-US">web服务器直接通信带来的安全隐患,而且能够很大E度上减?span lang="EN-US">web服务器的负担Q提高访问速度?/span>

 

二.       反向代理和其它代理的比较

 

    下面对几种典型的代理服务作一个简单的比较?/span> 在网l上常见的代理服务器有三U:

1Q?span style="FONT: 7pt 'Times New Roman'">  标准的代理缓冲服务器

    一个标准的代理~冲服务被用于缓存静态的|页Q例如:html文g和图片文件等Q到本地|络上的一CZQ即代理服务器)。当被缓存的面被第二次讉K的时候,览器将直接从本C理服务器那里获取h数据而不再向?span lang="EN-US">web站点h数据。这样就节省了宝늚|络带宽Q而且提高了访问速度。但是,要想实现q种方式Q必d每一个内部主机的览器上明确指明代理服务器的IP地址和端口号。客L上网Ӟ每次都把h送给代理服务器处理,代理服务器根据请求确定是否连接到q程web服务器获取数据。如果在本地~冲区有目标文gQ则直接文件传l用户即可。如果没有的话则先取回文Ӟ先在本地保存一份缓Ԍ然后文件发l客L览器?span lang="EN-US">

2Q?span style="FONT: 7pt 'Times New Roman'">  透明代理~冲服务?span lang="EN-US">

    透明代理~冲服务和标准代理服务器的功能完全相同。但是,代理操作对客L的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网l通信Qƈ且过滤出讉K外部?span lang="EN-US">HTTPQ?span lang="EN-US">80端口Q流量。如果客L的请求在本地有缓冲则缓冲的数据直接发给用户Q如果在本地没有~冲则向q程web服务器发求,其余操作和标准的代理服务器完全相同。对?span lang="EN-US">Linux操作pȝ来说Q透明代理使用Iptables或?span lang="EN-US">Ipchains实现。因Z需要对览器作M讄Q所以,透明代理对于ISPQ?span lang="EN-US">Internet服务器提供商Q特别有用?span lang="EN-US">

3Q?span style="FONT: 7pt 'Times New Roman'">  反向代理~冲服务?span lang="EN-US">

    反向代理是和前两U代理完全不同的一U代理服务。用它可以降低原始WEB服务器的负蝲。反向代理服务器承担了对原始WEB服务器的静态页面的hQ防止原始服务器q蝲。它位于本地WEB服务器和Internet之间Q处理所有对WEB服务器的hQ组l了WEB服务器和Internet的直接通信。如果互联网用户h的页面在代理服务器上有缓冲的话,代理服务器直接将~冲内容发送给用户。如果没有缓冲则先向WEB服务器发求,取回数据Q本地缓存后再发送给用户。这U方式通过降低了向WEB服务器的hC而降低了WEB服务器的负蝲?span lang="EN-US">

 

三.反向代理工作原理

    反向代理服务器位于本?span lang="EN-US">WEB服务器和Internet之间,如下图所C:

当用h览器发出一?span lang="EN-US">HTTPhӞ通过域名解析请求定向到反向代理服务器(如果要实现多?span lang="EN-US">WEB服务器的反向代理Q需要将多个WEB服务器的域名都指向反向代理服务器Q。由反向代理服务器处理器h。反向代理一般只~存可缓冲的数据Q比?span lang="EN-US">html|页和图片等Q,而一?span lang="EN-US">CGI脚本E序或?span lang="EN-US">ASP之类的程序不~存。它Ҏ?span lang="EN-US">WEB服务器返回的HTTP头标记来~冲静态页面。有四个最重要HTTP头标讎ͼ

  • Last-Modified: 告诉反向代理面什么时间被修改
  • Expires: 告诉反向代理面什么时间应该从~冲Z删除
  • Cache-Control: 告诉反向代理面是否应该被缓?/span>
  • Pragma: 告诉反向代理面是否应该被缓?span lang="EN-US">.

例如Q在默认情况下,ASP面q回?Cache-control: private.?Q所?span lang="EN-US">ASP面时不会在反向代理服务器缓存的

四. 代理服务器Y?span lang="EN-US">squid?/span>

Squid Internet Object Cache (Harvest Project 的后l版?span lang="EN-US">) 是美国政府大力助的一研I计划,其目的ؓ解决|络带宽不的问题,是现?span lang="EN-US">Unixpȝ上用者最多功能也最完整的一套Y体?span lang="EN-US">Apache?span lang="EN-US">Netscape虽附有相关的Proxy模块Q但因其功能单而不够普及。有?span lang="EN-US">squid的详l说明可?span lang="EN-US">squid|站(http://www.squid-cache.org)查询?span lang="EN-US">

Squid 最典型的应用是代理局域网的机器联入互联网Q它支持现在行的网l协议?/span> Squid 的另一w常出色的功能是实现反向代理功能?/span>

 

五.使用Squid配置反向代理Q?span lang="EN-US">HTTP 加速器Q?span lang="EN-US">

    通过squid配置反向代理主要是配置?span lang="EN-US">squid.conf”这个配|文件。下面以Linux操作pȝZq行介绍Q其它版本的?span lang="EN-US">UNIX也同样适用。在Linux?span lang="EN-US">squid如果是以源代码方式安装的话,q个文g一般在?span lang="EN-US">/usr/local/squid/etc/”目录下。如果是pȝ自带?span lang="EN-US">squidQ一般配|文件在?span lang="EN-US">/etc/squid/”目录下?span lang="EN-US">

1Q?span style="FONT: 7pt 'Times New Roman'">  Squid 反向代理单个后台WEB服务?span lang="EN-US">

如果WEB服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网l)。那么,应该修改下面的内Ҏ讄反向代理服务?span lang="EN-US">

http_port 80 # squid 监听的端?span lang="EN-US">
httpd_accel_host 172.16.250.250 #
内部WEB服务器的IP地址
httpd_accel_port 80 # WEB
服务器的IP地址
httpd_accel_single_host on #
转发为缓冲的hC台单独的机器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off

    如果WEB服务器和反向代理服务器是同一台机器。那么,应该讄WEB服务器的监听端口为非80端口Q比如:81端口Q。要修改的内容如下:

http_port 80 # squid 监听的端?span lang="EN-US">
httpd_accel_host localhost #
内部WEB服务器的IP地址
httpd_accel_port 81 # WEB
服务器的IP地址
httpd_accel_single_host on #
转发为缓冲的hC台单独的机器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off

下面解释一下配|指令?/span>

http_port 80

选项 http_port 指定squid监听HTTPh的端口,一般都讄?span lang="EN-US">80端口Q这样用户感觉不到反向代理的存在,像讉K真正?span lang="EN-US">WEB服务器一栗?/span>

httpd_accel_host 172.16.250.250 ? httpd_accel_port 80

选项httpd_accel_host ?span lang="EN-US"> httpd_accel_port 指定WEB服务器的IP地址和端口号Q可以根据自qWEB服务器的实际情况而定?/span>

httpd_accel_single_host on

选项 httpd_accel_single_host ?span lang="EN-US">on Ӟsquid被设|成仅对单一?span lang="EN-US">web服务器作反向代理。不考虑HTTP头信息,Squid转发所有的未被~冲的页面请求到q个web服务器。如?span lang="EN-US">squid需要做多个web服务器反向代理,必须此选项讄?span lang="EN-US">offQƈ且用{向器或?span lang="EN-US">DNSL请求到合适的后台WEB服务器?/span>

httpd_accel_with_proxy on

如果希望squid既作反向代理服务器又作本地机器的上网代理Q需要将httpd_accel_with_proxy 改ؓ on Q默认情况下?span lang="EN-US">off

httpd_accel_uses_host_header off

?span lang="EN-US">HTTP协议1.1中,HTTPh包括一个主机头信息Q指?span lang="EN-US">URL的主机名或者主机的IP地址。这个选项可以用来完成多个后台WEB服务器的反向代理功能?/span>

2 Q?/span> Squid 反向代理多个后台 WEB 服务?/span>

我们可以?/span> Squid 反向代理多个后台 WEB 服务器。例如:我们可以配置 squid 同时反向代理 www.abc.com, www.xyz.com, www.lmn.com 三个后台 WEB 服务器,C意囑֦下:

   

Squid 的配|如下:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_uses_host_header on

Q注?span lang="EN-US">:~译Squid旉Ȁz?span lang="EN-US">Internal DNS选项Q?span lang="EN-US">

然后讄讄反响代理需要的域名解析Q?span lang="EN-US">Internet用户通过q里解析三个|站的域名)如下Q?/span>

www.abc.com 202.102.240.74
www.xyz.com 202.102.240.74
www.lmn.com 202.102.240.74

使三个域名都指向反向代理服务器的IP地址202.102.240.74?span lang="EN-US">

下面讄反向代理所需要的DNS入口信息Q即讄内部DNSQ仅仅是squid在内部用,Internet用户不可见)。有两种Ҏ可以讄内部DNSQ用内?span lang="EN-US">DNS服务器来解析或者?span lang="EN-US">/etc/hosts文g来实现?span lang="EN-US">

使用内部DNS服务器的资源记录如下Q?/span>
www.abc.com IN A 172.16.1.2
www.xyz.com IN A 172.16.1.3
www.lmn.com IN A 172.16.1.4

如果使用/etc/hosts文g来实现内?span lang="EN-US">DNSQ编译时应?span lang="EN-US">disable internal dns选项Q?span lang="EN-US">,~辑/etc/hosts文gd如下条目Q?
172.16.1.2 www.abc.com
172.16.1.3 www.xyz.com
172.16.1.4 www.lmn.com

 

l论

    通过本文中的和相兛_例,可以看出Q反向代理方式不单是一U?span lang="EN-US">WEB服务器加速器Q而且使也一U对外提?span lang="EN-US">Web发布时用的有效的防火墙技术,使用它不但能节约紧缺?span lang="EN-US">IP地址资源Q加?span lang="EN-US">WEB服务器的讉K速度Q而且能够保护WEBLQ因此能够适应多种应用场合?/span>



胡意 2007-12-20 18:45 发表评论
]]>
dsamba用户http://www.tkk7.com/huyi2006/articles/161156.html胡意胡意Fri, 16 Nov 2007 15:35:00 GMThttp://www.tkk7.com/huyi2006/articles/161156.htmlhttp://www.tkk7.com/huyi2006/comments/161156.htmlhttp://www.tkk7.com/huyi2006/articles/161156.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/161156.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/161156.htmlsmbpasswd  -a linuxsir
然后修改 /etc/samba/smbpass.conf配置Q?br />重启 service smb restart

胡意 2007-11-16 23:35 发表评论
]]>
使用光盘及Y?/title><link>http://www.tkk7.com/huyi2006/articles/160363.html</link><dc:creator>胡意</dc:creator><author>胡意</author><pubDate>Tue, 13 Nov 2007 15:17:00 GMT</pubDate><guid>http://www.tkk7.com/huyi2006/articles/160363.html</guid><wfw:comment>http://www.tkk7.com/huyi2006/comments/160363.html</wfw:comment><comments>http://www.tkk7.com/huyi2006/articles/160363.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huyi2006/comments/commentRss/160363.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huyi2006/services/trackbacks/160363.html</trackback:ping><description><![CDATA[在Linux的文字模式下要用光盘或软盘Qƈ不是只将光盘或Y盘放入即可,用户需要运行加载的命oQ才可读写数据。所谓加载就是将存储介质(如光盘和软盘)指定成系l中的某个目??mnt/cdrom或mnt/floppy)。通过直接存取此加载目录,卛_d存储介质中的数据。以下就来看看文字模式下的加载及卸蝲命o? <p>  1Q加载的mount命o</p><p>  要用光盘时先把光盘攑օ光驱Q然后执行加载的mount命oQ将光盘加蝲至系l中:</p><p>  # mount/dev/cdrom/mnt/cdrom ?加蝲光盘</p><p>  同理Q用Y盘之前也需要和光盘一P必须先加载后才能使用:</p><p>  # mount/dev/fd0/mut/floppy ?加蝲软盘</p><p>  2Q卸载的umount命o</p><p>  如果不需要用光盘或软盘Q则需先执行卸载命令之后,才能光盘或软盘退出。范例如?</p><p>  # umount / mnt/cdrom ?光盘卸蝲</p><p>  在不使用软盘时执行umount 命o卸蝲软盘Q再Y盘拿?/p><p>  # umount / mnt/ ?软盘卸蝲</p><img src ="http://www.tkk7.com/huyi2006/aggbug/160363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huyi2006/" target="_blank">胡意</a> 2007-11-13 23:17 <a href="http://www.tkk7.com/huyi2006/articles/160363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下NFS(|络文gpȝ)的徏立与配置Ҏhttp://www.tkk7.com/huyi2006/articles/158685.html胡意胡意Tue, 06 Nov 2007 15:56:00 GMThttp://www.tkk7.com/huyi2006/articles/158685.htmlhttp://www.tkk7.com/huyi2006/comments/158685.htmlhttp://www.tkk7.com/huyi2006/articles/158685.html#Feedback0http://www.tkk7.com/huyi2006/comments/commentRss/158685.htmlhttp://www.tkk7.com/huyi2006/services/trackbacks/158685.html    在嵌入式Linux 的开发过E中Q开发者需要在Linux 服务器上q行所有的软g开发,交叉~译后,通用FTP 方式可执行文g下蝲到嵌入式pȝq行Q但q种方式不但效率低下Q且无法实现在线的调试。因此,可以通过建立NFSQ把Linux 服务器上的特定分区共享到待调试的嵌入式目标系l上Q就可以直接在嵌入式目标pȝ上操作Linux 服务器,同时可以在线对程序进行调试和修改Q大大的方便了Y件的开发。因此,NFS 的是嵌入式Linux 开发的一个重要的l成部分Q本部分内容详l说明如何配|嵌入式Linux 的NFS 开发环境?

    嵌入式Linux 的NFS 开发环境的实现包括两个斚wQ一是Linux 服务器端的NFS 服务器支持;二是嵌入式目标系l的NFS 客户端的支持。因此,NFS 开发环境的建立需要配|linux 服务器端和嵌入式目标pȝ端?

一、Linux 服务器端NFS 服务器的配置


    以root w䆾登陆Linux 服务器,~辑/etc 目录下的׃n目录配置文gexportsQ指定共享目录及权限{?

    执行如下命o~辑文g/etc/exportsQ?

   # vi /etc/exports

   在该文g里添加如下内容:

   /home/work 192.168.0.*Qrw,sync,no_root_squashQ?

   然后保存退出?

   d的内容表C:允许ip 地址范围?92.168.0.*的计机以读写的权限来访?home/work 目录?

   /home/work 也称为服务器输出׃n目录?

   括号内的参数意义描述如下Q?

   rwQ读/写权限,只读权限的参CؓroQ?

   syncQ数据同步写入内存和盘Q也可以使用asyncQ此时数据会先暂存于内存中,而不立即写入盘?
 
   no_root_squashQNFS 服务器共享目录用L属性,如果用户?rootQ那么对于这个共享目录来说就h root 的权限?

   接着执行如下命oQ启动端口映:

   # /etc/rc.d/init.d/portmap start

   最后执行如下命令启动NFS 服务Q此时NFS 会激zd护进E,然后开始监?Client 端的hQ?

   # /etc/rc.d/init.d/nfs start

   用户也可以重新启动Linux 服务器,自动启动NFS 服务?

   在NFS 服务器启动后Q还需要检查Linux 服务器的防火墙等讄Q一般需要关闭防火墙服务Q,保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptablesQipchains {选项的设|,以及/etc/hosts.denyQ?etc/hosts.allow 文g?

   我们首先在Linux 服务器上q行NFS 服务器的回环试Q验证共享目录是否能够被讉K。在Linux 服务器上q行如下命oQ?
 
   # mount –t nfs 192.168.0.20:/home/work /mnt

   # ls /mnt

   命oLinux 服务器的NFS 输出׃n目录挂蝲?mnt 目录下,因此Q如果NFS 正常工作Q应该能够在/mnt 目录看到/home/work ׃n目录中的内容?

二、嵌入式目标pȝNFS 客户端的配置


   在Linux 服务器设|好后,q需要对客户端进行相关配|。在配置内核旉择Load an Alternate Configuration File输入配置文g的\径和文g名添加内核对NFS的支持:

   选中networking optionsQ》IP:kernel level auloconfiguralion?

   选中file systemsQ》network file systemsQ》下的root file system on nfs 和nfs file system support重新~译内核下蝲bootloader和kernel到开发板?

    在嵌入式目标pȝ的Linux Shell 下,执行如下命o来进行NFS ׃n目录挂蝲Q?

    # mkdir /mnt/nfs //建立Linux 服务器输出共享目录的挂蝲点;

    # mount –t nfs 192.168.0.20:/home/work /mnt/nfs –o nolock

    # cd /mnt/nfs
 
    # ls

    此时Q嵌入式目标pȝ端所昄的内容即为Linux 服务器的输出目录的内容,即Linux 服务器的输出目?

    ?home/work 通过NFS 映射C嵌入式目标系l的/mnt/nfs 目录。用户可以用??修改文g的方式来验证实际效果。mount 命o中的192.168.0.20 为Linux 服务器的IP 地址Q?home/work 为Linux 服务器端所配置的共享输出目录,/mnt/nfs 为嵌入式讑֤上的本地目录?

    在开发过E中Q来回输入命令非常烦人,我写了两个简单的脚本来完成nfs的启动,挂蝲?

    host启动nfsQ?br />    snfs
    #!/bin/bash
    ifconfig eth0 192.168.0.20
    /etc/rc.d/init.d/portmap start
    /etc/rc.d/init.d/nfs start
    嵌入式目标机挂蝲nfsQ?br />    mnfsQ?br /> 
    #!/bin/sh
    mount -t nfs 192.168.0.20:/home/work/nfs /mnt/nfs -o nolock
    echo “nfs okQ?/p>

胡意 2007-11-06 23:56 发表评论
]]>
վ֩ģ壺 Ʒ97˳Ƶ| С˵ͼƬQVOD| avٺٺ| ߹ۿƵ| Ů߹ۿ| Ĺѹۿ߲ | ɫ| ѹۿ߹ۿİ| ޾þþþþ| պAVһ| av޹av| þù׾Ʒǿ| ޾ƷĻ| avþþþòվ| Ƶ| պëƬѿ| ɫѿ| þĻƷһ| ƷĻѹۿҹ| ޳˼| ëƬ߹ۿվ| 鶹AVþþƷ | Ƶ| Ѹþ| AV˾Ʒ߹ۿ | ĻƷַ | ޹ɫƵ| ŷ޾Ʒһ| ȫһһëƬѿ| ޸ľƷ26U| 97ȫѹۿ| þĻ| պһ| ŮëƬ߿˶| ޵һ͵Ľ| þþ޹| ձһ߹ۿ| ˳վ| ۺͼƬС˵Ⱦþ| ѹ˸Ƶվ| 99þ޾Ʒһ|