निर्देशिका को बनाने वाले उपयोगकर्ता को मूल निर्देशिका पर लिखने की पर्याप्त अनुमति नहीं है।
आप इसके बजाय inotifyलिनक्स कर्नेल द्वारा प्रदान किए गए सिस्टम कॉल के परिवार का लाभ उठा सकते हैं , दिए गए डायरेक्टरी में mvडायरेक्टरी के निर्माण (और वैकल्पिक रूप से ) के लिए देख सकते हैं shop, यदि डायरेक्टरी (या वैकल्पिक रूप से mv), rmडायरेक्टरी बनाई गई है ।
इस मामले में आपके द्वारा आवश्यक यूजरस्पेस प्रोग्राम inotifywait( inotify-toolsजरूरत पड़ने पर इसे पहले इंस्टॉल करें)।
मान लिया जाये कि निर्देशिका shopमें रहने वाले की जाएगी /foo/barनिर्देशिका, के लिए एक निगरानी निर्धारित करने की अनुमति /foo/bar/shopसृजन, और rmतुरन्त अगर बनाया:
inotifywait -qme create /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
inotifywait -qme create /foo/barदेखता है /foo/barकिसी भी फाइल / निर्देशिका है कि किसी भी के लिए यानी घड़ी बनाया जा सकता है के लिए निर्देशिका createघटना
यदि बनाया गया है, awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'तो जाँच करें कि क्या फ़ाइल एक निर्देशिका होती है और नाम है shop( /,ISDIR shop$/), यदि ऐसा है rmतो निर्देशिका ( system("rm -r -- /foo/bar/shop"))
आपको कमांड को एक उपयोगकर्ता के रूप में चलाने की आवश्यकता है जिसने निर्देशिका से /foo/barहटाने के लिए निर्देशिका पर अनुमति लिखी है shop।
यदि आप mvभी संचालन की निगरानी करना चाहते हैं, तो moved_toघटना के लिए घड़ी भी जोड़ें :
inotifywait -qme create,moved_to /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
बस ध्यान दें, यदि आप एक फ़ाइल की तलाश कर रहे हैं, तो निर्देशिका नहीं, नाम shop:
inotifywait -qme create /foo/bar | \
awk '$NF == "shop" { system("rm -- /foo/bar/shop") }'
inotifywait -qme create,moved_to /foo/bar | \
awk '$NF == "shop" { system("rm -- /foo/bar/shop") }'