所以我写了一个小脚本,确保某个用户登录时插入笔记本电脑(如果不插入,则禁用)。该脚本使用通知发送通知来告诉他插入笔记本电脑。如果他插入笔记本电脑,脚本就会退出。当他插入笔记本电脑时,是否可以自动清除通知?我认为这可能需要以某种方式获取通知发送生成的进程 ID 并终止该 PID,但我不知道如何做到这一点。
这是当前的脚本:
#!/bin/bash
cat /sys/class/power_supply/BAT0/status
OUTPUT="$(cat /sys/class/power_supply/BAT0/status)"
echo "${OUTPUT}"
if [ "${OUTPUT}" = "Charging" ] || [ "${OUTPUT}" = "Unknown" ]; then
echo charging or full
elif [ "${OUTPUT}" = "Discharging" ]; then
notify-send -i /home/evamvid/Documents/Programming/OokiNoUse/power25.png "Hey there brother" "plug it in"
COUNTER=0
while [ "$COUNTER" -le 12 ]
do
cat /sys/class/power_supply/BAT0/status
OUTPUT="$(cat /sys/class/power_supply/BAT0/status)"
echo "${OUTPUT}"
if [ "${OUTPUT}" = "Charging" ] || [ "${OUTPUT}" = "Unknown" ]; then
exit
elif [ "${OUTPUT}" = "Discharging" ]; then
COUNTER=$(($COUNTER+1))
echo $COUNTER
sleep 1
fi
done
fi
答案1
或者,如果您不想让通知显示在通知中历史, 你可以试试:
notify-send --hint int:transient:1 "Title" "Body"
答案2
您正在寻找的进程是notify-osd
。您可以使用以下命令之一终止它:
pkill notify-osd
或者通过它的 pid:
kill $(ps -e | grep notify-osd | awk '{ print $1 }')
或者,甚至更好,按照@kos(谢谢!)的建议,使用pgrep
:
kill $(pgrep ^notify-osd$)
答案3
我正在使用 Mint MATE 17 列出的进程(示例)15107 ? Sl 0:00 /usr/lib/mate-notification-daemon/mate-notification-daemon
我尝试了 pkill as
$ pkill mate-notification-daemon
甚至
$ pkill mate-notification
And 都没有用。但是,如果我截断“通知”一词,它就起作用了:
$ pkill mate-notificati
在该词中添加“on”会使它不起作用。不知道为什么。我想这也适用于 Ubuntu MATE 版本。
答案4
对于 xfce 桌面(Lubuntu 18.04)通知发送:
pkill xfce4-notifyd