最近有個需求要求定時對服務(wù)器上的文件進行壓縮處理,算是實戰(zhàn)中用的第一個shell吧
crontab
命令crontab -e進行開始編寫自己的定時代碼
* * * * * /u01/app/test/bak/bin/bak.sh >> /u01/app/test/bak/log/bak.log
分 小時 日 月 周 具體的命令
這里的時分秒注意一下,
如果想每隔五分鐘執(zhí)行可以是*/5 * * * * weblogic /u01/app/test/bak/bin/bak.sh >> /u01/app/test/bak/log/bak.log
如果是每天晚上十二點二十分執(zhí)行20 00 * * * weblogic /u01/app/test/bak/bin/bak.sh >> /u01/app/test/bak/log/bak.log
如果是每個月的一號中午十二點二十執(zhí)行20 12 1 * * weblogic /u01/app/test/bak/bin/bak.sh >> /u01/app/test/bak/log/bak.log
如果是每個周末的十二點二十執(zhí)行20 12 * 7 * weblogic /u01/app/test/bak/bin/bak.sh >> /u01/app/test/bak/log/bak.log
特殊符號:
- 表示任何時間 如果代碼中日月周都是*表示任何時候的這個點都會執(zhí)行
- ,(逗號) 表示分隔時段的意思
5,10,15 * * * * weblogic /u01/app/test/bak/bin/bak.sh >> /u01/app/test/bak/log/bak.log表示每個小時的5分 十分15分的時候執(zhí)行(每小時執(zhí)行三次) - -(減號) 8點到12點的 20分鐘都運行
20 8-12 * * * weblogic /u01/app/test/bak/bin/bak.sh >> /u01/app/test/bak/log/bak.log - /n 表示每隔幾分鐘
*/5 * * * * weblogic /u01/app/test/bak/bin/bak.sh >> /u01/app/test/bak/log/bak.log
注意周和日月不能同時使用
date
因為要根據(jù)日期進行壓縮,所以首先第一步要得到當(dāng)前的日期,我們知道要看當(dāng)前的日期的時候用的是date命令,但是得到的格式不是我們需要的,所以需要格式化
感覺mac上的date命令和linux上不太一樣
date -d last-day +%Y%m%d我們可以得到昨天的日期如20181114這樣的值
接下來分析一下參數(shù)和用法:
-
選項
- 不加: 顯示當(dāng)前的時間.
- -d <字符串>:顯示字符串所指的日期與時間。字符串前后必須加上雙引號;
- -s <字符串>:根據(jù)字符串來設(shè)置日期與時間。字符串前后必須加上雙引號;
- -u:顯示GMT;
- --help:在線幫助;
- --version:顯示版本信息
時間偏移值支持+-法則,支持second minute hour day week month year甚至支持1 day ago.
參數(shù)(用于格式化)
%Y %m %d %H %M %S表示年月日時分秒%a %b星期月份
其他不常用的參數(shù)
%H 小時,24小時制(00~23)
%I 小時,12小時制(01~12)
%k 小時,24小時制(0~23)
%l 小時,12小時制(1~12)
%M 分鐘(00~59)
%p 顯示出AM或PM
%r 顯示時間,12小時制(hh:mm:ss %p)
%s 從1970年1月1日00:00:00到目前經(jīng)歷的秒數(shù)
%S 顯示秒(00~59)
%T 顯示時間,24小時制(hh:mm:ss)
%X 顯示時間的格式(%H:%M:%S)
%Z 顯示時區(qū),日期域(CST)
%a 星期的簡稱(Sun~Sat)
%A 星期的全稱(Sunday~Saturday)
%h,%b 月的簡稱(Jan~Dec)
%B 月的全稱(January~December)
%c 日期和時間(Tue Nov 20 14:12:58 2012)(不加參數(shù)時的效果)
%d 一個月的第幾天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第幾天(001~366)
%m 月份(01~12)
%w 一個星期的第幾天(0代表星期天)
%W 一年的第幾個星期(00~53,星期一為第一天)
%y 年的最后兩個數(shù)字(1999則是99)
至于說 last-day 還沒百度
關(guān)于變量
1、 賦值的時候=的前后不能有空格
2、默認賦值是字符串,如果需要shell的表達式結(jié)果可以用``包裹代碼,將返回值賦值給變量
3、字符串的變量追加的時候直接跟在后頭,不加引號,憑借不用‘+’