什么是计划任务服务
crond是Linux系统中用于设置周期性被执行的任务的工具,它是一个在后台运行的程序(守护进程),主要负责根据预先设定的时间表自动执行脚本或命令。这些任务可以包括定时重启、运行计划的备份、监视磁盘空间、定期删除不再需要的文件(例如日志文件)、运行系统维护任务等。通过crond,用户可以方便地执行临时文件清理、系统信息采集、日志文件切割、服务器时间同步、定时备份等任务。
相关命令与语法
启用、停用或者查看该守护进程
- 启动crond服务:
systemctl start crond
- 停止crond服务:
systemctl stop crond
- 重启crond服务:
systemctl restart crond
- 查看crond服务状态:
systemctl status crond
编辑与查看crontab文件
- 编辑当前用户的crontab文件:
crontab -e
- 列出当前用户的crontab任务:
crontab -l
- 删除当前用户的crontab任务:
crontab -r
除开以上方案,我们也可以直接进入crontab配置文件进行编辑和查看,每个使用了crond的用户都会在cron目录下建立默认与自己同名的crontab配置文件,我们可以用以查看这台机器都有谁拥有自己的计划任务。如下图所示:
crontab文件格式
crontab文件的每一行代表一项任务,包含六个字段,分别代表分钟、小时、日期、月份、星期几和要执行的命令。字段之间用空格分隔,具体格式如下:
0 2 * * * /run.sh # 每天的2点
0 2 14 * * /run.sh # 每月14号2点
0 2 14 2 * /run.sh # 每年2月14号2点
0 2 * * 5 /run.sh # 每个星期5的2点
0 2 * 6 5 /run.sh # 每年6月份的星期5的2点
0 2 2 * 5 /run.sh # 每月2号或者星期5的2点 星期和日同时存在,那么就是或的关系
0 2 2 6 5 /run.sh # 每年6月2号或者星期5的2点
*/5 * * * * /run.sh # 每隔5分钟执行一次
0 2 1,4,6 * * /run.sh # 每月1号,4号,6号的2点
0 2 5-9 * * /run.sh # 每月5-9号的2点
* * * * * /run.sh # 每分钟
0 * * * * /run.sh # 每整点
* * 2 * * /run.sh # 每月2号的每分钟
其中,星号(*)表示任意值,可以使用逗号(,)表示多个值,使用连字符(-)表示范围,使用斜杠(/)表示步长。
预配置的计划任务
系统提供了一些快捷目录,任务文件放入后会自动按周期执行:
/etc/cron.hourly/
:每小时执行/etc/cron.daily/
:每天执行/etc/cron.weekly/
:每周执行/etc/cron.monthly/
:每月执行
crond日志
有关计划任务的日志,我们都会存放于/var/log/cron文件中。当crond无法正常执行或者需要查看crond日志时,我们可以使用这个日志文件进行查看。如下图所示:
crond用户黑白名单
默认情况下,cron会在/etc目录下自动创建cron.deny文件,这个文件就是crond的黑名单文件,所有在列的用户名都不可使用crond服务。如下所示:
而白名单cron.allow则默认不存在,需要用户自己创建于deny文件相同的目录下(默认为/etc下)。需要注意的是,一旦allow文件被创建则deny文件失效。如下所示: