Linux系统小型日程表挑战大型群件( 三 )


谁知道 Sam 去哪儿了?
偶尔室友的问题会是他们到底去哪里了 。我并不是要讨论,当要付房租或者分担公共费用时,某些人却不得不离开房间 —— 而只是说某个人,比如一个朋友,打电话过来问“您知道他在哪儿吗?”或者“您知道他什么时候回来吗?”
要说有什么不同之处,那么就是这个脚本更短小,写起来更简单 。遵循相同的基本方法:只需要创建名字为用户名的文件,其中包含有时间标记、可能要离开多少小时以及简短描述 。然后,每找到这样一个文件,打印一个简要描述 。
“I"m back!”按钮会删除那个文件,因为可能人们并不需要知道您曾经 在哪儿(如果有意外,这有助于证明您不是帮凶) 。与之相对照,能知道某人曾经要去哪里是 有用的,所以文件不会因为变成老文件而被删掉 。
我觉得一个好的、简单的群组日程安排软件非常类似于 Harry Potter 丛书中 Weasley 的起居室里的那个时钟 。它有九个黄金指针,每个上面刻有一个家庭成员的名字 。边缘上没有数字,而是标记为位置和状态 —— 家、工作、学校、旅行、走失、致命危险,等等 。(还有一个厨房时钟,它有一个指针以及“time for this”和“you"re late”标记 。)
日程计划任务
所需要的最后一件事情是日程计划 。我们如何处理家务事的常规提示?轮到谁来洗衣服?轮到谁来涮碗?不需费力就可以定期地安排这些任务 。
处理垃圾可能对每个人来说都是琐碎的工作,但是我们所需要的只是张贴公开提示的某种方法 。现在您应该对此有了一些想法 。当然是使用另外一个脚本以及它自己的自定义数据库文件 。
只是目前还不需要它 。这个项目的难点在于调度任务 。要编写能够表达类似于“every Thursday is trash night”或“someone needs to do the dishes every night”等想法的代码一点都不简单 。
不过这些代码已经编写好了,叫做 cron.我们所需要的只是公布消息的某种途径 。可以知道,为本月项目的第一部分已经编写的消息程序,可以正确地满足我们的要求 。为消息目录赋与写权限(例如,root 有令人羡慕的特权),尝试这个命令:

$ REMOTE_USER=bob /var/www/htdocs/msgs.cgi;
"action=Post Message" "message=Test message"
现在,去查看那些消息 。很酷,不是吗? 已经能够通过运行命令添加新消息,也就是说 cron(可以根据日程安排运行命令)满足了我们全部的需求 。
有一个小型的 Web 界面来创建这些任务可能会更好,但是由于这些东西很少修改,所以可能并不需要 。这将处理所有需要常规提示的任务 。不需要常规提示的任务可以手工输入,或者使用 at(1) 设置为在适当的时候输入 。
总结与说明
本月支出为 $0,这非常好 。没有进行任何下载,只是要在本地进行一些输入 。应用程序有一些简单,但是它们能完成应该做的事情,而且代价低廉 。
进一步讲,它们足够简单,能方便地更新 。最大的弱点是安全性;没有投入任何精力来保护这些程序不受最常见入侵的危害 。其中一方面原因是,在大部分情况下那不是个大问题 。
不过,如果您计划与懂技术的室友一起使用这些,那么有很多种方法可以让程序更加安全 。例如,如果不允许通过命令行运行 msgs.cgi 脚本,那么需要考虑使用另外的方法来调度任务 。(实际上有一个非常简单的方法,就是使用命令行浏览器以及精心构造的 URL,这些留给读者去练习) 。
古老的机器 的下一篇文章:使用 Web 页开灯 。可用的 x10 硬件和 Linux 驱动程序使得我们能够完成所有那些有用的事情,比如在起床前半小时打开咖啡壶(coffee maker) 。

推荐阅读