Jeśli nie masz słabego serca za pomocą gdb, istnieje niezbyt przyjazny dla użytkownika sposób na zdobycie tych informacji tutaj: stackoverflow.com/questions/165212/...
MelBurslan
Odpowiedzi:
21
Począwszy od jądra Linuksa 4.7 ( zatwierdzenie ), umask jest dostępny w /proc/<pid>/status.
Tak, a RHEL7.4 to 3.10.0, więc nie rozumiem komentarza dotyczącego 4.7.
hagello
Racja, niektóre starsze jądra nie dostarczają informacji o umask, na przykład 2.6.18. Jednak funkcja jest już dostępna w 3.10.0. Dlatego nie powinieneś mówić, że to rozwiązanie nie działa przed jądrem 4.7.
hagello
Stéphane był na tyle miły, że mogłem edytować mój post, aby zamieścić link do zatwierdzenia, który wyraźnie mówi, że kiedy został dodany, jest znacznie nowszy niż 3.10. Może pojawił się znacznie wcześniej w łatanym jądrze RHEL, ale jeszcze nie w jądrze głównym, nie wiem.
egmont
15
Uwaga: ta odpowiedź dotyczy jądra Linuksa 4.6 i wcześniejszych. Zobacz odpowiedź @ egmont na nowsze wersje jądra.
Umask nie jest ujawniany w procfs. Była to próba , aby dodać go bez większego sukcesu.
Istnieje sposób na użycie umask gdb, jak wyjaśniono wcześniej :
Właśnie dlatego ta odpowiedź pojawia się również podczas przeglądania tych terminów, wyjaśnia również, jak zmodyfikować umaskę uruchomionego procesu (ponieważ uzyskanie go wymaga tymczasowej zmiany). Początkowo odrzuciłem to podczas wyszukiwania.
Hugues M.
4
W systemie Linux z systemtap(as root) możesz to zrobić
Odpowiedzi:
Począwszy od jądra Linuksa 4.7 ( zatwierdzenie ), umask jest dostępny w
/proc/<pid>/status
.źródło
Uwaga: ta odpowiedź dotyczy jądra Linuksa 4.6 i wcześniejszych. Zobacz odpowiedź @ egmont na nowsze wersje jądra.
Umask nie jest ujawniany w procfs. Była to próba , aby dodać go bez większego sukcesu.
Istnieje sposób na użycie umask
gdb
, jak wyjaśniono wcześniej :Należy pamiętać, że gdb zatrzymuje proces i jego wątki, więc tymczasowa zmiana umask jest znikoma.
Jeśli jest to dobre dla twojego przypadku, możesz użyć tego oneliner:
Inną alternatywą jest, jeśli możesz kontrolować działający proces, zapisać umask do pliku, wyjścia lub czegoś podobnego i pobrać go stamtąd.
źródło
W systemie Linux z
systemtap
(asroot
) możesz to zrobićWykonanie
cat /proc/4321/stat
wywołałoby sondę, wdo_task_stat
której możemy uzyskać dostęp dofs->umask
pola odpowiedniego procesutask_struct
w jądrze.źródło