Crontab-定时任务配置
前言
cron是类Unix操作系统中的作业调度器所以macos上也能用
我们可以使用cron在特定的时间或者定期执行shell脚本或者命令,自定义程度非常高,可以和提醒事项、日历等应用互补使用。
本文主要介绍在macos下cron的一些语法和常用命令,linux系统下用法无区别。
参考
常用命令
查看本用户下所有的crontabs
1
crontab -l
删除本用户下的所有crontabs
1
crontab -r
编辑本用户的crontabs
1
crontab -e
注意:此命令会自动调用系统默认的CLI编辑器进行编辑
Crontab语法
基础
crontab中一行描述一个调度任务,由5+1部分组成
[min] | [hour] | [day] | [month] | [week] | commands |
---|---|---|---|---|---|
每小时的第几分钟 | 每天的第几个小时 | 每月的第几天 | 每年的第几个月 | 每周的第几天执行 | 要执行的命令 |
可选值0-59 | 24小时制,可选0-23 | 可选值1-31 | 可选值1-12 | 可选值0-6;0代表星期日 |
注意:[day]和[week]是冲突的,如果填了[week]字段,则day要无效化,填*
最简单的例子:
30 14 17 8 * bash $HOME/scripts/test
运行效果:8月17日14点30运行scripts目录下的test脚本
进阶:几个特殊符号的含义
“*” 代表取值范围内的所有数字
- 例子:
38 * * * * bash $HOME/scripts/test
- 代表:每个月的每天的每小时的第38分钟都执行一下test脚本
“/” 代表every,“每隔”
- 例子:
*/15 * * 6 1-5 bash $HOME/scripts/test
- 代表:六月份的工作日(星期一到星期五)每隔15分钟执行一下test脚本
“,” 用以将非连续的时间点分开
- 例子:
*/15 7-8,12-13 * 8 1-5 bash $HOME/scripts/test
- 代表:八月份工作日的上午七点到八点和中午十二点到下午一点,每隔十分钟执行一下test脚本
A“-”B 代表从A到B
接下来贴一个来自archlinux wiki的例子,大家可以看一下
*0,*5 9-16 * 1-5,9-12 1-5 /home/user/bin/i_love_cron.sh
Tips
由于cron是在后台自动运行的,我们可以添加命令,使得任务完成时,可以在系统的通知中心获得提醒
archlinux
arch下可以使用notify-send
命令,示例如下:
1 | notify-send 'Touchpad' 'Disabled' -i /usr/share/icons/Qogir-manjaro/24/panel/input-touchpad-off.svg |
通知名称:Touchpad,内容:Disabled,并且附带相应主题的图片
macOS
macOS下可利用系统自带的脚本编辑器,命令如下:
1 | osascript -e 'display notification "通知内容" with title "标题" subtitle "子标题"' |