Fizzy Zhang

本文目录

mac使用crontab定时任务

Crontab 是 cron table 的缩写,字面意思日程表。可以使用 crontab 指令,按照指定的规则/周期定时执行某项任务。

常用指令:

  • crontab -l 列出目前的时程表(无日程时,执行打印 crontab: no crontab for xxx)
  • crontab -e 新建一个日程,执行后打开 vim,需要按照指定规则编写并保存(:wq)
  • crontab -r 删除目前的日程表(执行成功后没有内容打印)

编写日程的规则:

1
2
3
4
5
6
7
8
*    *    *    *    *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

举例:每天 19:45 执行 auto-task.sh 脚本中的 git 命令,来保存提交 Note目录 下的笔记。

  1. ~ 目录,即用户目录(/Users/xxx) 下创建 auto-task.sh
1
2
3
4
5
# /Users/xxx/auto-task.sh
cd ~/Note
git add .
git commit -m "update"
git push
  1. 执行 crontab -e,输入下述内容并 :wq 保存
1
45 19 * * * /bin/bash /Users/xxx/auto-task.sh

需要注意,执行文件路径必须是绝对路径。

  1. 执行 crontab -l 查看当前日程,可以看到已经加入上述任务。
1
2
> crontab -l
> 45 19 * * * /bin/bash /Users/10008678/auto-task.sh

更多指令参考:https://www.runoob.com/linux/linux-comm-crontab.html

[Tips]

到了指定时间命令执行后,在 mac 命令行上出现 You have new mail.,可以通过 mail 命令查看执行结果。

1
2
3
4
# 查看 mail
> mail
# 输入 q,查看结束离开
> q

关于 mail 参考:https://stackoverflow.com/questions/22163102/you-have-mail-message-in-terminal-os-x