如果你使用 Mac 或 Linux 希望可以定时执行脚本,可以使用 crontab 命令。
比如,定时播放八段锦的 shell 脚本,或者是定时打卡的脚本。如果想要查看 Mac 支持的终端命令可以看 awesome-macos-command-line-zh
基本语法
crontab [选项]
选项功能描述
- -e 编辑当前用户的 crontab 文件。
- -l 列出当前用户的 crontab 文件内容。
- -r 删除当前用户的 crontab 文件。
- -i 在删除 crontab 时提示用户确认(与 -r 组合使用)。
- -u 指定用户管理该用户的 crontab 文件(需管理员权限)。
Cron 时间格式
crontab 使用 5 个字段来定义任务的运行时间,加一个命令字段。时间字段以空格分隔:
分钟 小时 日期 月份 星期 命令
分钟 0-59 任务执行的分钟数
小时 0-23 任务执行的小时数
日期 1-31 任务执行的日期(几号)
月份 1-12 或 jan-dec 任务执行的月份
星期 0-7 或 sun-sat 任务执行的星期几(0 和 7 均表示星期日)
命令 任意有效的命令或脚本 要执行的任务
特殊符号说明
- *:任意值。例如,* 在小时字段表示每小时执行。
- ,:多个值。例如,1,15 在分钟字段表示第 1 分钟和第 15 分钟执行。
- -:范围。例如,1-5 在小时字段表示从 1 点到 5 点执行。
- /:步长。例如,*/5 在分钟字段表示每隔 5 分钟执行一次。
特殊字符串(简化定义)
- @reboot 系统启动时运行一次
- @yearly 每年一次(1 月 1 日 0 点)
- @monthly 每月一次(每月 1 日 0 点)
- @weekly 每周一次(周日 0 点)
- @daily 每天一次(0 点)
- @hourly 每小时一次
用法示例
# 每周一到周五早上 8 点执行任务
0 8 * * 1-5 /path/to/command
# 每隔 10 分钟运行脚本
*/10 * * * * /path/to/script.sh
# 在系统启动时运行脚本
@reboot /path/to/script.sh
查看运行日志
默认情况 crontab 的任务运行后,每次打开Mac 终端提示上方会提示你 You have new mail,这是因为 crontab 执行完任务会自动发送系统邮件,可以使用 mail 命令处理。
哈哈,有 829 封未读
输入数字可以查看,每一封是什么,比如输入 829
这是本地一个 crontab 定时任务执行的日志,可执行文件的路径不存在。才发现文件已经被移动了位置,由于现在也没什么用就把它非注释掉不用执行。
在 mail 界面常用命令操作:
- t,查看消息, t [数字] 查看指定 mail
- d,删除消息,输入 d * 删除所有 mail,d [数字] 删除指定 mail
- q,退出