2

我正在尝试为一个名为 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 循环重新创建窗口不是我想要的,因为新窗口被替换在屏幕的中心。

非常感谢萨尔瓦多

4

3 回答 3

2

如果你还没有解决这个问题,你真的应该检查一下yad,这是一个正在积极改进的 zenity 分支。我今晚才安装它(在试图解决 zenity 中的一个错误之后),但如果它可以做你想做的事,我不会感到惊讶。例如,我注意到它有一个 --tail 选项。它在fedora 的repos 中,该页面有指向deb 包的链接。

于 2011-12-01T21:23:40.913 回答
2

晚了七年,但总比没有好。该yad支持论坛解决了某些人的问题:

Re: [yad] Re: yad 窗口可以自行更新吗?正是乔所说的,但是您必须使用:

Child(yad -tail --> *.log --> Yad Parent(yad --text-info )

显示和自动滚动。这是不可能的zenity。看我下面的视频:

https://www.youtube.com/watch?v=stPAWGXQyLY

于 2018-08-17T01:01:00.003 回答
1

与其使用 zenity,不如调出一个带有“watch”命令的 xterm,它可以在其中获取必要的信息。就像是:

xterm -g 80x40+100+100 -e "watch ssh user@server.foo showbf"
于 2011-05-20T18:56:23.373 回答