【问题标题】:how to see which users are executing a command (Shell Scripting)如何查看哪些用户正在执行命令(Shell 脚本)
【发布时间】:2015-08-04 18:06:29
【问题描述】:

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

【问题讨论】:

    标签: bash shell scripting sh


    【解决方案1】:

    解决问题可以使用ps -aux | grep <prgname>作为root用户。

    例如: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
    

    【讨论】:

    • 嘿,塞尔吉奥,我注意到你是意大利人(和我一样):D。但是我不认为这是我的问题的解决方案。你在这里写的代码只显示了谁在执行 watch 命令,对吧?但我必须知道那些在执行 MyOwnCommand 的同一台计算机上执行 watch 命令的用户。我不确定我是否解释得很好。你能帮助我吗?谢谢
    • @Pino。是的,我是意大利人:) !阅读您所写的内容,我了解您想知道谁是使用手表执行您的程序的用户:IE:watch -b MyOwnCommandps -aux | grep "watch" | grep "MyOwnCommand" 之类的东西可能会解决您的问题!我建议你也把这个问题放在askubuntu.com
    • @Pino。 ...在其他地方,如果您需要知道 watch 和 MyOwnCommand 是否同时独立执行,您可以使用两个 ps:ps -aux | grep "watch"ps -aux | grep "MyOwnCommand"
    • 它不起作用 D:我想我解释得不好。我必须发现是否有用户在同一台​​机器上和另一个正在运行的命令同时执行 watch 命令...(我在 fb 上的其他消息中向您发送文本)
    • “相同”的机器很明显就是你运行脚本的机器……我想!
    【解决方案2】:
    while [ 1 ]; do
        if [ -n "`ssh $hostname pgrep -f 'Pino_special_command'`" ]; then
            ssh $hostname "ps -aux | grep watch" | grep -v "grep"
        fi
    done
    

    【讨论】:

      【解决方案3】:

      使用pgrep 命令

      pgrep watch
      

      【讨论】:

        猜你喜欢
        • 2016-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-04
        • 2023-03-17
        • 1970-01-01
        • 2013-09-22
        • 2012-12-22
        相关资源
        最近更新 更多