每天晚上23:59备份lampp日志(access_log),备份的文件名以当时的系统时间命名。(备份文件路径:/tmp/logs)
1、编写备份的shell脚本命名为bak_log.sh;(注意用``表示里面是执行的命令,用''表示定义变量;一开始用的'',导致fileName取不到准确的时间值)
vim bak_log.sh #新建并编辑bak_log.sh脚本
#!/bin/bash #指定shell解释器(linux默认的shell解释器是bash)
filePath='/opt/lampp/logs/access_log' #定义变量filePath,取需要备份的日志路径
bakPath='/tmp/logs' #定义变量bakPath,取备份日志的路径
fileName=`date +%Y%m%d%H%M%S` #定义fileName,执行命令取系统时间为文件名
cat $filePath >$bakPath/access_log_$fileName #把/opt/lampp/logs/access_log的内容复制到/tmp/logs/access_log_$fileName文件里
>$filePath #备份完成后,清空/opt/lampp/logs/access_log日志
2、添加定时任务;
crontab -e #编辑定时任务
59 23 * * * sh /opt/lampp/bak_log.sh #表示每晚的23:59执行备份文件bak_log.sh
引申问题:
①.执行完crontab -e,可能遇到的提示信息:no crontab for root - using an empty one
需要设置选择下编辑器,在/etc/profiled这个配置文件配置编辑器;
vim /etc/profile
在最后加上:export EDITOR="/usr/bin/vim" #选择vim为编辑器
保存后,执行source /etc/profile命令。(这个命令的含义是重新读取下配置文件,让你的修改能够立即生效。)
②.若没有配置,直接执行export EDITOR="/usr/bin/vim" ; crontab -e,报错如下:
no crontab for root - using an empty one
crontab: installing new crontab
"/tmp/crontab.0ISO2w":1: bad day-of-week
errors in crontab file, can't install.
Do you want to retry the same edit?
这个报错是由于时间格式不对导致,查看下你定时任务的时间设置是否准确。
命令说明:export EDITOR="/usr/bin/vim" ; crontab -e →中间的分号,是用来分隔两个命令的,意思是让命令顺序执行。
直接执行 export 这个命令来设置变量,虽然当时能够生效,但是下次重新启动后,还要重新设置变量。
3、最终实现。(用每分钟执行一次的定时任务测试是否成功)
*/1 * * * * sh /opt/lampp/bak_log.sh #表示每分钟执行一次执行备份文件bak_log.sh