2014-05-07 49 views
1

我在bash上不是很好我一直在修改一個代碼來創建一個鎖文件,所以如果第一個進程沒有第二次執行,cron不會執行完。在bash中創建一個鎖文件以避免重複執行

LOCK_FILE=./$(hostname)-lock 
(set -C; : > $LOCK_FILE) 2> /dev/null 
if [ $? != "0" ]; then 
    echo "already running (lock file exists); exiting..." 
exit 1 
fi 

trap 'rm $LOCK_FILE' INT TERM EXIT 

當我運行它的第一次我得到的消息已經在運行,就好像文件已經存在。

也許我失去了一些東西

+0

閱讀bash腳本中的flock使用情況。 – PradyJord

回答

1
#!/bin/sh 

(
    # Wait for lock on /tmp/lock 

    flock -x -w 10 200 || exit 127 # you can use or not use -w 

    #your stuff here 

) 200> /tmp/lock 

檢查手冊頁的羊羣。

這是你的工具。 它在手冊頁中帶有示例:)