4.25.2011

How to get umask of running process in Solaris

Solaris: 稼働中プロセスの umask 値を取得する

mdbで実現可能。

# mdb –k
> ::pgrep プロセス名
> アドレス::print –t proc_t p_user.u_cmask

プロセスIDから「pid2proc」を使って検索してもよい。
> 0tプロセスID::pid2proc | ::print –t proc_t p_user.u_cmask

proc_t 全部を出力し、OSコマンドの「grep」で抽出することもできる。
> アドレス::print –t proc_t ! grep u_cmask

これらで出力されるのは、いずれも16進数の値。
「umask」などで表示される8進数の形式に直すと、下記の例だと「022」となる。
(0x12 <16進数> = 022 <8進数>)

・実行例
   1: # mdb -k
   2: Loading modules: [ unix krtld genunix specfs dtrace cpu.generic uppc pcplusmp zfs mpt ip hook neti sctp arp usba uhci fctl nca lofs cpc random crypto fcip logindmux ptm ufs sppp nfs ]
   3: > ::pgrep sshd
   4: S    PID   PPID   PGID    SID    UID      FLAGS     ADDR NAME
   5: R    512      1    512    512      0 0x42000000 dff67140 sshd
   6: > dff67140::print -t proc_t p_user.u_cmask
   7: mode_t p_user.u_cmask = 0x12
   8: > 0t512::pid2proc | ::print -t proc_t p_user.u_cmask
   9: mode_t p_user.u_cmask = 0x12
  10: > 0t512::pid2proc | ::print -t proc_t ! grep u_cmask
  11:         mode_t u_cmask = 0x12
  12: > $q
  13:  
  14: #

参考
http://cmynhier.blogspot.com/2006_08_01_archive.html

0 件のコメント:

コメントを投稿