"flock"を使用すると、出力をログファイルにリダイレクトする

"flock"を使用すると、出力をログファイルにリダイレクトする

次のbashスクリプトがあります。

テストファイル

#!/bin/bash

locks="/var/lock/userlocks"
lock=`basename "$0"`.exclusivelock

(
flock -x -w 5 200 || { echo "exiting. $lock already in use."; exit 1; }
echo "$lock acquired."
#do stuff

) 200>$locks/$lock

次のように、すべての出力をログファイルに送信できます。

$ test.sh >> logfile.log 2>&1

しかし、出力リダイレクトをこのようなスクリプトに入れることはできますか?

test2.sh

#!/bin/bash

locks="/var/lock/userlocks"
lock=`basename "$0"`.exclusivelock

(
flock -x -w 5 200 || { echo "exiting. $lock already in use."; exit 1; }
echo "$lock acquired."
#do stuff

) 200>$locks/$lock >> logfile.log 2>&1

これで、リダイレクトなしでスクリプトを呼び出すことができます。

$ test2.sh

関連情報