2015-05-31 20 views
0

我對Linux Bash非常新穎,我不確定是否可以實現我想要做的事情。Linux Bash ...如果時間> 20:00然後echo'hello'fi

我有一個運行24/7的程序,將我的一臺服務器上傳到雲端。唯一的問題是,它正在殺死我的帶寬。

所以我的想法是讓它從00:05運行到05:55,在這個夜晚的這個時候沒有人會忙碌。

因此,像:

If $(date +"%T") < 05:55 then 

backup.sh 

else 

killbackup.sh 

fi 
+7

你爲什麼不只是使用一個cron腳本? –

+0

我想我可以使用cron從06:00到00:00每5分鐘運行一次killbackup.sh腳本,從00:05到05:55每5分鐘運行一次backup.sh。如果我沒有找到答案,我會看看做的比。我很抱歉過去幾天的回覆非常忙碌。 –

回答

2

試試這個:

#!/bin/bash 

h=$(date +"%k") # current hour (24h) without leading zero 
m=$(date +"%M") # current minute 
t=$[h*60+m]  # calculate minutes since midnight 

# -gt: greater-than, -lt: less-than 
if [[ $t -gt 5 ]] && [[ $t -lt 355 ]]; then 
    # run from 0:06 to 5:54 
    backup.sh 
else 
    # run from 5:55 to 0:05 
    killbackup.sh 
fi 
+0

嗨,真是太棒了。非常切割的方式做到這一點。統計自00:00以來的分鐘數。已經測試它100%,但看起來像它的工作。非常感謝 –

1

你可以這樣做:

#!/bin/bash 
time=$(date +%T) 
time=${time//:/} 
if ((time < 055500 && time > 000500));then #between 00:05 to 05:55 
    backup.sh 
else 
    killbackup.sh 
fi 
+0

嗨,真是太棒了。像這樣你的計時器可以成爲第二基礎。 –

+0

@Chewy「就像這樣,你的計時器可以以秒爲基礎」,如果這是一個問題,你能更具體嗎?我不明白你的意思....爲了澄清,在'時間<055500'中,05部分是小時,55是分鐘,00是第二個,你可以用秒來指定條件。 。 – Jahid

+1

嗨Jahid。對不起,我沒有問題,我喜歡你如何在你的代碼中使用秒。 E.G如果你想要的時間是05:55:30與05:55:00(因爲什麼原因你需要額外的30秒),你可以使它055530. –

相關問題