2011-12-02 66 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