2010-08-20 59 views
0

我們有一個約定,開發人員可以使用他們自己的用戶名訪問服務器,然後sudo su - django其中django是我們運行的應用程序的用戶。如何在su後找到進程的真正所有者

我需要找出哪個開發人員運行腳本爲django。與ps faux

root  26438 0.0 0.0 90152 3320 ?  Ss 10:38 0:00 \_ sshd: fred [priv] 
fred  26444 0.0 0.0 90152 1852 ?  S 10:38 0:00 | \_ sshd:   [email protected]/0 
fred  26445 0.0 0.0 66052 1560 pts/0 Ss 10:38 0:00 |  \_ -bash 
root  27923 0.0 0.0 101052 1336 pts/0 S 10:46 0:00 |   \_ su - django 
django 27924 0.0 0.0 66188 1752 pts/0 S 10:46 0:00 |    \_ - bash 
django 31760 0.0 0.5 227028 42320 pts/0 S+ 11:10 0:01 |     \_  python target_script.py 

我可以很容易地看到什麼是弗雷德是最多。然而,我需要編寫一個腳本來處理這個信息,我可以找到沒有辦法在一行中提取「fred」和「target_script.py」,ps ... euser,ruser,suser,fuser all say 「Django的。」我需要摸索這ps faux輸出來獲取我需要的信息嗎?

回答

1

您使用過su - django。 「-」將使新shell成爲登錄shell(請參閱manpage of su),它允許子進程忘記其父項。這就是爲什麼euser,ruser,suser,fuser都會說「django」。

所以是的,你可能需要摸索父進程ID,或通過「PS人造」。

1

我在找到相同的基本信息時發現了這個舊帖子。我發現的最簡單的方法是使用/ proc/[pid]下的「loginuid」文件。例如:

cat /proc/${processid}/loginuid 

對不起,復活這樣的舊帖子,但也許有人會覺得它有用。

相關問題