我们有一个约定,即开发人员使用自己的用户名进入服务器,然后sudo su - django
其中django是我们的应用程序运行的用户。
我需要找出哪个开发人员正在运行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: fred@pts/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
我可以很容易地看到弗雷德在做什么。但是我需要编写一个脚本来处理这个信息,我发现无法用 ps ... euser,ruser,在一行中拉出“fred”和“target_script.py”。 suser,fuser都说“django”。我是否需要通过此ps faux
输出来摸索以获取我需要的信息?
答案 0 :(得分:1)
您使用了su - django
。 “ - ”将使新shell成为登录shell(请参阅manpage of su),这会让子进程忘记其父uid。这就是为什么euser,ruser,suser,fuser都说“django”。
所以是的,你可能不得不在父进程id或“ps faux”中摸索。
答案 1 :(得分:1)
我在尝试查找相同的基本信息时发现了这个旧帖子。我发现最简单的方法是使用" loginuid"文件在/ proc / [pid]下。例如:
cat /proc/${processid}/loginuid
抱歉复活这样的老帖子,但也许有人会觉得它很有用。