仅当进程来自当前用户时,如何查找进程的命令行

时间:2013-09-26 08:00:22

标签: perl bash process pid ps

我有以下情况: perl脚本读取应用程序写入pid的文件,并尝试将其删除。 但问题是我不想杀死另一个进程,所以我检查当前进程与记录的PID是否具有相同的命令行。如果是这样,应用程序可能会被杀死。

以下布鲁斯脚本找出了cmdline:

$PIDCMDLINE = `ps -p $PID -o cmd`;

问题是,如果另一个用户的另一个实例启动,可能在同一个sid上,它将被杀死,因为它将返回一个有效的命令行,我不希望这种行为。

如何限制ps -p仅搜索当前用户进程(不,简单ps不计算,因为-p nullify ps的默认效果)

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用以下命令检查命令和用户的特定PID:

ps -p <PID> -o user,cmd --columns 1000 | grep `whoami`

根据评论添加'grep'。

答案 1 :(得分:0)

可能有点尴尬,但是这个怎么样:

$PIDCMDLINE = ps -p $PID -o user,command | grep `whoami` | awk '{ print $2 }'