我不断收到非常奇怪的通知,这些通知在我能够阅读之前就消失了,它们很长,并且在随机时间出现,最近出现的通知是在内核升级期间,它有一个奇怪的图标,并且很长,但我没有设法阅读它,因为它在屏幕上出现的时间太短了。
所以我想知道是否有任何日志记录所有调用,notify-send
记录调用它的程序以及给定的所有参数?或者我是否可以设置这样的日志来找出这些通知的内容?我正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10。
答案1
甚至不需要完整的脚本......
而是以脚本的形式呈现:
#!/bin/bash
file=$1
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
xargs -I '{}' echo {} >> $file
运行它
- 将“脚本”复制到一个空文件中,另存为
keep_log.sh
使用日志文件作为命令的参数运行它
/bin/bash /path/to/keep_log.sh /path/to/log.txt
答案来自先前的答案(不是重复的),其中提到了该方法的应用作为示例。
我在那里给出的答案是基于这个答案非常好,其中解释了dbus-monitor
拦截通知发送内容的方法。通过编辑那里的示例,我们可以让它将notify-send
消息写入(日志)文件。
或者更优雅
...将把日期添加到日志文件,生成如下日志文件:
---di 10 mei 2016 17:37:20 CEST---
SOme kind of a message!
---di 10 mei 2016 17:37:20 CEST---
The last message was misspelled so here i9s another one
在这种情况下,脚本将是:
#!/bin/bash
logfile=$1
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
xargs -I '{}' \
printf "---$( date )---\n"{}"\n" >> $logfile