Bash 如何查看哪些用户正在执行命令(Shell脚本)

Bash 如何查看哪些用户正在执行命令(Shell脚本),bash,shell,scripting,sh,Bash,Shell,Scripting,Sh,我想知道你是否能帮我解决这个问题。 我需要编写一个shell脚本,看看其他用户是否在执行x命令的同一台计算机上执行watch命令。 你们能帮帮我吗? 非常感谢。使用命令 要解决此问题,可以使用ps-aux | grep作为根用户 例如:ps-aux | grep firefox执行此命令(以root用户身份),它将返回以下输出: sergio 3252 24.1 6.7 1840936 540264 ? Sl 09:48 123:36 /usr/lib/firefox/fi

我想知道你是否能帮我解决这个问题。 我需要编写一个shell脚本,看看其他用户是否在执行x命令的同一台计算机上执行watch命令。 你们能帮帮我吗? 非常感谢。

使用命令


要解决此问题,可以使用
ps-aux | grep
作为根用户

例如:
ps-aux | grep firefox
执行此命令(以root用户身份),它将返回以下输出:

sergio    3252 24.1  6.7 1840936 540264 ?      Sl   09:48 123:36 /usr/lib/firefox/firefox
root     23059  0.0  0.0  15944   948 pts/7    S+   18:20   0:00 grep --color=auto firefox
最后一行是我执行的命令

使用ps解决问题的一种方法可能是使用如下脚本。我认为这是可能创造更好的解决方案,但这似乎在我的Ubuntu 14上运行良好

#!/bin/bash

i=0
search="watch"

tmp=`mktemp`
ps -aux | tr -s ' ' | grep "$search" > $tmp

while read fileline
do
user=`echo $fileline | cut -f1 -d\  `
prg=`echo $fileline | cut -f11 -d\  `
prg=`basename $prg`
if [ $prg == $search ]; then
    echo "$user - $prg"
    i=`expr $i + 1`
fi
done < $tmp

if [ $i == 0 ]; then
    echo User not found
fi

rm $tmp
#/bin/bash
i=0
search=“watch”
tmp=`mktemp`
ps-aux | tr-s'| grep“$search”>$tmp
读取文件行时
做
user=`echo$fileline | cut-f1-d`
prg=`echo$fileline | cut-f11-d`
prg=`basename$prg`
如果[$prg==$search];然后
回显“$user-$prg”
i=`expr$i+1`
fi
完成<$tmp
如果[$i==0];然后
未找到回显用户
fi
rm$tmp

嘿,塞尔吉奥,我注意到你是意大利人(和我一样):D。但是我认为这不是解决我问题的办法。你在这里写的代码只显示谁在执行watch命令,对吗?但是我必须知道那些在执行myown命令的同一台计算机上执行watch命令的用户。我不确定我是否解释得很好。你能帮助我吗?感谢you@Pino. 是的,我是意大利人:)!阅读您编写的内容,我知道您想知道谁是使用watch:IE:
watch-b myown命令执行您的程序的用户。类似于
ps-aux | grep“watch”| grep“MyOwnCommand”
的东西可能会解决您的问题!我建议你把这个问题也放在这里。@Pino。。。在其他地方,如果您需要知道watch和MyOwnCommand是否同时独立执行,您可以使用两个ps:
ps-aux | grep“watch”
ps-aux | grep“MyOwnCommand”
它不起作用D:我想我没有解释清楚。我必须发现是否有用户在同一台机器上执行watch命令,并且在另一个运行命令的同一时间执行watch命令。。。(我在fb上的其他消息中向您发送文本)很明显,“同一”机器就是您运行脚本的机器。。。我想!
#!/bin/bash

i=0
search="watch"

tmp=`mktemp`
ps -aux | tr -s ' ' | grep "$search" > $tmp

while read fileline
do
user=`echo $fileline | cut -f1 -d\  `
prg=`echo $fileline | cut -f11 -d\  `
prg=`basename $prg`
if [ $prg == $search ]; then
    echo "$user - $prg"
    i=`expr $i + 1`
fi
done < $tmp

if [ $i == 0 ]; then
    echo User not found
fi

rm $tmp
while [ 1 ]; do
    if [ -n "`ssh $hostname pgrep -f 'Pino_special_command'`" ]; then
        ssh $hostname "ps -aux | grep watch" | grep -v "grep"
    fi
done