2

任何人都可以帮助找到一种方法来创建一个用户和用户不同的进程吗?目前,我使用了这条线

sudo su david -c ./test.pl

然后当我输入以下行以获取用户和用户时

ps -eo pid,user,ruser,fname,pcpu,nice,stime,time | grep test.pl
10322   david   david test.pl 12.4 20 13:37:00 01:38 

用户和用户仍然是相同的。我需要创建一个类似以下示例的流程:

ps -o user,ruser,comm -p 59515
    USER    RUSER COMMAND
    root csrethab xscreensaver 

有什么想法吗?谢谢!

4

2 回答 2

2

您可以通过设置特殊的$< 变量在 perl 脚本中执行此操作。

这是一个例子:

system("ps -eo pid,user,ruser,fname,pcpu,nice,stime,time | grep $$");
$< = 1000;
print "Changed\n";
system("ps -eo pid,user,ruser,fname,pcpu,nice,stime,time | grep $$");

这将打印以下内容:

22460 root     root     perl      0.0   0 20:46 00:00:00
Changed
22460 root     jordan   perl      0.0   0 20:46 00:00:00

在代码之外执行此操作的唯一方法是通过 setuid。setuid 位在 linux 的脚本中被忽略,因此 perl 无法做到这一点。

于 2013-03-07T01:48:27.093 回答
0

还有 sys::process 模块,它为你封装了这个:

https://metacpan.org/pod/sys::process::user#SYNOPSIS

于 2013-03-07T03:36:52.963 回答