Am găsit și am modificat ușor următorul script, care monitorizează notifica-trimite
notificări și aruncați-le într-un fișier.
#!/bin/bash
jurnal=$1
dbus-monitor "interface='org.freedesktop.Notificări'" |\
grep --line-buffered "șir" |\
grep --line-buffered -e method -e ":" -e '""' -e urgent -e notify -v |\
grep --line-buffered '.*(?=șir)|(?<=șir).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
ts |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
Dacă îl rulez manual:
notifylog notifylog.txt
procesul continuă să funcționeze o vreme, dar în cele din urmă se oprește. Dacă îl adaug la crontab cum ar fi:
@reboot /path/to/file/notifylog /home/user/notifylog.txt
se execută o dată și apoi se oprește (sau rulează foarte puțin).
Am încercat chiar să-l adaug la aplicațiile de pornire precum:
/path/to/file/notifylog /home/user/notifylog.txt
si acelasi rezultat. Următoarele funcționează atunci când sunt executate manual, dar nu din aplicații crontab sau de pornire:
#!/bin/bash
logfile='/home/user/notifylog.txt'
rm -f $logfile
atingeți $logfile
în timp ce adevărat; face /path/to/file/notifylog $logfile && break;terminat
Am adăugat la systemd cu următorii pași:
sudo nano /lib/systemd/system/notifylog.service
apoi am adaugat:
[Unitate]
Descriere = jurnal de notificare-trimitere
[Serviciu]
ExecStart=/cale/la/fișier/notifylog
[Instalare]
WantedBy=multi-user.target
atunci:
sudo systemctl daemon-reload
sudo systemctl enable notifylog.service
sudo systemctl start notifylog.service
sudo systemctl status notifylog.service
ultimul imi da:
â notifylog.service - jurnal de notificare-trimitere
Încărcat: încărcat (/lib/systemd/system/notifylog.service; activat; prestabilit furnizor: activat)
Activ: inactiv (mort) din miercuri 2021-10-20 19:01:49 -03; acum 3 min 52 s
Proces: 364180 ExecStart=/path/to/file/notifylog (code=exited, status=0/SUCC>
PID principal: 364180 (cod=ieșit, stare=0/SUCCESS)
20 oct 19:01:49 mymachine systemd[1]: A început jurnalul de notificare-trimitere.
20 oct 19:01:49 mymachine notifylog[364186]: Eșuat la deschiderea conexiunii la magistrala de sesiune: Imposibil de lansare automată a unui dbus-daemon fără $DISPLAY pentru X11
20 oct 19:01:49 mymachine systemd[1]: notifylog.service: Reușit.
Se pare că nu funcționează.
Pentru asta am modificat putin scriptul:
#!/bin/bash
logfile='/home/user/notifylog.txt'
rm -f $logfile
atingeți $logfile
dbus-monitor "interface='org.freedesktop.Notificări'" |\
grep --line-buffered "șir" |\
grep --line-buffered -e method -e ":" -e '""' -e urgent -e notify -v |\
grep --line-buffered '.*(?=șir)|(?<=șir).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
ts |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
EDIT: acum l-am adăugat la systemd ca utilizator cu următorii pași
Mai întâi, adăugați fișierul .service la /home/user/.config/systemd/user
.
Apoi executați:
sudo systemctl daemon-reload
systemctl --user enable notifylog.service
systemctl --user start notifylog.service
systemctl --starea utilizatorului notifylog.service
Acest lucru pornește serviciul corect, dar dacă îmi repornesc aparatul,
systemctl --starea utilizatorului notifylog.service
imi da:
â notifylog.service - jurnal de notificare-trimitere
Încărcat: încărcat (/home/user/.config/systemd/user/notifylog.service; activat; prestabilit furnizor: activat)
Activ: inactiv (mort)
Ce îmi lipsește acum?