我正在尝试为一个名为showbf的程序制作一个小监视器,该程序每隔一定时间打印一次更新。
我最好的尝试如下
ssh user@server.foo "exit"
if [ $? -ne 0 ]
then
ssh-add < /dev/null
fi
while true
do
resources=$(ssh user@server.foo "showbf")
if (echo "$resources" | grep -q "[0-9] procs")
then
echo $(echo "$resources" | awk '/[0-9] procs/ {print $1,"for",$5}')
else
echo "No procs available."
fi
if [[ $? == 0 ]] || [[ $? == 1 ]]
then
exit 0
fi
sleep 1
done | zenity --text-info --height=200 --width=300
--title "Resources available for immediate use (showbf)"
我真的不喜欢它,因为它将结果附加到预览中。它变得非常混乱。我想使用类似zenity --list的东西(结果是2列,可用的proc数和walltime)。但是,一旦zenity读取数据,它就不会更新其内容。任何想法??
使用 while 循环重新创建窗口不是我想要的,因为新窗口在屏幕中央被替换。
非常感谢塞尔瓦托
如果你还没有解决这个问题,你真的应该看看yad,一个正在积极改进的禅宗分支。我今晚才刚刚安装了它(在试图解决 zenity 中的错误之后),但如果它可以做你想要的,我不会感到惊讶。例如,我注意到它有一个 --tail 选项。它位于 fedora 的存储库中,该页面包含指向 deb 包的链接。
迟到了七年,但总比没有好。这个yad
支持论坛解决了某些人的问题:
回复:[yad] 回复:yad 窗口可以自行更新吗?正是乔所说的 但是,您必须使用:
Child(yad -tail --> *.log --> Yad Parent(yad --text-info )
显示和自动滚动。这在
zenity
.看 我下面的视频:
https://www.youtube.com/watch?v=stPAWGXQyLY
与其使用zenity,为什么不调出一个带有"watch"命令的xterm,它可以在其中获取必要的信息。 像这样:
xterm -g 80x40+100+100 -e "watch ssh user@server.foo showbf"