जवाबों:
यह बैश फ़ंक्शन तब तक ब्लॉक होगा जब तक कि दी गई फ़ाइल प्रकट नहीं होती है या किसी दिए गए टाइमआउट तक नहीं पहुंचती है। यदि फ़ाइल मौजूद है, तो बाहर निकलने की स्थिति 0 होगी; यदि ऐसा नहीं होता है, तो बाहर निकलने की स्थिति दर्शाती है कि फ़ंक्शन ने कितने सेकंड इंतजार किया है।
wait_file() {
local file="$1"; shift
local wait_seconds="${1:-10}"; shift # 10 seconds as default timeout
until test $((wait_seconds--)) -eq 0 -o -f "$file" ; do sleep 1; done
((++wait_seconds))
}
और यहां बताया गया है कि आप इसका उपयोग कैसे कर सकते हैं:
# Wait at most 5 seconds for the server.log file to appear
server_log=/var/log/jboss/server.log
wait_file "$server_log" 5 || {
echo "JBoss log file missing after waiting for $? seconds: '$server_log'"
exit 1
}
एक और उदाहरण:
# Use the default timeout of 10 seconds:
wait_file "/tmp/examplefile.txt" && {
echo "File found."
}
until [ -f /tmp/examplefile.txt ]
do
sleep 5
done
echo "File found"
exit
हर 5 सेकंड में यह जाग जाएगा और फ़ाइल की तलाश करेगा। जब फ़ाइल दिखाई देती है, तो यह लूप से बाहर हो जाएगी, आपको बताएगा कि उसने फ़ाइल और निकास पाया (आवश्यक नहीं, लेकिन साफ है।)
इसे स्क्रिप्ट में रखें और इसे स्क्रिप्ट के रूप में शुरू करें
वह इसे पृष्ठभूमि में चलाएगा।
आपके द्वारा उपयोग किए जाने वाले शेल के आधार पर सिंटैक्स में सूक्ष्म अंतर हो सकते हैं। लेकिन वह इसका सार है।
start=`date +%s`; while (( `date +%s` - start > 10 )); do sleep 1; done