怎么能告诉哪个用户启动了这个程序?

时间:2012-05-12 09:55:56

标签: c linux process

我知道ps命令可以看到这个,但是给定了pid,怎么知道哪个用户启动了该程序?我在/ proc / [pid] /中看到loginuid,但这似乎是真正的uid的补充代码,不确定。

2 个答案:

答案 0 :(得分:1)

status怎么样?

cnicutar@lemon:/proc/self$ cat status
Name:   bash
State:  S (sleeping)
#....
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000

有4个UID:真实,有效,保存集和文件系统。这些都在proc(5)中描述。

答案 1 :(得分:0)

假设您只想要用户并且您了解PID,则可以使用psawk,如下所示:

ps auxf | awk NR!=1 | awk '{print $1" "$2}' | grep {PID {1}}

我将分解命令,以便您更好地了解该过程。

您可能知道,| awk '{print $1}'的第一行显示标题,这就是我们使用ps从获取的输出中排除标题的原因。

由于我们只需要awk NR!=1PID,我们可以通过仅User选择前两个来删除其他列。

使用简单的awk '{print $1" "$2}',您可以找到所需的行,按流程ID grep进行过滤。

最后我们只选择第一列,即用户:grep 123