<pid> ile bir işlemin geçerli umask'i


Yanıtlar:


21

Linux çekirdeği 4.7 ( taahhüt ) ile başlayarak , umask mevcuttur /proc/<pid>/status.

$ grep '^Umask:' "/proc/$$/status"
Umask:  0022

1
Bu RHEL 7.4'e yardımcı oldu!
Anand Varkey Philips

Evet ve RHEL7.4 3.10.0'dır, bu yüzden 4.7 hakkındaki yorumu anlamıyorum.
hagello

Doğru, bazı eski çekirdekler umask hakkında bilgi sağlamaz, örneğin 2.6.18. Ancak, özellik 3.10.0'da zaten var. Bu nedenle, bu çözümün çekirdek 4.7'den önce çalışmadığını söylememelisiniz.
hagello

Stéphane, eklendiğinde açıkça yazan taahhütle bağlantı kurmak için yazımı düzenlemek için yeterince nazikti, 3.10'dan çok daha yeni. Belki RHEL'in yamalı çekirdeğinde çok daha erken ortaya çıktı, ama henüz ana hat çekirdeğinde değil, bilmiyorum.
egmont

15

Not: Bu cevap Linux çekirdeği 4.6 ve öncesi için geçerlidir. Çekirdeğin daha yeni sürümleri için @ egmont'un cevabına bakınız .

Umask procfs'ye maruz kalmaz. Çok başarılı olmadan ekleme denemesi yapıldı .

Burada daha öncegdb açıklandığı gibi, umask'ı kullanmanın bir yolu var :

$ gdb --pid=4321
(gdb) call/o umask(0)
$1 = 077
(gdb) call umask($1)
$3 = 0

Gdb'nin işlemi ve iş parçacıklarını durdurduğunu unutmayın, bu nedenle umask'ın geçici olarak değişmesi ihmal edilebilir.

Durumunuz için iyi ise, bu oneliner'ı kullanabilirsiniz:

$ gdb --batch -ex 'call/o umask(0)' -ex 'call umask($1)' --pid=4321 2> /dev/null | awk '$1 == "$1" {print $3}'
077

Başka bir seçenek, çalışan işlemi kontrol edebiliyorsanız, umask'ı bir dosyaya, çıktıya veya benzer bir şeye yazmak ve oradan almaktır.


1
Bu cevap, bu terimleri googling ederken de görünür, aynı zamanda çalışan işlemin umask'ının nasıl değiştirileceğini de açıklar (çünkü geçici olarak değiştirilmesini gerektirir). Başlangıçta bunu ararken reddetti.
Hugues

4

Linux'ta, systemtap(as root) ile şunları yapabilirsiniz:

stap -e 'probe kernel.function("do_task_stat") {
           printf("%o\n", $task->fs->umask);
           exit()
         }
         probe begin {system("cat /proc/4321/stat>/dev/null")}'

Bir işlem yapmak, çekirdeğin ilgili işlemin alanına erişebileceğimiz cat /proc/4321/statprobu tetikler .do_task_statfs->umasktask_struct

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.