配色: 字号:
LINUX 24时学时教程—018
2012-03-09 | 阅:  转:  |  分享 
  
下载

第18学时个人事务工具程序

在本学时教程中,将介绍一些可以用来帮助你处理个人事务的日历、命令和X11客户程序。

不管这些程序是用来写一篇日记还是用来制作一份备忘录,你将学习在OpenLinux操作系统中

如何使用它们这些工具程序来记录并安排日常事务。

在本学时教程中讨论的每一个程序或者技巧都可以使用这本书所附的CD-ROM光盘里找

到的软件来实现。学习完这些内容之后,会掌握更多使用这些程序来完善日常事务处理所使

用的工具和技巧的方法。

18.1使用at命令安排个人日程备忘录和任务

如果需要记录那些重要的日程安排、设置备忘录或者在外出的时候自动运行某些程序,

就可以使用at命令。可以在子目录/usr/bin中找到这个命令,它可以用来安排命令或者任务在

你指定的某个时间去运行。举例来说,如果你正在进行某项工作但是需要提醒自己去搭载你

的乘车伙伴,就可以从命令行输入一个简捷的at任务。

系统在缺省的情况下应该允许你使用at命令。如果不是这样,请阅读

第24学教程“使用任务计划实现系统管理自动化”中关于如何在系统上

激活at命令的内容。

举例来说,如果想在适当的时间在屏幕上弹出一个备忘录,可以使用下面的命令:

#at16:15

at>xmessage-display:0.0"Thecarpoolisleavingin15minutes."

at>

warning:commandswillbeexecutedusing/bin/sh

job12at1998-12-1816:15

上面的内容告诉at命令在指定的X11显示窗口中运行xmessage程序来显示关于你的搭车伙

伴消息的文本内容,如图18-1所示。上面内容中的文本结束符(EOT)表示你必须按下

Ctrl+D组合键关闭命令并提交任务。如果在输入这个命令的时候出现了一个语法错误,那么

在到了预定时间的时候就只能收到一个邮件消息。命令行参数-display告诉xmessage命令应该

在哪个屏幕设备上显示你输入的消息,这个设备通常是0.0,而你可以使用下面的命令找出它

到底应该是哪一个屏幕:

#printenv||fgrepDISPLAY

上面的命令行把printenv命令的执行结果经过管道送到fgrep命令,从所有的环境变量(在

图18-1at命令可以把任何OpenLinux

程序或者X11客户程序,比

如xmessage,当作备忘录

提示程序来运行

第6学时教程“使用shell”中介绍过)中查找出$DISPLAY环境变量的值。

如果正在使用X11,也可以采用控制桌面颜色的办法使用at命令提供一个直观形象的备忘

录提示,如下所示:

#at16:15

at>xsetroot-display:0.0-solidred

at>xmessage-display:0.0"Thecarpoolisleavingin15minutes."

at>

warning:commandswillbeexecutedusing/bin/sh

job14at1998-12-1816:15

上面的命令在预定时间会把桌面,也就是根显示区,显示成深红色,然后再显示提示消

息。正如你所看到的,可以一次使用多个命令同时完成好几件事情。如果觉得这个方法很方

便,也可以把这些命令输入到一个名为carpool的文本文件中去,然后通过使用-f参数,后面

再跟上这个文件的文件名的方法来执行这些命令:

#at16:15-fcarpool

warning:commandswillbeexecutedusing/bin/sh

job13at1998-12-1810:19

at命令会从文本文件中读取这些命令并回显一个确认信息。如果想更方便一点儿,可以把

这个命令行放入到用户子目录中的.xintrc命令脚本程序中去。这样在每天早晨启动X11之后,

这个任务就会被自动地安排好了。

请阅读第7学时教程“使用X窗口系统”中更多关于如何配置.xinitrc

文件的资料。

使用atq命令可以看到一个已经安排的任务清单,如下所示:

#atq

141998-12-1812:00a

151998-12-1813:00a

161998-12-1814:00a

171998-12-1815:00a

181998-12-2516:00a

上面显示在12月18号已经安排了四件事情,还有一件事情安排在了12月25日。使用at命

令安排任务的时候,会在/var/spool/at子目录中生成一个包含了每一条命令的shell命令脚本程

序。atq命令会在这个子目录中查找你安排的任务,然后把它们显示到显示屏幕上。

可以使用at命令提前几分钟、几小时、几天、几星期甚至几年来安排某个任务。如果打算

在三个小时之后运行你的搭车伙伴备忘录提示程序,可以使用at命令的加号(+)命令行参数,

如下所示:

#at+3hours-fcarpool

这个命令会从当前系统时间开始计时,在三个小时之后运行显示你的事务安排。还可以

使用时间和日期(按照mm/dd/yy的格式)来安排任务,如下所示:

#at16:1512/25/00

at>xmessage-display:0.0"Thecarpoolisleavingin15minutes."

at>

warning:commandswillbeexecutedusing/bin/sh

job21at2000-12-3116:15

292使用第四部分有效率地使用Linux操作系统下载

正如所看到的,这个at命令已经解决了2000年千年虫问题。使用atrm命令可以控制管理你

的at任务。你可以有选择地使用任务号来删除指定的任务。举例来说,我们还是使用前面例子

中的任务队列,你可以输入下面的命令:

#atrm1618

这个命令将删除安排在第16号和第18号的任务,但是会保留另外的两个。使用at命令是为

某个特定的时刻编写一次性备忘录提示程序的好方法。在下一小节中,将介绍如何按照一定

的时间间隔安排其他的任务反复执行。

也可以使用由RobNation编写的X11客户程序rclock来安排备忘录提示或

者在预定的日期或时间运行程序。如果想建立备忘录提示,需要在用户子目

录中建立一个名为.rclock的文件,然后再输入备忘录提示命令行。比如说:

11:30mtwtfTimeforlunch!

这个命令行将在整个星期内的每天显示一个提醒午餐时间的提示信

息。rclock客户程序通常是与X11的rxvt终端程序一起发行的,但是并没

有包括在OpenLinux操作系统中。可以从下面的站点获得它的最新的版

本:

http://babyaga.math.fu-berlin.de/~rxvt/.

或者也可以在下面的站点从一个.rpm文件中获得rxvt和rclock这两个程序:

htp://metalab.unc.edu/pub/Linux/X11/terms/.

如果想获得一份用于OpenLinux操作系统和X11中的各式各样不同的

时钟程序(许多都带有报时功能)的清单,请浏览站点:

http://metalab.unc.edu/pub/Linux/X11/clocks.

18.2使用crontab命令安排周期性的备忘录提示

虽然at命令在安排一次性任务的时候很方便,但是需要以固定的周期完成固定的任务的时

候,就可以使用由PaulVixie编写的crontab命令来帮助你。crontab命令(可以在子目录/usr/bin

中找到它)是用来在一个私人文件中输入设定的预定时间和命令的。

crontab命令的工作原理是在子目录/var/spool/cron中按照用户名来查找crontab命令的日程

安排。Linux操作系统中使用的crontab文件就叫做crontab,保存在子目录/etc中。而用来管理

运行整个系统和各个用户的cron日程安排的程序就是cron程序包,它在开机启动Linux操作系

统的时候就被启动了,然后每分钟被唤醒一次并对整个系统和各个用户的文件进行检查。

如果想建立你自己的crontab文件,必须使用这个命令的-e参数,如下所示:

#crontab-e

要确定已经为你的系统激活了crontab功能。请阅读第24学时教程

“任务计划”中关于如何进行这个操作的详细资料。建立或编辑你的

crontab文件的时候,也许还想把最喜欢的文本编辑器程序定义为缺省的

$EDITOR环境变量。请阅读第6学时教程“使用shell”中关于如何设置环

境变量的说明,以及第14学时教程“文字处理程序”中关于使用各种文

本编辑器程序的说明。

第18学时个人事务工具程序用用293下载

这个命令将调入在shell的$EDITOR环境变量中定义的缺省的文本编辑器程序进入运行,

这样就可以建立或者编辑个人专用的crontab文件。但是在学习crontab数据项的格式之前,还

可以考虑对缺省的编辑器程序进行一些配置。

如果缺省文本编辑器程序是vi,但是却想使用另外一个不同的编辑器程序,可以使用shell

临时修改一下$EDITOR变量。举例来说,如果正在使用名为bash的shell,并且打算使用pico

文本编辑器程序,可以输入下面的内容:

#EDITOR=/usr/bin/pico;exportEDITOR

这个命令将把缺省的编辑器程序设置为pico编辑器程序。可以再查看一下你的环境变量来

确认这一点,如下所示:

crontab数据项的格式看起来与表18-1中的差不多。在不同的数据域中都可以使用周期

性数值,比如/3可以表示每三分钟或者每三个小时进行一次操作。也可以使用时间间隔范

围,比如7?10表示在早晨7、8、9、和10点种的时候执行操作。请注意数字(0或者7用来

代表星期日)或者单词(开头的三个字母)可以用来代表月份和星期数据域中的某一个日

子)。

表18-1crontab数据项的格式

分钟小时日期月份一星期中的某一天

0?590?230?310?12(或者名称)0?7(或者名称)

可以在/usr/man/man5子目录中的crontab命令的使用手册页中查到crontab请求的格式和一

些使用的例子。可以用下面的命令来阅读这个使用手册页:

#man5crontab

在crontab文件中可以包含有对那些想定期或者甚至不那么定期地执行的程序的设置,如

下所示:

somecommand

0,15,30,45,somecommand

0somecommand

第一个例子显示想每分钟执行一次某个程序;第二个crontab数据项每15分钟执行一次某

个程序;第三个例子每个小时执行一次某个程序,在整点的时候执行。

如果想每天一次在固定的时刻运行某个程序,可以使用下面的命令:

307somecommand

300somecommand

1516somecommand

第一个例子表示在早晨7:30分的时候执行;第二个例子在午夜过了30分钟之后执行;第

三个例子在每天的下午4:15都会执行一次。还可以在一个月或者在一个星期中指定的某一天

执行某个程序,如下所示:

30161somecommand

3015monsomecommand

294使用第四部分有效率地使用Linux操作系统下载

第一个例子在每个月的第一天的下午4:30运行;第二个在每个星期一的下午3:30分运

行。总结以上的例子,还可以具体指定是哪一个月,如下所示:

3072512somecommand

这个例子在每年的12月25号这一天的上午7:30分都会执行指定的命令。指定的命令可以

是系统工具程序,但是也可以是你自己的shell的命令脚本程序。可以使用crontab命令的-l(列

清单)参数来显示cron设置,如下所示:

在上面显示的crontab文件中,可以看到有这样几个设置:每半个小时报一次时间、每天

早晨8点启动PPP连接以及在PPP连接启动开始三分钟之后下载当天的邮件。可以使用crontab

命令的-r(删除)参数删掉crontab文件,如下所示:

#crontab-r

使用crontab命令是建立、运行和管理周期性任务的简便方法。能够建立自己的备忘录提

示之后,也许会想使用一个日历来进行短期或者长期的计划。

18.3使用X11的ical客户程序建立约会备忘录提示

可以使用由SanjayGhemawat编写的ical日历程序把约会和备忘录提示保存到一个私人日

历中。ical客户程序(可以在子目录/usr/X11R6/bin中找到这个程序)与cal或者gcal日历打印

程序相比,有许多独特的功能和改进:

?用户可以定制设置的带有菜单、对话框、滑动控制部件和按钮的图形化X11操作界



?可以对便条及约会进行复制粘贴与拖放操作

?对即将发生的事件能够声音提示

?多种日历显示方式

?可以导入、导出以及自动保存日历文件

?日历文件可以由同一组成员共享

?能够打印不同的日历

?cron程序风格的约会、笔记和备忘录安排方式

?已安排工作检查清单表

?内建的帮助信息

第一次运行ical程序的时候,这个程序会显示一个设置为当天日期的当前月份的日历,并

在画面的右半部分显示一页笔记,也就是约会记录清单。启动ical客户程序的时候使用它

的-calendar参数,后面再跟上想建立或者编辑的日历文件的文件名,如下所示:

#ical-calendar$HOME/.calendar&

这样就启动了ical客户程序,而它就会在用户子目录中建立一个名为.calendar的日历文件。

第18学时个人事务工具程序用用295下载

在每次启动ical的时候都需要指定要使用哪一个日历文件,除非定义

了名为CALENDAR的环境变量指向某个ical-calendar命令所使用的日历

文件。如果这个程序无法打开某个日历文件,它就会反复报警并显示一

条出错信息。如果想要定义自己的CALENDAR环境变量,请使用一个编

辑器程序打开.bashrc文件,在其中加上下面的内容:

exportCALENDAR=$HOME/.calendar

现在保存这个文件。如果想立刻使用这个设置值,请使用bashshell

的source命令,如下所示:

source.bashrc

然后再按下回车键。

另外,ical客户程序还可以使用许多标准X11的Toolkit工具参数,因此就可以把ical客户程

序作为一个图标来启动运行。如下所示:

#ical-iconic

还可以改变窗口尺寸参数的设置值来设定日历最初开始时的大小,如下所示:

#ical-geometry800×600

图18-2就是这个ical客户程序的画面。

想建立通告的时候,需要先选定一个日子,然后在日历的下方单击鼠标并在其中输入文

字内容。想记录某一天的约会的时候,需要先单击选定一个时间,然后再输入这个约会的名

称。可以使用按住鼠标中键(当你使用的是双键鼠标的时候需要同时按下鼠标的左、右两键)

的方法把这个约会拖放到这一天的任何位置上,这样就可以对日程重新进行安排。

设置好通告或者约会之后,还可以设置一个报时钟,让ical客户程序在事件即将发生之前

向你发出提示音。如果想设置事件的声音提示功能,先单击这个约会,然后再选择“Item”

(项目)菜单中的“Properties”(属性)菜单项为这个约会设置一个报时钟。可以在某个约会

上双击鼠标进入报时钟对话框。

可以设置ical在事件发生之前一到十五天提醒你,在某个约会到来之前的一个小时内最多

296使用第四部分有效率地使用Linux操作系统下载

图18-2X11的ical客户程序

具有通告、约会、

已安排工作清单以

及备忘录提示报警

等功能

可以有60次报警提示。当最终到达预定时刻的时候,ical程序的提示通知窗口会以备忘录提醒

的形式弹出来。

只有在ical客户程序运行的时候才能收到声音提示。因此可以把ical

命令和它的-popup命令行参数放在一个crontab数据项中。如果使用

了-popup参数,ical会在一个窗口中列出所有当天的约会直到按下“OK”

按钮之后才退出。

图18-3显示了ical客户程序的提醒对话框。

如果选定了某个约会或者通知,可以通过选择相应的“Repeat”(重复)菜单项把它设置

为能够在每天、每星期、每月甚至每年反复循环地执行。把某个记录项设置为重复执行的时

候,它将会自动复制到日历程序中的各个对应位置。

如果想把某个约会设置为必须确认完成的操作,需要单击这个约会,再从ical程序的“Item”

(项目)菜单选择“TodoItem”(确认完成)菜单项。在这个约会的提示内容的前面会出现一个

小框。只有当你使用鼠标左键单击这个小框并在小框里放上一个表示确认完成的选中记号之后,

这个项目才算完成;否则这个需要确认完成的约会记录项就会出现第二天的约会清单中。

可以使用ical程序的“List”(列清单)菜单列出约会和通告。如果想得到日历的一份硬拷

贝,可以选择按照六种不同的内建日历格式进行打印,还可以选择打印某个日期范围。开始

打印之前,还可以对日历进行预览。

ical客户程序非常便于组织个人或者集体任务。可以查看一下保存在子目录

/usr/lib/ical/contrib中的一些与ical程序一起发行的shell命令脚本和程序,到那里去寻找介绍怎

样对ical程序进行定制设置才能满足自己工作需要的窍门与提示。

可以在下面的站点找到ical程序的最新版本(v2.2):

http://www.research.digital.com/SRC/personal/Sanjay_Ghemawat/

ical/home.html.

第18学时个人事务工具程序用用297下载

图18-3ical客户程序的提醒

对话框提供了多个

阶梯状排列带有可

拖放控件的报警钟

18.4使用emacs查看日历和管理约会

我们在第14学时教程“文字处理程序”中已经比较全面地介绍过emacs文本编辑器程序,

它具有许多能够帮助处理个人事务甚至提供娱乐的功能。可以查看当前日历、查看节假日清

单(还有更多)还可以使用约会备忘录写日记。

如果正在使用X11,那么除非在命令行特意使用-nw命令行参数来指定必须在终端窗口中

运行emacs,否则就会自动运行emacs程序的X11版本。如下所示:

#emacs-nw

当启动emacs程序的X11版本运行之后,从主菜单开始单击“Apps”(应用程序)、再单击

“Calendar”(日历)然后再单击选择“3MonthCalendar”(三个月日历),就可以看到包括前

一个月、本月和下一个月三个月份的日历。emacs编辑器程序还可以提供日记、节假日、月亮

盈亏周期以及日出/日落时间。也可以使用非X11版本的emacs的Esc-x-calendar命令。按住键

盘上的Esc键,输入一个字母x,然后再输入单词“calendar”(日历),最后按下回车键。

emacs程序将显示一个如图18-4所示的三个月份的日历。

在emacs程序的日历窗口中单击鼠标之后,再输入一个问号(?)就可以获得使用emacs日

历工具程序的帮助信息。屏幕上会出现一个关于日历数据项的帮助菜单。在emacs中启动运行

了日历状态之后,在emacs程序的菜单条上就会出现一个“Calendar”(日历)菜单项。

使用“Calendar”(日历)菜单项中的“Goto”(去往)子菜单可以在日历中前进或着后

退,还可以进入将近二十种不同类型的日历,比如雅利安人的日历等等,甚至还有玛雅人的

日历!“Holidays”(节假日)子菜单可以根据屏幕底部显示的日历给出某个时期内、某些天

或某几个月内的所有节假日;也可以在日历列表中标出节假日的具体日期。“Moon”(月相)

子菜单列出月亮盈亏周期的各个阶段。

在emacs程序中有超过一百个不同的日历命令(与那些明显地出现在

菜单中的菜单项不一样)。如果想收到约会备忘录提示,在那个时候就必

须运行着emacs程序。如果想了解更多的资料,可以先看看它的日历功能

本身的帮助信息,然后再从emacs程序的“Help”(帮助)菜单中使用

apropos命令获取更详细的信息。

298使用第四部分有效率地使用Linux操作系统下载

图18-4emacs编辑器程序的

特色包括有一个内建

的日历功能,提供一

整套包括一个日记和

约会备忘录提示功能

的日历工具

还可以通过NeilMager为emacs程序编写的约会函数集让emacs程序提醒那些重要的事件。

如果想设置约会备忘录提示,首先需要在自己用户子目录中建立一个包含下列内容的.emacs

文件:

(require''appt)

(display-time)

(appt-initialize)

使用“File”(文件)菜单保存这个文件。退出,然后再重新运行emacs程序。如果想建立

一个emacs日记,先进入emacs程序的日历状态。单击“Apps”(应用程序)、再单击

“Calendar”(日历)菜单项、最后单击选择“3MonthCalendar”(三个月日历)菜单项。当激

活emacs的日历状态之后,在日历窗口中的某个特定日子上单击鼠标。然后转到“Calendar”

(日历)菜单,单击“Diary”(日记)子菜单,再选择“InsertDiary”(插入日记)。就把输入

缓冲区转到了“日记”区,并且会发现跟在文本内容后面的光标中包含着选定的日期。输入

一些日记内容之后,保存这个缓冲区(通过“File”(文件)菜单),然后退出并重新启动

emacs程序。

emacs程序的约会函数集是用LISP编程语言(emacs程序的大部分和

它的许多功能函数使用的都是LISP语言)编写的。通过阅读emacs约会函

数集的源代码,可以学习到更多关于设置约会的参数用法。方法如下所

示:

less/usr/lib/xemacs-19.16/lisp/calendar/appt.el

输入约会

重新启动emacs程序之后,可以用emacsappt-add命令在日记中输入约会备忘录提示。首

先,进入到日历状态,在某个特定日子上单击鼠标左键。然后,按下再放开键盘上的Esc键,

敲入一个x,然后再输入appt-add,再按下回车键。在emacs窗口底部的命令行上会提示输入约

会的时间是几点几分,如下所示:

Time(hh:mm[am/pm]):

按照一个24小时时钟(比如15:00)或者一个12小时时钟(比如3:00pm)的形式输入

时间。按下回车键之后,会提示输入提示消息,如下所示:

Message:

输入一个备忘录提示消息(比如“Wakeup!(起床)”),然后再按下回车键。

到了预定约会时间之前五分钟的时候,emacs程序会发出蜂鸣声并显示一个新的状态行,

这样就把这个约会通知给你了。两分钟之后,上述过程将会再次重复出现。还可以把备忘录

提示手动添加到日记当中,如下所示:

8:00amJoggingwithdog

12:00amLunchwithCathy

15:00pmCheckwithcarrepairshop

可以在日记文件中保存这些跟在每个日期后面的备忘录提示信息。如果想删除约会,可

以在选择某个日期之后使用appt-delete命令。将通过交互式的问答从日记中删除各种约会。

通过使用emacs的日历状态和约会函数集的方法,可以在私人日记中建立一个约会的历史

记录。请练习使用不同的状态,并阅读emacs程序的info文件了解更多的信息。

第18学时个人事务工具程序用用299下载

18.5使用knote客户程序设置报时钟

使用KDE桌面环境的时候,不需要为设置报时钟而运行大型的程序或者文本编辑器程序。

如果想在X任务操作过程当中使用一个简单易用的工具程序设置备忘录或者报时钟的话,可以

试试包括在KDE工具程序包发行版本中的knote客户程序。

单击KDE桌面控制条上的“Utilities”(工具)菜单并选择knote。在桌面上会出现一个很

像Post-ItTM(注:美国的一种明信片式样)的小窗口。输入一些文字,然后在这个knote窗口

中单击鼠标右键。从弹出的菜单中找到并选择“Operation”(操作)菜单,然后再单击

“Alarm”(报时钟)菜单项,如图18-5所示。

屏幕上会出现一个报时钟对话框,如图18-6所示。单击年、月、日小框下面的上下箭头

设置报时的日期。单击“AM”(上午)或者“PM”(下午),然后再选择报时的小时和分钟。

完成的时候,单击“Set”(设定)按钮就设置好报时钟了。

18.6课时小结

本学时教程介绍一些个人事务处理程序和X11客户程序,可以使用它们来安排时间、设置

约会以及记录一天的工作。

18.7专家答疑

问:我把光标放在那个三个月日历中的某个日期上,但是当我想插入一个日记数据的时

300使用第四部分有效率地使用Linux操作系统下载

图18-5knote客户程序除了

简单易用的笔记本功

能之外,还有报时钟

和备忘录提示功能

图18-6使用报时钟对话框

对knote程序的报时

钟功能进行设置是

一个简单的任务

候,emacs程序报告说“notonadate”(没有在日期上)。

答:试试在日历画面中双击那个日期。当某个日期被正确选择的时候,你会在“Diary”

(日记)子菜单中看到一个完整的日记项目清单。

问:我想使用crontab和它的-e参数,但是屏幕画面全部消失了,然后沿着屏幕的左面显

示了一溜上撇号(’),这是怎么一回事?

答:在缺省的情况下,crontab命令使用vi编辑器程序。请阅读vim的使用手册页了解更多

关于使用这个编辑器程序的资料。另外,可以建立和使用自己的$EDITOR环境变量指向pico

编辑器程序(包括在pine电子邮件程序中)。

问:我定义了$EDITOR环境变量,但是当我使用crontab和它的-e参数的时候,程序出了

一个错并退出了。这是怎么一回事

答:请确认你已经从OpenLinux操作系统的CD-ROM光盘上安装了pine电子邮件程序,或

者已经在$EDITOR环境变量中包括了pine程序的完整的路径名。shell报告出错,当然crontab

会因为这个错退出了。

18.8练习题

1.请看看下面的crontab数据项:

1504echo"Whatdayisit?"

这个数据项会在什么时间以什么方式执行?

2.请试试在emacs程序中设置几个约会。当某个约会临近的时候,emacs程序会做出什么

样的反应?如果设置了一个约会之后立刻退出了emacs程序,会发生什么事情?

3.试试使用crontab命令设置一个报时钟或者约会。然后再试试使用at命令设置一个报时

钟或者约会。哪一个命令更好用一些?为什么?

第18学时个人事务工具程序用用301下载

献花(0)
+1
(本文系利顿收藏馆首藏)