我有以下情况:
perl脚本读取应用程序写入pid
的文件,并尝试将其删除。
但问题是我不想杀死另一个进程,所以我检查当前进程与记录的PID是否具有相同的命令行。如果是这样,应用程序可能会被杀死。
以下布鲁斯脚本找出了cmdline:
$PIDCMDLINE = `ps -p $PID -o cmd`;
问题是,如果另一个用户的另一个实例启动,可能在同一个sid上,它将被杀死,因为它将返回一个有效的命令行,我不希望这种行为。
如何限制ps -p仅搜索当前用户进程(不,简单ps
不计算,因为-p nullify
ps的默认效果)
谢谢!
答案 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 }'