我正在尝试编写一个shell脚本,允许我登录到远程计算机以查看哪些用户正在运行vtwm进程超过14天。这是我迄今写的。在Shell脚本中的grep
有两个问题
有可能是这个活动的进程不止一个用户。我如何将它们全部保存在一个变量中?
如何确定哪一个已登录超过14天?
下面的代码是在假设只有一个用户具有活动vtwm进程的情况下编写的。但它不起作用,因为grep命令不能识别变量$ u。 所以我永远不会得到用户登录的日期。我不能让mth1和day1工作,因为与grep的问题。
u=$(ssh host "w | grep vtwm | cut -d' ' -f1")
echo "USER:"$u
if [ -n "$u" ] then
mth1=$(who | grep -i $u | cut -d' ' -f10 | cut -d'-' -f2)
mth2=$(date +"%m")
day1=$(who | grep -i $u | cut -d' ' -f10 | cut -d"-" -f2)
day2=$(date +"%d")
if [ $mth1==$mth2 ] then
#do something
elif[ $mth1!=$mth2 ] then
#do something
fi
fi
这是令人困惑的代码。变量'$ u'由ssh'ing派生到另一台机器,但是'$ mth1'和'$ day1'是基于对'who'的本地调用? – danfuzz 2013-04-03 23:25:08
用'set -vx'打开shell解析功能。你会更容易看到你的代码开始失败的地方和原因。对不起,说,也是太多的代码,你说的目标是什么。看看使用'awk'作为一个过滤器来减少对'who'的调用数量为1X。祝你好运。 – shellter 2013-04-04 01:26:36