flock
इंटरलॉकिंग संचालन के तरीकों में से एक है। उपयोगिता उपयोग-लिनक्स टूलसेट का हिस्सा है और केवल लिनक्स के लिए उपलब्ध है। अन्य उपयोगिताओं, प्लेटफार्मों की एक विस्तृत श्रृंखला में उपलब्ध हैं, डैनियल जे। बर्नस्टीन की setlock
उनके डेमोंटोल्स पैकेज से उपयोगिता के आसपास आधारित हैं :
ये उपकरण एम। कुरेंकोव के उत्तर में इस्तेमाल किए जाने वाले एक भिन्न प्रतिमान के साथ काम करते हैं ( flock
वह भी जो रोजगार दे सकता है, लेकिन उस उत्तर में नहीं है)। एक setlock
प्रोग्राम को चेन लोड करने के लिए कमांड को इंटरलॉक करता है जिसे इंटरलॉक किया जाना चाहिए। setlock
स्वयं लॉक फाइल को खोलता और बंद करता है, और इसके लिए एक फाइल डिस्क्रिप्टर छोड़ता है जो इसकी प्रक्रिया में खुला है। जब तक यह प्रक्रिया जारी रहती है तब तक लॉक बना रहता है (जब तक कि बाद की कमांड स्पष्ट रूप से खुली फाइल डिस्क्रिप्टर को खोजने और बंद करने से लॉक जारी नहीं करती)।
प्रश्न में मामले के लिए किसी को कमांड को इंटरलॉक करना होगा जो आउटपुट लाइन का उत्पादन करता है, यह जानते हुए कि यह शेल निर्मित कमांड के स्थान पर बाहरी echo
को आमंत्रित करता है echo
:
mylockfile प्रतिध्वनि "$ परिणाम" >> ./TTEMP_DIR/$OUT_FILE सेट करें
इस मामले में एपेंड मोड में आउटपुट फाइल को इंटरलॉक करना आवश्यक नहीं है। यदि ऐसा होता है, तो किसी को उस फ़ाइल को लॉक के भीतर खोलना होगा, जिसे fdredir
/ जैसे कार्यक्रमों का उपयोग करने की आवश्यकता होती है redirfd
:
mylockfile fdredir --append 1 को सेट करें। "//TEMP_DIR/OSOUT_FILE" $ परिणाम "प्रतिध्वनि"
अगर कोई चाहे तो शेल फंक्शन में बदल सकता है:
outfile () {सेटलॉक मायलॉकफाइल fdredir --append 1 "./>TEMP_DIR/$OUT_FILE" "$ @"; }
[…]
आउटफिट गूंज "$ परिणाम"
या शेल सिंटैक्स के साथ चिपके रहना और इंटरलॉक के तहत चल रहे एक दूसरे शेल द्वारा इसकी व्याख्या करना, कुछ गैर-तुच्छ उद्धरण की आवश्यकता होती है यदि किसी के शेल चर को पर्यावरण चर के रूप में निर्यात नहीं किया जाता है:
mylockfile shc -c 'echo' "$ RESULT" '>> "को सेट करें।" /' ORTEMP_DIR'/'OSOUT_FILE '"'
यह निश्चित रूप से आउटपुट फ़ाइलों को लिखने के अलावा अन्य चीजों के लिए सामान्यीकृत करता है:
झुंड mylockfile sh -c '... इंटरलॉक किया गया; सामान ... '
`pwd`
; आप बस एक डॉट (.
) का उपयोग कर सकते हैं । इसके अलावा आपको उस पूरे फ़ाइल नाम को उद्धृत करना चाहिए क्योंकि इसमें चर शामिल हैं ।