谁不喜欢折扣?反正我很喜欢。去年写过一个自动检索折扣网站的脚本。一旦搜索到我需要的产品,就会自动发一封信到我的邮箱。唯一的问题是这个脚本需要手动运行,记性很差的我自然是在大部分的时间都忘记运行它啦。今天试着用crontab设置自动运行。看上去比较简单的事情,还是折腾了有两个小时。
- cron用在Linux上。Windows需要自动运行脚本的话,需要把相应的脚本加到某个.../startup 文件夹中。
- 用crontab -e在cron里面创建一个自动运行项。
- crontab的运行条件还是相当苛刻的:
- 在终端(terminal)中运行脚本时,会有默认输入(stdin)和默认输出(stdout),但cron在运行程序时是没有这些的。如果在程序中,加入了输入输出,如果没有指定文件的话,程序就会出错。但cron是不会报错的。结果就是你发现程序莫名其妙就停了。
- 我遇到的第二个问题,是cron是在系统载入之后就开始运行,这个时候一般来说,成功的网络连接还没有建立。而我的脚本中,一上来就直接需要链接gmail的邮件服务器,结果就是程序报错然后退出(并且没有任何提示)。解决这个问题有两个办法。第一,在脚本内部加入异常处理,比如,无法链接服务器就等待几分钟再链接。第二种比较偷懒的方法是,让程序运行之后等待几分钟,用sleep 600就可以让程序等待10分钟,这个时间就已经足够让电脑建立网络连接了。
搞定,运行良好。为感恩节做好准备!!!