जवाबों:
लिनक्स कर्नेल 4.7 ( कमिट ) के साथ, umask में उपलब्ध है /proc/<pid>/status
।
$ grep '^Umask:' "/proc/$$/status"
Umask: 0022
नोट: यह उत्तर लिनक्स कर्नेल 4.6 और पहले के संस्करण पर लागू होता है। कर्नेल के नए संस्करणों के लिए @ egmont का उत्तर देखें ।
यूमस्क को घोषणा में उजागर नहीं किया गया है। बहुत अधिक सफलता के बिना इसे जोड़ने का प्रयास किया गया था ।
Umask का उपयोग करने का तरीका है gdb
, जैसा कि पहले यहां बताया जा चुका है :
$ gdb --pid=4321
(gdb) call/o umask(0)
$1 = 077
(gdb) call umask($1)
$3 = 0
ध्यान रखें कि gdb प्रक्रिया और उसके थ्रेड्स को रोकता है, इसलिए umask का अस्थायी परिवर्तन नगण्य है।
यदि आपके मामले के लिए यह अच्छा है, तो आप इस ऑनलाइनर का उपयोग कर सकते हैं:
$ gdb --batch -ex 'call/o umask(0)' -ex 'call umask($1)' --pid=4321 2> /dev/null | awk '$1 == "$1" {print $3}'
077
एक अन्य विकल्प है, यदि आप रनिंग प्रक्रिया को नियंत्रित कर सकते हैं, ओम्स्क को फाइल, आउटपुट या कुछ इसी तरह लिखने के लिए और इसे वहां से प्राप्त कर सकते हैं।
Linux पर, systemtap
(as root
), आप कर सकते हैं
stap -e 'probe kernel.function("do_task_stat") {
printf("%o\n", $task->fs->umask);
exit()
}
probe begin {system("cat /proc/4321/stat>/dev/null")}'
ऐसा cat /proc/4321/stat
करने से उस जाँच को ट्रिगर किया do_task_stat
जा सकता है जहाँ हम fs->umask
संबंधित प्रक्रिया के क्षेत्र तक पहुँच सकते हैं ' task_struct
कर्नेल में।