यहाँ अन्य उत्तर शायद काम करेंगे। विशेष रूप से, सहिष्णु समाधान शायद सबसे आसान समाधान होने जा रहा है। मैं इसे मुख्य रूप से पूर्णता के लिए प्रस्तुत करता हूं।
यदि फ़ाइल का फाइल सिस्टम उपकरणों का समर्थन नहीं करता है (उदाहरण के लिए, यह विकल्प के साथ मुहिम शुरू की गई थी), तो समाधान अनलिमिटिंग mknod
(या cp -a
) समस्याग्रस्त हो जाता है nodev
। और निश्चित रूप से, फाइलसिस्टम में कठिन लिंक बस काम नहीं करेगा।
हार्ड लिंक या नए डिवाइस नोड्स बनाने का एक विकल्प बाइंड माउंट्स का उपयोग करना है, जो आपको अपने फाइल सिस्टम ट्री के एक हिस्से से दूसरे पर फ़ाइल या निर्देशिका माउंट करने देता है। इसलिए, उदाहरण के लिए, आप चला सकते हैं:
mount -o bind /dev/null /path/to/log.txt
यह एक कड़ी की तरह बहुत काम करता है, लेकिन:
- यह फाइलसिस्टम में काम कर सकता है (क्योंकि यह हार्ड लिंक की तरह फाइल सिस्टम इनोड पर आधारित नहीं है)
- यह रीड-ओनली फाइल सिस्टम पर काम करता है (क्योंकि आप वास्तव में फाइल सिस्टम को संशोधित नहीं कर रहे हैं)
एक पूर्ण उदाहरण के लिए:
bash-4.3# ls -l /var/log/boot.log
-rw-r--r--. 1 root root 7436 Dec 19 10:00 /var/log/boot.log
bash-4.3# mount -o bind /dev/null /var/log/boot.log
bash-4.3# ls -l /var/log/boot.log
crw-rw-rw-. 1 root root 1, 3 Dec 19 09:58 /var/log/boot.log
bash-4.3# echo words words words > /var/log/boot.log
bash-4.3# ls -l /var/log/boot.log
crw-rw-rw-. 1 root root 1, 3 Dec 19 09:58 /var/log/boot.log
chmod -w log.txt
?