Я нашел и слегка модифицировал следующий скрипт, который отслеживает уведомления notify-send
и сбрасывает их в файл.
#!/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*$' |\
ts |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
Если запустить вручную:
notifylog notifylog.txt
процесс продолжает работать какое-то время, но в конце концов останавливается.Если я добавлю его в crontab, например:
@reboot /path/to/file/notifylog /home/user/notifylog.txt
он выполняется один раз, а затем останавливается (или последний раз выполнялся очень мало).
Я даже пытался добавить его в автозагрузку такие приложения, как:
/path/to/file/notifylog /home/user/notifylog.txt
и тот же результат Следующее работает при выполнении вручную, но не из crontab или запускаемых приложений:
#!/bin/bash
logfile='/home/user/notifylog.txt'
rm -f $logfile
touch $logfile
while true; do /path/to/file/notifylog $logfile && break;done
Я добавил в systemd со следующими шагами:
sudo nano /lib/systemd/system/notifylog. сервис
затем добавил:
[Unit]
Description=notify-send log
[Service]
ExecStart=/path/to/file/notifylog
[Install]
WantedBy=multi-user.target
затем:
sudo systemctl daemon-reload
sudo systemctl enable notifylog.service
sudo systemctl start notifylog.service
sudo systemctl status notifylog.service
последний выдает:
● notifylog.service - notify-send log
Loaded: loaded (/lib/systemd/system/notifylog.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2021-10-20 19:01:49 -03; 3min 52s ago
Process: 364180 ExecStart=/path/to/file/notifylog (code=exited, status=0/SUCC>
Main PID: 364180 (code=exited, status=0/SUCCESS)
oct 20 19:01:49 mymachine systemd[1]: Started notify-send log.
oct 20 19:01:49 mymachine notifylog[364186]: Failed to open connection to session bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
oct 20 19:01:49 mymachine systemd[1]: notifylog.service: Succeeded.
Похоже, он не запущен.
Для этого немного изменил скрипт:
#!/bin/bash
logfile='/home/user/notifylog.txt'
rm -f $logfile
touch $logfile
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*$' |\
ts |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
РЕДАКТИРОВАТЬ : теперь я добавил его в systemd как пользователь, выполнив следующие шаги:
Во-первых, добавьте файл .service в /home/user/.config/systemd/user
.
Затем выполните:
sudo systemctl daemon-reload
systemctl --user enable notifylog.service
systemctl --user start notifylog.service
systemctl --user status notifylog.service
Это запустит службу правильно, но если я перезагружу свою машину,
systemctl --user status notifylog.service
выдаст мне:
● notifylog.service - notify-send log
Loaded: loaded (/home/user/.config/systemd/user/notifylog.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Что мне сейчас не хватает?