2016-08-25 11 views
0

最後のバックアップがまだ完了していない場合や、スクリプトがまだ残っている場合は、別のバックアップを開始しないようにバックアップ用のcrontabスクリプトに条件を設定しようとしていますバックアップが遅くなるか、このような場合に備えて、実行中です。このために私は似たようなを作成したが、Linuxは最初のプロセスを作成して、スクリプトを実行しますよりも、それはオールウェイズ「プロセスが実行されている」と存在しますので、コマンド:バックアップが正常に実行されたかどうかをチェックして別のバックアップを開始する条件

ps auxw | grep backup.sh | grep -v grep > /dev/null 
if [ $? = 0 ]; then 
    echo "process is running"  
    exit 1 
else 
    ./backup.sh 
fi 

答えて

1

コードスニペットはbackup.shファイルから来ている場合は、あなたを上記の検証を別のファイルに入れることができます。それでgrepは "それ自身"とマッチしません。

もう1つの方法は、追加の使用中のファイルを使用することです。使用中のファイルを作成します。ファイルが存在する場合は終了します。1.スクリプトの終了後、使用中のファイルが削除されていることを確認します。

#!/usr/bin/env bash 

set -o errexit 

trap cleanup ERR INT QUIT 

cleanup() 
{ 
    rm -f "$INUSE" 
} 

INUSE=/home/abc/inuse/backup.inuse 

if [ if -f "$INUSE" ]; then 
    echo "process is running" 
    exit 1 
else 
    touch "$INUSE" 
fi 

# backup starts in here 

# end of backup 
cleanup 
関連する問題