crontab定時任務打包備份檔案並刪除過期檔案
Crontab 示例,最後這裡要寫成shell指令碼定時執行
30 17 * * * cp -rf /usr/local/tomcat9-jforum/tomcat/logs/catalina.out /usr/local/tomcat9-jforum/logs
Crontab歸結為以下幾點特性:
1. Crontab約束
2. Crontab命令
3. Crontab檔案語法
4. Crontab示例
5. Crontab環境設定
6. 郵件
7. 日誌檔案
8. 其它
1. Crontab約束
當用戶名記錄在檔案/usr/lib/cron/cron.allow時,該使用者的crontab有效。當/usr/lib/cron/cron.allow檔案不存在時,使用者名稱沒被記錄在/usr/lib/cron/cron.deny檔案中,該使用者的crontab也有效。當只存在/usr/lib/cron/cron.deny且為空時,所有的使用者都可使用crontab。
當前兩個檔案都不存在時,只有root使用者可以使用crontab。Deny或allow記錄以每行一個使用者名稱的形式記錄資訊
2. Crontab 命令
export EDITOR=vi ;為crontab檔案指定一個編輯器。
crontab -e 編輯該使用者的crontab,當指定crontab 不存在時新建。
crontab -l 列出該使用者的crontab。
crontab -r 刪除該使用者的crontab。
crontab -u<使用者名稱稱> 指定要設定crontab的使用者名稱稱。
crontab –v 顯示上一次編輯的時間(只在某些作業系統上可用)
3. Crontab 檔案
Crontab語法一個crontab檔案用五個段來定義:天,日期和時間,和一個要定期執行的命令程式碼。
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
所有的值都必須在相應的範圍之內,否則視為無效。在填值區域內可以是*也可以是以”,”分隔的一組值。值可以是一個數據也可以是用連線符連起來的兩個數(表示範圍)。注:日期的格式可以是星期,也可以是一個月中的天。假如兩個都有值,則在這兩個時間都會執行。
4. Crontab 例項
下面是crontab檔案中的一行,意思是在每天下午6:30中刪除臨時檔案(臨時檔案存放在/home/someuser/tmp)。30 18 * * * rm /home/someuser/tmp/*
shell示例:
vi test.sh
#!/bin/sh
#對變數賦值:
a="hello world"
# 現在列印變數a的內容:
echo "A is:"
echo $a
在您的編輯器中輸入以上內容,然後將其儲存為一個檔案test.sh。之後執行chmod +x test.sh 執行許可權
使其可執行,最後輸入./test.sh執行該指令碼。
這個指令碼將會輸出:
A is:
hello world
所需語句測試
#!/bin/shFILENAME=`date +%Y%m%d` ----------`' 靠,這是esc下面那個鍵,搞了半天才發現
tar -zcvf /usr/local/tomcat9-jforum/tomcat/webapps/jforum/images/avatar 打包
30 17 * * * cp -rf /usr/local/tomcat9-jforum/tomcat/logs/catalina.out /usr/local/tomcat9-jforum/logs/catalina.out 測試複製
rm -f /usr/local/tomcat9-jforum/backup/`date +%y%m%d`_avatar.tar.gz 測試刪除
rm -f /home/svnbak/`date -d '-5 days' +%Y%m%d`.tar.gz 測試刪除過期檔案
論壇使用者檔案備份.sh
#/bin/sh
#filebak
#file executable: chmod 755 filebak
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
bakdir="/home/bbs/backup"
filename1="`date +%Y%m%d`_avatar.tar.gz"
filename2="`date +%Y%m%d`_postimages.tar.gz"
filename3="`date +%Y%m%d`_upload.tar.gz"
filename4="`date +%Y%m%d`_jforumLuceneIndex.tar.gz"
if [ ! -x "$bakdir" ];then
mkdir $bakdir
fi
cd $bakdir
tar cvfz $filename1 /home/bbs/tomcat-bbs/webapps/jforum/images/avatar 打包
tar cvfz $filename2 /home/bbs/tomcat-bbs/webapps/jforum/images/postimages
tar cvfz $filename3 /home/bbs/tomcat-bbs/webapps/jforum/upload
tar cvfz $filename4 /home/bbs/tomcat-bbs/webapps/jforum/WEB-INF/jforumLuceneIndex
rm -f $bakdir/`date -d '-30 days' +%Y%m%d`_avatar.tar.gz 刪除過期
rm -f $bakdir/`date -d '-30 days' +%Y%m%d`_postimages.tar.gz
rm -f $bakdir/`date -d '-30 days' +%Y%m%d`_upload.tar.gz
rm -f $bakdir/`date -d '-30 days' +%Y%m%d`_jforumLuceneIndex.tar.gz
新增定時任務
crontab -e
crontab -l 檢視
25 14 * * * /home/bbs/bbsfilebackup
:wq
此為每天下午兩點25執行一次