【发布时间】:2015-08-04 18:06:29
【问题描述】:
我想知道您是否可以帮助我解决这个问题。 我需要编写一个 shell 脚本来查看其他用户是否正在执行 x 命令的同一台计算机上执行 watch 命令。 你们能帮帮我吗? 非常感谢。
【问题讨论】:
我想知道您是否可以帮助我解决这个问题。 我需要编写一个 shell 脚本来查看其他用户是否正在执行 x 命令的同一台计算机上执行 watch 命令。 你们能帮帮我吗? 非常感谢。
【问题讨论】:
解决问题可以使用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
【讨论】:
watch -b MyOwnCommand。 ps -aux | grep "watch" | grep "MyOwnCommand" 之类的东西可能会解决您的问题!我建议你也把这个问题放在askubuntu.com。
ps -aux | grep "watch" 和 ps -aux | grep "MyOwnCommand"
while [ 1 ]; do
if [ -n "`ssh $hostname pgrep -f 'Pino_special_command'`" ]; then
ssh $hostname "ps -aux | grep watch" | grep -v "grep"
fi
done
【讨论】:
使用pgrep 命令
pgrep watch
【讨论】: