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

时间:2015-05-22 16:12:10

标签: bash shell scripting sh

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

3 个答案:

答案 0 :(得分:1)

要解决问题,可以以root用户身份使用ps -aux | grep <prgname>

E.G。: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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

使用pgrep命令

pgrep watch