2011-12-02 44 views
0

我在的Unix環境試圖安裝的cron我的代碼和配置文件同步到每小時備份文件夾避免多次cron作業。當登錄到多個終端

每當我登錄到我的工作終端並以小時頻率登錄時,我都需要這種情況。所以,我插入以下到我的.bashrc文件:

0 * * * * rsync -avz ~/codes/ /cheap/code_bkp 

不過,現在當我登錄到多個終端的工作,他們每個人的獨立運行的工作,我得到多個電子郵件(各1個終端)每隔一小時。

我想確保只有1個終端運行cron作業。請提出一些方法來避免多終端問題。

+0

這不是從你的問題不清楚如何你目前認識到終端登錄 - 你提到.bashrc,但你唯一的列表是從crontab。 – IMSoP

回答

3

我想你想要的是沿着引用計數線的東西:如果您在.bash_logout中

(counter=$(cat ~/.login_count); echo $(($counter - 1)) > ~/.login_count)

把這個.bashrc中

(counter=$(cat ~/.login_count); echo $(($counter + 1)) > ~/.login_count)

和這樣的事情

然後~/.login_count將包含活動終端會話的數量,假設您始終註銷乾淨。

然後,您可以測試,這是非零在你的cronjob,看看是否至少一個終端登錄:

0 * * * * [ $(cat ~/tmp/counter) > 0 ] && do_backup

+0

嘿謝謝!這會很好地工作! – Mindstorm