crond计划任务
Crontab
配置文件记录了时间周期的含义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@localhost ~]# 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
分钟执行一次时间同步。
1
2
3
4
5
6
7
8
9
|
# 测试命令
[root@localhost ~]# ntpdate ntp1.aliyun.com
26 Aug 14:57:48 ntpdate[8147]: step time server 120.25.115.20 offset -2.430188 sec
编写定时任务
[root@localhost ~]# crontab -e
# 查看定时任务
[root@localhost ~]# crontab -l
# 每5分钟执行一次时间同步
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &> /dev/null
|
每天的下午3,5点,每隔半小时执行一次sync
命令。
1
2
3
|
[root@localhost ~]# 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) 存放备份内容的目录要求只保留三天的数据
1
2
3
4
5
6
7
8
9
|
# 根据要求编写脚本
[root@localhost ~]# 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@localhost ~]# 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}