对应的系统服务是crond, 这个服务安装完系统就存在的。
也有配置文件来限制使用crond这个服务的用户: /etc/cron.deny /etc/cron.allow
/etc/cron.allow: 文件不存在,如果想要应用,手动去创建, 哪些用户可以使用
/etc/cron.deny: 文件存在,直接就可以, 哪些用户不可以使用
可以使用crontab这个命令来设置循环例行工作,建立例行工作之后会被写入到/var/spool/cron/, 以用户名来进行区分的。
crontab命令
crontab [-u user] [-l | -r | -e]
-u:只有root才能进行这个任务,帮某个用户新建/删除crontab
-e:编辑crontab的工作内容
-l:查阅crontab的工作内容
-r:删除所有的crontab的工作内容
crontab -e:编辑的时候,文件中写入的格式
总共6个字段: 前五个字段是设置周期,最后一个字段是要执行的任务
分钟 小时 天 月 星期 command(命令)
设置的时候,如果哪个不写的话,使用 * 来代替
星期的0-7: 其中0和7都代表周日
特殊符号:
* : 代表所有
, : 假设小时字段 1,2,3,5,11 => 会在一天里边的 1点,2点,3点,5点,11点去执行例行工作
- : 范围 小时: 1-4 =》代表就是一天中1点到4点去执行例行工作
/ : 代表的是频率: 分钟 */15 => 每15分钟执行一次 =》 /数字
举例:
闹钟:每周的周一到周五早上9点 执行叫我起床的任务
星期:周一到周五
月份:无关
日期:无关
小时:9
分钟:0
执行的任务:echo "叫我起床" > /root/cron_task
0 9 * * 1-5 echo "叫我起床" > /root/cron_task
系统例行工作:
vim /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
crontab -e: 现在使用的是哪个用户就为哪个用户创建
crontab -u sshuser -e: root用户为sshuser创建
系统任务
* * * * * username command
username: 代表哪个用户去执行后边的任务
如果要执行多个任务,可以把执行的脚本文件,放入一个目录中,然后run-parts 目录
0 9 * * * sshuser run-parts /root/cron_script
每天早上9点sshuser去执行 /root/cron_scripts/所有的脚本