0

Unix環境でcronをセットアップして、コードと構成ファイルを1時間ごとにバックアップフォルダーに同期しようとしています。

これは、仕事用端末にログインするたびに、1時間ごとに発生する必要があります。そこで、.bashrcファイルに次のファイルを挿入しました。

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

ただし、複数の作業端末にログインすると、それぞれが独立してジョブを実行し、1時間ごとに複数の電子メール(端末ごとに1通)を受け取ります。

cronジョブを実行する端末が1つだけであることを確認したいと思います。そうして、複数端末の問題を回避する方法を提案してください。

4

1 に答える 1

3

私はあなたが望むものは参照カウントの線に沿ったものだと思います:これを.bashrcに入れると

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

.bash_logoutのこのようなもの

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

次に~/.login_count、常に正常にログアウトすると仮定して、アクティブなターミナルセッションの数が含まれます。

次に、cronジョブでこれがゼロ以外であることをテストして、少なくとも1つの端末がログインしているかどうかを確認できます。

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

于 2011-12-02T12:34:47.070 に答える