摘要: 本 文全面系统地介绍了shell脚 本调试技术,包括使用echo, tee, trap等命令输出关键信息,跟踪变量的值,在脚本中植入调试钩子,使用“-n”选项进行shell脚本的语法检查, 使用“-x”选项实现shell脚本逐条语句的跟踪,巧妙地利用shell的内置变量增强“-x”选项的输出信息等。shell编程在unix/linux世 界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之 路。脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句, 输出调 阅读全文
posted @ 2012-07-08 22:48 marr 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 一般情况下,我们用ssh远程登录到服务器时,要输入用户名和密码。这对经常维护系统的人来说,很麻烦。怎样才能不用密码直接登录到远程的linux/unix服务器呢?ssh公钥认证可以解决这个问题。公钥认证,是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。 通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。在使用公钥认证之前,先检查一下服务器的ssh配置文件/etc/ssh/sshd_configRSAAuthentication yes # ... 阅读全文
posted @ 2012-07-08 22:46 marr 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 写脚本时,经常要判断字符串是否相等,检查文件状态或是数字测试等。Shell提供了对字符串、文件、数值及逻辑操作等内容的条件测试的支持。1.测试文件状态test一般有两种格式,即:test condition或[ condition ]使用方括号时,要注意在条件两边加上空格。一般采用第2种方式,比较方便。测试文件状态的条件表达式很多,下面是一个常用的文件状态列表。文件状态测试-a 文件存在-b 文件存在并且是块文件-c文件存在并且是字符文件-d文件存在并且是目录-s 文件长度大于0、非空-f 文件存在并且是正规文件-w文件存在并且可写-L文件存在并且符号连接-u 文件有suid位设置-r文件存在 阅读全文
posted @ 2012-07-08 22:44 marr 阅读(229) 评论(0) 推荐(0) 编辑
摘要: awk提供了许多强大的字符串函数,见下表:awk内置字符串函数gsub(r,s)在整个$0中用s替代rgsub(r,s,t)在整个t中用s替代rindex(s,t)返回s中字符串t的第一位置length(s)返回s长度match(s,r)测试s是否包含匹配r的字符串split(s,a,fs)在fs上将s分成序列asprint(fmt,exp)返回经fmt格式化后的expsub(r,s)用$0中最左边最长的子串代替ssubstr(s,p)返回字符串s中从p开始的后缀部分substr(s,p,n)返回字符串s中从p开始长度为n的后缀部分详细说明一下各个函数的使用方法。gsub函数有点类似于sed查 阅读全文
posted @ 2012-07-08 22:41 marr 阅读(4115) 评论(0) 推荐(0) 编辑
摘要: 采用 10 个能够提高您的 UNIX® 命令行效率的好习惯——并在此过程中摆脱不良的使用模式。本文循序渐进地指导您学习几项用于命令行操作的技术,这些技术非常好,但是通常被忽略。了解常见 错误和克服它们的方法,以便您能够确切了解为何值得采用这些UNIX 习惯。当 您经常使用某个系统时,往往会陷入某种固定的使用模式。有时,您没有养成以尽可能最好的方式做事的习惯。有时,您的不良习惯甚至会导致出现混乱。纠正此类 缺点的最佳方法之一,就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的 UNIX 命令行习惯——帮助您克服许多常见使用怪癖,并在该过程中提高命令行工作效率的好习惯 阅读全文
posted @ 2012-07-08 22:40 marr 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 本文译自Dr. Dobb’s Blogger的Walter Bright写的《Overlooked Essentials For Optimizing Code》[转载]我编写程序至今有35年了,我做了很多关于程序执行速度方面优化的工(一个示例),我也看过其它人做的优化。我发现有两个最基本的优化技术总是被人所忽略。注意,这两个技术并不是避免时机不成熟的优化。并不是把冒泡排序变成快速排序(算法优化)。也不是语言或是编译器的优化。也不是把 i*4写成i<<2 i*4的优化。这两个技术是:使用 一个profiler。查看程序执行时的汇编码。使用这两个技术的人将会成功地写出运行快的代码,不 阅读全文
posted @ 2012-07-08 22:36 marr 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 原文地址: http://rdc.taobao.com/blog/cs/?p=708检测一台机器是否宕机的应用场景如下:1, 工作机器宕机,总控节点需要能够检测到并且将原有服务迁移到集群中的其它节点。2, 总控节点宕机,总控节点的备份节点(一般称为Slave)需要能够检测到并替换成主节点继续对外服务。检测一台机器是否宕机必须是可靠的。在大规模集群中,机器可能出现各种异常,比如停电,磁盘故障,过于繁忙导致假死等。对于机器假死,如果总控节点 认为机器宕机并将服务迁移到其它节点,假死的机器又认为自己还可以提供服务,则会出现多个节点服务同一份数据而导致数据不一致的情况。首先必须明确,理论上检测另外一台 阅读全文
posted @ 2012-07-08 22:33 marr 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 本文出自:http://www.linuxsong.org/2011/07/linux-text-tool/Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多。这些小工具经过了几十年时间的洗礼,现在已经变成了经典,已经变成了Linux下面的标准,其实它们一直是遵循着Linux的标准。下面就让我们一起看看这些经典的Linux文本处理命令。一. sort文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页.二. tsort拓扑 阅读全文
posted @ 2012-07-08 22:32 marr 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 本文出自:http://www.linuxsong.org/2011/11/time-server/配置多台服务器时,经常需要让各个服务器之间的时间保持同步,如果服务器有外网环境,可以直接同外部的时间服务器更新时间,可以采用rdate命令更新时间:rdate -s tick.greyware.com可以写个脚本放在/etc/cron.hourly中每小时校正一下时间。如果是内网环境下,可以自己配置一个时间服务器,以CentOS为例,配置时间服务器的方法如下:1.先安装xinetd : sudo yum install -y xinetd2.修改/etc/xinetd.d/time-stream 阅读全文
posted @ 2012-07-08 22:30 marr 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 本文转自:http://www.cnblogs.com/wankaizhang/archive/2010/12/27/1918111.html事件驱动的编程方式已经很普及了,原因自然是互联网的疾速膨胀,现在要写个服务器不用事件驱动,出门都不好意思跟人打招呼。但是实现事件库并不是那 么容易,首先它与人们亦步亦趋的思考方式有点儿冲突,其次事件库的底层实现必须平台相关,如Linux使用epoll,FreeBSD使用kqueue。事件驱动库是很多系统软件的基础设施,如Lighttpd、NodeJS使用了libev,Memcached使用了libevent,Nginx 和Redis自己实现了一套。通用的 阅读全文
posted @ 2012-05-12 21:19 marr 阅读(311) 评论(0) 推荐(0) 编辑