Crontab基础使用

写在前面

crontab 命令需要 crond 服务支持。
crond 是 Linux 用来周期/定时执行某个任务或处理某些事件的守护进程,类似 Windows 的计划任务。

crontab命令

命令常用参数:

参数 说明
-u 指定用户的 crontab 服务,例如 “-u demo” 表示 demo 用户的 crontab 服务
-e 编辑 crontab 文件。可指定用户,默认当前用户的 crontab 文件
-l 显示 crontab 文件内容,可指定用户,默认当前
-r 从 /var/spool/cron 删除 crontab 文件,可指定用户,默认当前
-i 在删除 crontab 文件时,给确认提示
# 查看 crond 服务状态
service crond status

# crontab 全局配置文件,可指定用户
cat /etc/crontab

# 用户自己的,crontab -e 命令配置文件
cat /var/spool/cron/root 
# 用户自己的,用户目录 .crontab 文件
cat .crontab

# 配置 crontab 任务 
crontab -e

执行“crontab -e”命令时,是用 Vim 打开crontab 配置文件,文件格式如下:

# crontab 配置说明,可参考:/etc/crontab 
[root@localhost ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

这个文件中是通过 5 个 * 来确定命令或任务的执行时间的,具体含义如下:

5个 * 说明 范围
第一个 * 一小时当中的第几分钟(minute) 0~59
第二个 * 一天当中的第几小时(hour) 0~23
第三个 * 一个月当中的第几天(day) 1~31
第四个 * 一年当中的第几个月(month) 1~12
第五个 * 一周当中的星期几(week) 0~7,0和7都代表星期日

除了 * 之外的特殊常用符号:

特殊符号 含义
*(星号) 代表任何时间。比如:第一个 * 代表每分钟都执行一次的意思
,(逗号) 代表不连续的时间。比如:0 8,12,16 * * * conmand, 代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令
-(中杠) 代表连续的时间范围。比如:0 5 * * 1-6 conmand,代表在周一到周六的凌晨 5 点 0 分执行命令
/(正斜线) 代表每隔多久执行一次。比如:*/10 * * * * conmand,代表每隔 10 分钟就执行一次命令
# 如:周天凌晨5分定时重启:
5 0 * * 7 /sbin/shutdown -r now

crond 黑白名单

白名单:/etc/cron.allow,黑名单:/etc/cron.deny。优先级:cron.allow > cron.deny

# 直接配置 user 即可
[root@localhost ~]# cat /etc/cron.deny 
# user1
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!