每天晚上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