Skip to Content

动态监视log变动的脚本

labrador 的头像
这个脚本的功能是监视log文件(或者任意文本文件)的变化,并在terminal窗口标题栏上显示log文件的行数。其中调用了less +F filename功能,它和tail -f filename类似,不过可以按Ctrl-C后翻看前面的内容,按Shift-F继续监视文件末尾。这个脚本一个比较fancy的功能是当log文件有更新时,任务栏上的terminal窗口会像pidgin来消息时那样闪动。

这里还有一个用这个脚本做的.desktop文件,解开后双击就可以用了。需要注意的是,内嵌在.desktop文件中的脚本中的%要用%%来替代。

另外,从这个程序中也不难看出,在X11下监视、窃取键盘操作是很容易实现的。这也就是为什么在X11下的虚拟终端里运行sudo是有安全隐患的,而应该用gksudo一类程序代替。

以下是这个程序:
#!/bin/sh 

FILE="/var/log/syslog" 

PROMPT_COMMAND= 
ID="$RANDOM no way there is a window with the same name $RANDOM" 
echo -ne "\033]0;$ID\007" 
ID=`xwininfo -name "$ID" | grep "Window id: 0x[[:xdigit:]]*" -o | cut -d\  -f3` 
xev -id $ID | awk "/FocusIn|FocusOut/ { system(\"xprop -id $ID -remove _NET_WM_STATE\") }" & 
while true; do 
    if [ "$TIME" != "`stat -c %Y "$FILE"`" ]; then 
        TIME=`stat -c %Y "$FILE"` 
        xprop -id $ID -f _NET_WM_STATE 32a -set _NET_WM_STATE _NET_WM_STATE_DEMANDS_ATTENTION 
        echo -ne "\033]0;`wc -l "$FILE" | cut -d\  -f1` `basename "$FILE"`\007" 
    fi 
    sleep 2 
done & 
less +F "$FILE" 
kill %1 
kill %2

发表新评论

  • 你可以在文本中使用BBCode标记语言。 URL会自动被转为链接。

更多关於格式化选项的信息

CAPTCHA
请验证您是否是机器人。
Image CAPTCHA
Enter the characters shown in the image.