# Crontab

# 作用

crontab 命令,可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作

接下来的内容中将通过以下几个部分来讲解如何使用crontab

  • 命令格式
  • 命令参数
  • 任务文件格式
  • macos 环境使用
  • 使用实例

# 命令格式

crontab [-u user] file crontab [-u user][ -e | -l | -r ]

# 命令参数

  • -u user:用来设定某个用户的 crontab 服务; file:file 是命令文件的名字,表示将 file 做为 crontab 的任务列表文件并载入 crontab。如果在命令行中没有指定这个文件,crontab 命令将接受标准输入(键盘)上键入的命令,并将它们载入 crontab。
  • -e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
  • -l:显示某个用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
  • -r:从/var/spool/cron 目录中删除某个用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
  • -i:在删除用户的 crontab 文件时给确认提示。

# 任务文件格式

分 时 日 月 星期 要运行的命令

  • 第 1 列分钟 0 ~ 59
  • 第 2 列小时 0 ~ 23(0 表示子夜)
  • 第 3 列日 1 ~ 31
  • 第 4 列月 1 ~ 12
  • 第 5 列星期 0 ~ 7(0 和 7 表示星期天)
  • 第 6 列要运行的命令
# 示例
0 8-12 * * * /root/backup.sh

# macos 开启

macos环境中首先要检查是否已经安装了crontab, 使用如下命令查看:

# 查看
sudo launchctl list | grep cron
# 如第一步不存在这新建crontab
sudo touch /etc/crontab
# 编辑crontab任务
crontab -e

同时, 在macos环境中常用的开启重启的命令:

sudo /usr/sbin/cron start
sudo /usr/sbin/cron restart
sudo /usr/sbin/cron stop

# 应用实践

# 每 1 分钟执行一次 myCommand

* * * * * myCommand

# 每小时的第 3 和第 15 分钟执行

3,15 \* \* \* _ myCommand

# 在上午 8 点到 11 点的第 3 和第 15 分钟执行

3,15 8-11 _ \* _ myCommand

# 每隔两天的上午 8 点到 11 点的第 3 和第 15 分钟执行

3,15 8-11 _/2 \* _ myCommand

# 每周一上午 8 点到 11 点的第 3 和第 15 分钟执行

3,15 8-11 _ _ 1 myCommand

# 每晚的 21:30 重启 smb

30 21 _ \* \* /etc/init.d/smb restart