题目
小明是一个服务器管理员,他需要每天备份论坛数据(这里我们用日志替代),备份当天的日志并删除之前的日志。而且备份之后文件名是年-月-日的格式。alternatives.log在/var/log/下面。
目标
1. 为shiyanlou用户添加计划任务
2. 每天凌晨3点的时候定时备份alternatives.log到/home/shiyanlou/tmp/目录
3. 命名格式为年-月-日,比如今天是2017年4月1日,那么文件名为2017-04-01
提示
1. date
2. crontab
3. cp(备份)
4. 用一条命令写在crontab里面即可,不用写脚本
5. 注意crontab的计划用户者
->crontab -e 表示为当前用户添加任务计划
->sudo crontab -e 表示为root用户添加任务计划
ANSWER
1. 启动日志服务器
[plain] view plain copy
$ sudo service rsyslog start
在实验楼实验环境中需要手动启动,而在自己本地中 Ubuntu 会默认自行启动不需要手动启动
2. 启动crontab服务
[plain] view plain copy
$ sudo cron -f &
在实验楼实验环境中需要手动启动,而在自己本地中 Ubuntu 会默认自行启动不需要手动启动
3. 进入crontab文件
[plain] view plain copy
$ crontab -e
vim编辑器选择“1”
编辑内容
[plain] view plain copy
0 3 * * * cp /var/log/alternatives.log/home/shiyanlou/tmp/$(date+ \%Y\%m\%d)
“:wq”保存并退出
NOTES
1. cp用法
cp [opt] SOURCE源 DIRETORY目的地
2. [crontab] "bad minute" 及 "errors in crontab file, can't install" 错误处理
根本原因是crontab文件中时间定义不正确导致的
①报错信息
"/tmp/crontab.B8TDnC/crontab":0:bad minute
errors in crontab file, can't install.
Do you want to retry the same edit? (y/n)
②关于crontab文件中时间定义,crontab文件的注释写的很清楚
# For example, you can run a backup of allyour user accounts
# at 5 a.m. every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz/home/
#
# For more information see the manual pagesof crontab(5) and cron(8)
#
# m h dom(day of month) mon(month) dow(day of week) command
③crontab时间格式内容
* * * * * command
M H D m d command
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令或脚本内容