Unix 速成小法

先前说过 GNU 核心工具,类比了鸠摩智掌握了小无相功,就可以把 72 绝技耍得有模有样。这里的问题是,72 绝技秘笈在哪里 ? 如何去学 72 绝技呢?
林林总总的 Unix-like 操作系统文档都是可以找到的,如果把这些文档都看一遍恐怕是个大工程。我这里的建议是寻找差异化,推荐一篇很好的参考文档: Unixguide,建议打印下来,留在案头参考。多看几遍,起码对于不同 Unix 之间的差异有个大致的了解。不过可能没有人要同时面对这么多的操作系统要去搞, 有的时候可能只是从 Linux 转向 AIX,或是 Solaris 向 Linux 之间的转换,那么可以看一些迁移文档,比如 Solaris to Linux Migration: A Guide for System Administrators,都是完全可以在网上获取的。掌握差异化往往是节省学习成本的好方法,当然也是蒙人的好办法。
掌握差异化的过程中,或许可以进行一定程度上的总结,向回看,这些差异化有很多是因为 SysV 与 BSD 风格的不同带来的,颇有些武侠小说中佛家与道家武功对比的味道。站在一个更高的角度,比如 Unix 历史图,则令人又另有一番感触。
武侠小说中往往追求正统, 速成的东西大多被归结为邪门武功一类的,学习恐怕也是这样,决不能因为知道”一二三”如何写的就联想到”万”该划一万笔,走捷径或许只能解决一时问题,回头基础的东西还是要学,比如操作系统原理的课程。
未完, 等有机会继续扯…这个【扯淡系列】

继续阅读

Crontab 笔记

关于 Crontab ,维基百科上的词条 Crontab非常好。可惜这个地址在国内不用代理访问不到。 虽然关于 Crontab 的介绍到处都是,详细读了一遍这个词条,收获还是有的。Crontab 这个名字来自 “chronos”,一个古希腊语, “时间”的意思.

常见陷阱

每个SA、DBA 或者是普通的 Unix 用户,在第一次使用 Crontab 的时候都会遇到问题. 运行 Crontab 的常见错误包括如下几种:

1) 出于测试目的新创建了一条 Cron JOB,

时间间隔必须超过两分钟,否则 JOB 将调度不到。如果必须忽略这两分钟的载入配置时间差,可以通过重新启动 Cron Daemon 做到。

2) 从 Crontab 中启动 X Window 程序需要注意的事项:所以要么在程序前初始化 “DISPLAY=:0.0”, 要么在应用程序后面追加参数 –display :0.0 3) 命令中的 % 必须做转义处理: \% .我个人的意见是不要在命令行里带这个参数,干脆写到脚本里,然后调度该脚本即可。

其实我倒是认为使用 Crontab 最常见的一个问题往往是因为环境变量不对。经常会看到论坛里有人问:为什么我的 Crontab 创建了不执行? 准备创建一条 Cron JOB 的时候,很多人都喜欢在命令行下运行一遍,因为这个时候环境变量是随着 Shell 自动带进来,在 Crontab 中则可能因为找不到正确的环境变量,JOB 就不能执行。这个小问题就像出天花,一次教训之后就都记得了。

必须使用的一则技巧

每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null 2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。

附: Crontab 的格式说明如下: * 逗号(‘,’) 指定列表值。如: “1,3,4,7,8” * 中横线(‘-‘) 指定范围值 如 “1-6”, 代表 “1,2,3,4,5,6” * 星号 (‘‘) 代表所有可能的值 Linux(开源系统几乎都可以)下还有个 “/” 可以用. 在 Minute 字段上,/15 表示每 15 分钟执行一次. 而这个特性在商业 Unix ,比如 AIX 上就没有.

# Use the hash sign to prefix a comment
# +---------------- minute (0 - 59)
# |  +------------- hour (0 - 23)
# |  |  +---------- day of month (1 - 31)
# |  |  |  +------- month (1 - 12)
# |  |  |  |  +---- day of week (0 - 7) (Sunday=0 or 7)
# |  |  |  |  |
# *  *  *  *  *  command to be executed

系统级的 Crontab

查看 /etc/crontab 这个文件,可以或者更多系统级别的调度任务。通过这个文件也可以学习一下更好的 Crontab 是怎么定义的。需要留意如下四个目录的东西:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

在一个繁忙并且关键的系统上,有的时候这些默认的系统级任务调度会带来一些隐患。需要知晓。

用户添加的 Crontab 实际上存在什么位置呢? 这个实际上是存放在 /var/spool/cron/crontabs 目录下.

或许,你应该通过 man crontab 把整个手册读一遍。

在牛博的镜像开通

早晨收到老罗的消息,告知我在牛博镜像开通。乍一看还以为是愚人节玩笑,点过去原来是真事儿,本来依老罗的性子也不至于赶这洋节的习气。一直想在牛博上扯扯,只是我写的东西一向很差--缺了”投名状”还怎么上梁山?
牛博的上的文章很好,可是网站的 SEO 一向做的不是很好。挑毛病还是比较容易的,比如:
1) 首页没有 RSS 输出. 这事儿我说过,Zola 应该也和老罗说过。估计老罗还没理解 RSS 重要性,当然也可能是还没有理解 RSS 是咋回事。除了首页,个人 Blog 那里的 RSS 最好能提供定制功能,这样就可以使用 FeedBurner 这样的服务了。
2) 站点的 URL 的结构设计不够好. 主要体现在单篇文章的路径太深。归档文章的 Web 路径一下子深入三四层,其实一层足够了。
3) 文章之间的关联程度不够. 这一点如果通过 Tag 倒是可以轻松实现的。但从现在看牛博似乎还没有开发 Tag 的功能。
4) 看不到网站地图. 这里的网站地图不是给搜索引擎看的那个,而是给读者看的网站地图。如果你想看”牛博网作者目录”,你就是找不到全部列表。
上面这几点都是对读者有利的。算是针对读者的简单 SEO。读者满意是比较难的,搜索引擎满意还算是比较简单的事情。
下图是牛博最近在 Alexa 上的流量趋势:
Bullog_Alexa.png
如果优化得当,进一步提高用户体验,按照牛博的影响力,应该一直增长才对。
广而告之: 我的牛博镜像地址:dbanotes.bullog.cn
Update: 现在问题还不少,有些文章点进去找不到,首页显示也不是全文输出的。慢慢来…
EOF

MT Blogroll 2.51 的一个小 Bug

不久前升级了 Blogroll ,这也是我的 Movable Type 用的不多的外部插件之一。这个版本的 Blogroll 添加了不少功能,比如和 del.icio.us 集成、与 Digg 集成等。当然了,这些功能基本上我是用不到。
升级之后发现有个后遗症,在系统日志里总能看到如下信息:

Error during task ‘Link Update Times’: Can’t locate object method “load” via package “MT::PluginData” at /$MT_PATH$/plugins/Blogroll/lib/Blogroll/App/Update.pm line 40.

$MT_PATH$ 指我的 MT 安装的系统路径。Blogroll 这个程序还比较复杂,我也没那个功夫去分析程序,搜索,未果,搜索,未果,直至偶然在 Blogroll 支持论坛里找到了相关信息。按照该文中的提示,修改,观察了一天,目前系统再没有报错。
现在感觉 Movable Type 的发展越来越慢了,或许 SixApart 的重点并不在这个免费版上面,用户对 Sixapart 贡献的插件发展势头也慢了许多,反观 WordPress, 插件无穷多也。或许这就是开源的力量。
EOF