Dimulai dengan kernel Linux 4.7 (komit), umask tersedia di /proc/<pid>/status .
$ grep '^Umask:' "/proc/$$/status"
Umask: 0022
Umask tidak diekspos di procfs. Ada upaya untuk menambahkannya tanpa banyak keberhasilan.
Ada cara untuk mendapatkan umask menggunakan gdb , seperti yang telah dijelaskan di sini sebelumnya:
$ gdb --pid=4321
(gdb) call/o umask(0)
$1 = 077
(gdb) call umask($1)
$3 = 0
Perlu diingat bahwa gdb menghentikan proses dan utasnya, sehingga perubahan umask sementara dapat diabaikan.
Jika itu cocok untuk kasus Anda, Anda dapat menggunakan oneliner ini:
$ gdb --batch -ex 'call/o umask(0)' -ex 'call umask($1)' --pid=4321 2> /dev/null | awk '$1 == "$1" {print $3}'
077
Alternatif lainnya adalah, jika Anda dapat mengontrol proses yang berjalan, menulis umask ke file, output, atau yang serupa dan mendapatkannya dari sana.
Di Linux, dengan systemtap (sebagai root ), Anda bisa melakukannya
stap -e 'probe kernel.function("do_task_stat") {
printf("%o\n", $task->fs->umask);
exit()
}
probe begin {system("cat /proc/4321/stat>/dev/null")}'
Melakukan cat /proc/4321/stat akan memicu penyelidikan itu pada do_task_stat tempat kita dapat mengakses fs->umask bidang proses yang sesuai 'task_struct di kernel.