定时任务
常用作用
- 定时备份数据库数据,存储数据,配置文件(软件配置,内核参数配置)。
- 定时发微信,邮件。
- 定时执行任务。
- 数据报表统计。
windows系统定时任务
“开始”——“所有程序”——“附件”——“系统工具”——“任务计划程序”
可在此处新建或删除修改定时任务。
(可设置定时关机等任务)
linux系统定时任务
- at定时任务软件(依赖与atd服务)仅执行一次就结束的调度任务。
- cron定时任务软件(依赖与crod服务)通过crontab命令配置周期性的定时任务。
- anacron定时任务软件以天为周期或者在系统每次开机后执行任务。检测服务器停机期间应执行但并没有执行的任务,并将任务执行。
cron安装语句
linux-ivfj:~# yum -y install vixie-cron
linux-ivfj:~# yum -y install crontabs
cron
- 用户定时任务计划
crond为服务进程名,会以分钟为单位查看/var/spool/cron路径下以系统用户名命名的定时任务文件,查看是否有要执行的定时任务。有则将任务调度到内存中执行,这部分文件为用户定时任务文件,使用crontab命令编辑的文件最终都会以当前用户名作为文件名存在/var/spool/cron路径下(例如用root用户配置的定时任务, 其配置文件为/var/spool/cron/root)。 - 系统定时任务计划
查看/etc/cron.d目录以及/etc/anacrontab下的文件内容,每年每周每月需执行的任务。
linux-ivfj:~ # ls -l /etc|grep cron
drwxr-xr-x 2 root root 4096 Jun 27 2017 cron.d #<==系统定时任务目录
drwxr-xr-x 2 root root 4096 Jul 9 2020 cron.daily#<==按天轮询配置的目录
-rw------- 1 root root 6 Aug 21 2015 cron.deny
drwxr-xr-x 2 root root 4096 Jul 9 2020 cron.hourly
drwxr-xr-x 2 root root 4096 Aug 24 16:48 cron.monthly
drwxr-xr-x 2 root root 4096 Aug 24 16:48 cron.weekly
-rw------- 1 root root 255 Aug 21 2015 crontab
crond服务还可周期性的自动执行和操作系统相关的定时任务,例轮询系统日志,备份系统数据,清理系统缓存。
linux-ivfj:~ # ls -l /var/log/messages* #<==linux系统日志自动轮询,
-rw-r----- 1 root root 1873770 Aug 25 09:41 /var/log/messages
linux-ivfj:~ # ls -l /var/log/secure*
注:以上两种定时任务的配置格式不相同。
cron定时任务语法
crontab -l 查看定时任务内容(同 cat /var/spool/cron/root)
crontab -e 编辑定时任务内容(同 vim /var/spool/cron/root)
定时任务权限及配置文件
文件 | 说明 |
---|---|
/etc/cron.deny | 不允许使用crontab命令 |
/etc/cron.allow | 允许使用crontab命令,优先于/etc/cron.deny |
/var/spool/cron/ | 所有用户的cron配置文件都默认放置在此目录中 |
用户定时任务编写基本格式
cat /etc/crontab #配置文件
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
##每十五分钟执行一次
* * * * * cmd
书写格式由五个星号,和执行的命令或脚本组成如上
第一个星号,代表分钟;
第二个星号,代表小时;
第三个星号,代表日,天;
第四个星号,代表月份;
第五个星号,代表星期,周几;
例:
00 10 * * * cmd
每月每周每天的10点00分执行cmd任务。
00 1-3 * * * cmd
每月每周每天的1点,2点,3点分别执行
00 12,10,1 * * * cmd
每月每周每天的12点,110点,1点执行
*/12 * * * * cmd
每隔12分钟执行一次
crontab命令编辑的定时任务依赖服务
linux-ivfj:~ # systemctl status crond.service#<==查看cron定时任务服务启动状态
● crond.service
#若以下有enabled说明开机crond为自启动状态,running为当前启动状态,目前以下系统没有定时任务。
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
linux-ivfj:~ # systemctl restart crond.service#定时任务重启命令
linux-ivfj:~ # systemctl start crond#开启
linux-ivfj:~ # systemctl enable crond#关闭
注:编辑定时任务文件后,无需重启定时任务,crond会自动检查更改的变化。
若定时任务出现故障,可查看/var/log/cron文件。
学习老男孩的总结,嘿嘿,做个总结,防止过两天忘了。