有人可以帮忙找到一种方法来创建一个其用户和用户不同的流程吗? 目前,我使用了
行sudo su david -c ./test.pl
然后当我键入以下行以获取用户和ruser
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
用户和ruser仍然相同。 我需要创建一个类似以下示例的流程:
ps -o user,ruser,comm -p 59515
USER RUSER COMMAND
root csrethab xscreensaver
有什么想法? 谢谢!
答案 0 :(得分:2)
您可以通过设置特殊$< variable。
在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。在linux中的脚本中会忽略setuid位,因此perl不可能这样做。
答案 1 :(得分:0)
还有sys :: process模块,它为你封装了这个: