shell 指令碼日期操作

2021-07-27 21:41:42 字數 1241 閱讀 6676

最近使用kettle任務時,在指令碼開發時,使用到獲取指定日期前後幾天的日期,例如: 獲得變數yesterday=2017-03-05,前兩天的日期字串。

在平常使用的時候,僅使用過獲取當前時間前後幾天的日期,可以使用:stime=`date -d "1 days ago" +%f`

# date -d "1 days ago" +%f

2017-03-04

但是並沒有使用過獲取指定日期前後幾天的日期,檢視date文件,把常用內容列舉下來,方便檢視:

synopsis

date [option]... [+format]

-d,--date=string

顯示指定字串的日期,如:date -d "2017-03-02"

-r,--reference=file

顯示指定檔案最後更新時間,如:date -r /etc/hosts

-s,--set=string

設定時間為指定字串時間

還可以指定時間顯示格式:常見的有:

%s	seconds since 1970-01-01 00:00:00 utc

%f full date; same as %y-%m-%d

%y year

%m month

%d day

以上文件中,-d(--date)是我們肯定會用的引數,用來指定某一天的日期,如:

# date -d "2017-03-02"

2023年 03月 02日 星期四 00:00:00 cst

但是需要進行當前時間天數運算,我們會想到時間戳,可以完美的解決加減問題,可以將指定日期轉化成時間戳,然後對時間戳進行格式化,獲得我們想要的日期加減需求,

yesterday=20170203

yesterday_mills=`date -d $ +%s`

before_yesterday=`date -d @$(($yesterday_mills-60*60*24)) +%y%m%d`

echo $before_yesterday

其中@符號,是問度娘知道的,應該是使用時間戳,轉化成日期型別,

在時間戳進行加減的時候,需要使用括號括起來,並且需要使用$()將帶括號的計算表示式括起來,然後以要求時間格式輸出顯示。

shell指令碼 日常巡檢

以下內容僅為提供思路 對於運維來說,每天對所管理的伺服器進行一次以上的巡檢是最基本的工作,當然,天天free df的敲鍵盤很麻煩,這時候最好寫乙個日常巡檢的指令碼,辛苦一天,輕鬆一年 巡檢指令碼有兩種思路,一種是當你想親眼看一看系統狀況的時候,每台伺服器都親自執行一遍這個指令碼 另一種是將所有功能封...

shell指令碼 日誌切割

bin bash 介紹 logcut.sh 簡單的日誌切割指令碼,前3天的切割方便隨時看,前4 10天的進行壓縮,超出的刪除 注意 會將其他帶時間的日誌壓縮後刪除 功能 日誌切割 日誌格式 xx.當前年 月 日.log 壓縮格式 xx.當前年 月 日.tar.gz 適用 centos6 語言 中文 ...

學習shell指令碼日記

linux,shell 2015 02 07 1.計畫任務 corntab e 編寫計畫任務 corntab l檢視計畫任務 corntab r清除所有的計畫任務 如果要清除某一項計畫任務,就是進入計畫任務的編輯頁面,逐個刪除就可以了 2.任務計畫編寫與執行 內容 格式 分 時 日 月 年 命令 r...