2016-07-22 103 views
1

我搜索了論壇找不到的一個。我們可以定義一個變量,每個cronjob只能增量運行嗎?在shell腳本中定義一個增量變量,每個cronjob增量

例如:

我有一個運行每5分鐘所以我需要的是增量基礎上,cron運行

說,如果運行作業5分鐘幾分鐘變量的腳本。所以6次腳本得到執行的,所以我的計數器變量應該是6現在

林在bash期待/殼

道歉,如果一個重複的問題

嘗試:

((count+1)) 
+2

環境變量不起作用。使用文件。 –

+2

如果您不關心計數器的實際值,只需從'date +%s'獲取當前時間戳,然後除以300(5分鐘內的秒數)。這會給你在每次運行中增加一個值。如果你關心實際值,則減去一個常數值。否則,按照@thatotherguy的建議,保存並重新加載每次運行的文件 – twalberg

回答

1

你可以做它這樣:

  1. 創建兩個腳本:counter.sh和increment_counter.sh
  2. 在cron作業添加increment_counter.sh執行
  3. 添加. /path/to/counter.sh/etc/profile/etc/bash.bashrcwherever you need

counter.sh

declare -i COUNTER 
COUNTER=1 
export COUNTER 

increment_counter.sh

#!/bin/bash 
echo "COUNTER=\$COUNTER+1" >> /path/to/counter.sh 
1

外殼你'已經退出運行命令;它設置的任何變量都消失了。你不能爲此使用變量。

你需要的是某種永久數據存儲。這可能是一個數據庫,或一個遠程網絡服務,或各種各樣的東西,但到目前爲止,最簡單的解決方案是將值存儲在磁盤上的某個文件中。在腳本啓動時讀取文件,然後寫出遞增的值。

你應該考慮如果文件丟失怎麼辦,以及如果腳本的多個副本同時運行會發生什麼情況,並決定這些是否是你關心的情況。如果是,則需要分別在腳本中添加適當的錯誤處理和鎖定。