Linux中的定时任务
定时任务概述
定时任务的服务名:crond
crond就是计划任务,类似于我们平时生活中的闹钟,定点执行。
为什么要用crond
1.系统级别的定时任务
临时文件清理 系统信息采集 日志文件切割
2.用户级别的定时任务
定时向互联网同步时间 定时备份系统配置文件 定时备份数据库的数据
时间同步
先安装时间同步的命令
yum install -y ntpdate
ntpdate [时间同步服务器]
ntpdate time1.aliyun.com
定时任务的配置文件
命令的环境变量
[Thu Jul 01 12:11:29 root@localhost ~]
#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
配置文件
[Thu Jul 01 15:33:41 root@localhost ~]
vim /etc/crontab
# 定时任务中,指定bash shell
SHELL=/bin/bash
# 在PATH路径中的命令可以直接写不加绝对路径
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# 将定时任务输出的结果,发送邮件给root
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
分 时 日 月 周
#建议:
1.在写定时任务的时候,所有命令一律使用绝对路径
2.定时任务中最好不要有输出,如果有,一定要扔到黑洞/dev/null
3.如果写定时任务,尽量以脚本的形式呈现
4.每个定时任务请写上注释
时间同步定时任务
## 定时任务的相关命令
crontab
-e:edit 编辑(设置闹钟..)
-l:list 列表(查看闹钟..)
-r:删除所有的定时任务
-u:指定用户创建定时任务或者查看定时任务,或者删除定时任务
## 编辑定时任务
[Thu Jul 01 15:41:04 root@localhost ~]
#crontab -e
#Create by:wk Time:2021-07-01 Name:3mins ntp time
*/3 * * * * /user/sbin/ntpdate time1.aliyun.com $>/dev/null
## crontab日志文件
[Thu Jul 01 15:42:00 root@localhost ~]
#tail -f /var/log/cron
定时任务编写
00 02 * * * ls # 每天凌晨两点执行ls命令
00 02 1 * * ls # 每个月1号的凌晨2点执行ls命令
00 02 14 2 * ls # 每年的2月14号凌晨2点执行ls命令
00 02 * * 7 ls # 每周日的凌晨2点执行ls命令
00 02 * 6 5 ls # 每年6月的周五凌晨2点执行ls命令
00 02 14 * 7 ls # 每个月的14号如果这一天是周日在凌晨2点执行ls命令
00 02 14 2 7 ls # 每年2月14号刚好是周日的凌晨2点执行ls命令
*/10 02 * * * ls # 每天凌晨2点每10分钟执行1次ls命令
* * * * * ls # 每分钟执行一次ls命令
00 00 14 2 * ls # 每年的2月14日的零点执行ls命令
*/5 * * * * ls # 每5分钟执行一次ls命令
00 02 * 1,5,8 * ls # 每年的1月,5月,8月的每天凌晨2点执行一次ls命令
00 02 1-8 * * ls # 每个月的1号到8号的凌晨2点执行一次ls命令
00 21 * * * ls # 每天的晚上21点执行ls命令
45 4 1,10,22 * * ls # 每个月的1号,10号,22号的凌晨4点45分执行一次ls命令
45 4 1-10 * * ls # 每个月的1号到10号凌晨4点45分执行一次ls命令
3,15 8-11 */2 * * ls # 每2天的8点到11点的3分钟和15分钟执行一次ls命令
00 23-7/1 * * * ls # 每天的23点-24点,1点-7点各执行一次ls命令
15 21 * * 1-5 ls # 每周一到周五的晚上21点15分执行一次ls命令
服务器发邮件
yum install -y mailx
## 编辑邮件的配置文件
[Thu Jul 01 15:48:44 root@localhost ~]
#vim /etc/mail.rc
set from=1922142306@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1922142306@qq.com
set smtp-auth-password=lskqebgvqcoadfbe
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
##发送邮件
[Thu Jul 01 15:54:15 root@localhost ~]
#echo 'dsb'|mail -s 'nihaosuai' 3474046419@qq.com