উত্তর:
লিনাক্স কার্নেল ৪.7 ( কমিট ) দিয়ে শুরু করে, উমাস্কটি উপলব্ধ /proc/<pid>/status
।
$ grep '^Umask:' "/proc/$$/status"
Umask: 0022
দ্রষ্টব্য: এই উত্তরটি লিনাক্স কার্নেলগুলিতে 4.6 এবং তার আগের ক্ষেত্রে প্রযোজ্য। কার্নেলের নতুন সংস্করণগুলির জন্য @ এমমন্টের উত্তর দেখুন ।
উমাস্কটি প্রকফগুলিতে প্রকাশিত হয় না। খুব বেশি সাফল্য ছাড়াই এটি যুক্ত করার চেষ্টা করা হয়েছিল ।
উমাস্কটি ব্যবহার করার উপায় রয়েছে, যা এখানে আগেgdb
ব্যাখ্যা করা হয়েছে :
$ gdb --pid=4321
(gdb) call/o umask(0)
$1 = 077
(gdb) call umask($1)
$3 = 0
মনে রাখবেন যে জিডিবি প্রক্রিয়া এবং এর থ্রেডগুলি থামায়, তাই উমাস্কের অস্থায়ী পরিবর্তন নগণ্য।
যদি এটি আপনার ক্ষেত্রে ভাল হয় তবে আপনি এই অনেলাইনারটি ব্যবহার করতে পারেন:
$ gdb --batch -ex 'call/o umask(0)' -ex 'call umask($1)' --pid=4321 2> /dev/null | awk '$1 == "$1" {print $3}'
077
অন্য বিকল্পটি হ'ল, যদি আপনি চলমান প্রক্রিয়াটি নিয়ন্ত্রণ করতে পারেন তবে একটি ফাইল, একটি আউটপুট বা অনুরূপ কিছুতে উমাস্ক লিখতে এবং সেখান থেকে এটি পেতে পারেন।
লিনাক্স-এ, systemtap
(যেমন 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
।