在 Linux 系统上,我们一般使用 cron
来设置定时任务,然而 cron 的语法还是有些佶屈聱牙的,几乎每次要修改的时候都需要查一下文档才知道什么意思,以至于有 crontab.guru 这种网站专门来解释 cron 的语法。想象一下,能不能有一种让人一眼就能看懂的语法来表达周期性的调度操作呢?比如说这样:
every 10 minutes , curl apple.com every hour , echo 'time to take some coffee' every day at 10:30 , eat every 5 to 10 minutes , firefox http://news.ycombinator.com every monday , say 'Good week' every wednesday at 13:15 , rm -rf / every minute at :17 , ping apple.com every 90 minutes , echo 'time to stand up'
这样的配置文件是不是很容易懂呢?如果要写成 crontab 的格式大概是这样的:
*/10 * * * * curl apple.com 0 * * * * echo 'time to take some coffee' 30 10 * * * eat */7 * * * * firefox http://news.ycombinator.com # 实际上是不对的,因为 cron 没法随机 0 0 * * MON say 'Good week' 15 13 * * WED rm -rf / # every minute at :17 无法实现,因为 cron 中没有秒 0 0-21/3 * * * echo 'time to stand up' # 需要两条命令来完成每隔 90 分钟的操作 30 1-22/3 * * * echo 'time to stand up'
可以很明显看出,cron 的语法可读性还是差一些的,关键是维护起来更是像读天书一样。幸运的是,我在周末刚刚做了一个小工具,虽然还比较粗糙,但是也已经可以解析上面这种可读性比较好的语法。下面简单介绍一下如何使用:
介绍 sche
sche 是一个 Python 程序,所以可以使用 pip 直接安装:
介绍 sche sche 是一个 Python 程序,所以可以使用 pip 直接安装: