day23-Linux计划任务
2019-08-26 本文已影响0人
恩楠
crond计划任务
- Crontab配置文件记录了时间周期的含义
[root@ennan ~]# 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) #星期
# | | | | |
# * * * * * user-name command to be executed
- crontab常用参数及选项
参数 | 解释 |
---|---|
-e | 编辑定时任务 |
-l | 查看定时任务 |
-r | 删除定时任务 |
-u | 指定其他用户 |
使用-r会删除目前所有的定时任务,慎用
- 计划任务编写与实践
- 每5分钟执行一次时间同步
# 测试命令
[root@ennan ~]# ntpdate ntp1.aliyun.com
26 Aug 14:57:48 ntpdate[8147]: step time server 120.25.115.20 offset -2.430188 sec
编写定时任务
[root@ennan ~]# crontab -e
# 查看定时任务
[root@ennan ~]# crontab -l
# 每5分钟执行一次时间同步
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &> /dev/null
- 每天的下午3,5点,每隔半小时执行一次sync命令
[root@ennan ~]# crontab -l
# 每天的下午3,5点,每隔半小时执行一次sync命令
*/30 15,17 * * * sync &> /dev/null
- 每天凌晨3点做一次备份?备份/etc/目录到/backup下面
(1) 将备份命令写入一个脚本中
(2) 每天备份文件名要求格式: 2019-05-01_hostname_etc.tar.gz
(3) 在执行计划任务时,不要输出任务信息
(4) 存放备份内容的目录要求只保留三天的数据
# 根据要求编写脚本
[root@ennan ~]# cat back.sh
mkdir -p /backup
tar czf /backup/$(date +%F)_$(hostname)_etc.tar.gz /etc/
find /backup/ -name "etc.tar.gz" -mtime +3 | xargs rm -f
# 编写定时任务
[root@ennan ~]# crontab -l
# 每天三点备份/etc目录
00 03 * * * bash /root/back.sh &> /dev/null
定时任务编写规范
- 给定时任务注释
- 将需要定期执行的任务写入Shell脚本中,避免直接使用命令无法执行的情况tar date
- 定时任务的结尾一定要有&>/dev/null或者将结果追加重定向>>/tmp/date.log文件
- 注意有些命令是无法成功执行的 echo "123" >>/tmp/test.log &>/dev/null
- 如果一定要是用命令,命令必须使用绝对路径
定时任务如何备份
定时的备份/var/spool/cron/{usernmae}