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