使用every轻松安排任务
在cron上安排任务通常是一个试错过程,但every,一个用Perl编写的命令行应用程序,使它变得容易得多。
要求
您需要安装cron,它包含大多数基于Unix的平台(例如Linux、Mac OSX、BSD),并且已安装Perl。
获取每一个
every由Rebecca开发,并托管在她的Github页面上。您可以直接使用wget从命令行下载它
$ wget 'https://raw.github.com/iarna/App-Every/master/packed/every'
或者curl
$ curl -O 'https://raw.github.com/iarna/App-Every/master/packed/every'
将every保存到/usr/bin或将其父目录添加到您的PATH变量中,以便可以从命令行运行every。
使用every安排任务
安排任务的every命令的形式为:“every [num] unit program”(num默认为1)。例如,如果您想安排一个每分钟运行一次的shell脚本,请输入以下内容
$ every minute script.sh
这将创建以下crontab
SHELL=/bin/bash
PATH=/home/sillymoose/perl5/perlbrew/bin:/home/sillymoose/perl5/perlbrew/perls/perl-5.16.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/sillymoose/.local/bin:/home/sillymoose/bin:
*/1 * * * * cd "/home/sillymoose"; script.sh
every将命令转换为新的crontab条目,并在命令行上打印出来。它很方便地设置了SHELL变量,并将用户的PATH复制到crontab中。更棒的是,every在cron执行任务之前,会在脚本父目录中添加一个更改目录命令。通过这些操作,every消除了(可能是)三个最常见的原因导致的cron任务失败。
every还识别其他单位,如:小时、天、周、月和星期几(例如星期三)。以下都是有效的every命令
$ every 10 hours script.sh
$ every mon script.sh
$ every 3 months script.sh
现代cron安装的一个真正酷的功能是可以安排在重启时运行的作业。every也支持这一点
$ every @reboot script.sh
更多信息
every具有比上述描述更多的选项。运行“every –help”以查看完整的选项。
every是由Rebecca用Perl编写的。她还在twitter上(@ReBeccaOrg)。所以如果你使用every并且觉得它很有用,也许可以联系她说声谢谢。
这篇文章最初发布在PerlTricks.com。
标签
反馈
这篇文章有什么问题?请在GitHub上打开一个issue或pull request来帮助我们。