Jawaban:
Dimulai dengan kernel Linux 4.7 ( komit ), umask tersedia di /proc/<pid>/status
.
$ grep '^Umask:' "/proc/$$/status"
Umask: 0022
Catatan: jawaban ini berlaku untuk kernel Linux 4.6 dan sebelumnya. Lihat @ egmont jawaban untuk versi kernel yang lebih baru.
Umask tidak terekspos dalam proksi. Ada upaya untuk menambahkannya tanpa banyak keberhasilan.
Ada cara untuk menggunakan umask 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 sementara umask 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 lain adalah, jika Anda dapat mengontrol proses yang sedang berjalan, untuk menulis umask ke file, output atau yang serupa dan mendapatkannya dari sana.
Di Linux, dengan systemtap
(as 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 suatu cat /proc/4321/stat
akan memicu penyelidikan itu di do_task_stat
mana kita dapat mengakses fs->umask
bidang proses yang sesuai ' task_struct
di kernel.