Я нашел и немного модифицировал следующий скрипт, который следит за уведомление-отправить
уведомления и сбрасывать их в файл.
#!/бин/баш
лог-файл=$1
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "строка" |\
grep --line-buffered -e method -e ":" -e '""' -e срочность -e уведомление -v |\
grep --line-buffered '.*(?=строка)|(?<=строка).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
тс |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
Если я запускаю его вручную:
notifylog.txt
процесс продолжает работать некоторое время, но в конце концов останавливается. Если я добавлю его в crontab, например:
@reboot /путь/к/файлу/notifylog/home/user/notifylog.txt
он выполняется один раз, а затем останавливается (или в последний раз работал очень мало).
Я даже пытался добавить его в приложения для запуска, например:
/путь/к/файлу/notifylog/home/user/notifylog.txt
и тот же результат. Следующее работает при выполнении вручную, но не из crontab или запускаемых приложений:
#!/бин/баш
logfile='/home/user/notifylog.txt'
rm -f $файл журнала
коснитесь $logfile
пока верно; do /path/to/file/notifylog $logfile && break;done
Я добавил в systemd со следующими шагами:
sudo nano /lib/systemd/system/notifylog.service
затем я добавил:
[Ед. изм]
Описание=уведомить-отправить журнал
[Оказание услуг]
ExecStart=/путь/к/файлу/notifylog
[Установить]
WantedBy=многопользовательская.цель
тогда:
sudo systemctl демон-перезагрузка
sudo systemctl включить notifylog.service
sudo systemctl запустить notifylog.service
статус sudo systemctl notifylog.service
последний дает мне:
▪ notifylog.service — журнал отправки уведомлений
Загружено: загружено (/lib/systemd/system/notifylog.service; включено; предустановка поставщика: включена)
Активен: неактивен (мертв) с ср 20.10.2021 19:01:49 -03; 3 мин 52 с назад
Процесс: 364180 ExecStart=/path/to/file/notifylog (code=exited, status=0/SUCC>
Основной PID: 364180 (код=выход, статус=0/УСПЕХ)
20 октября 19:01:49 mymachine systemd[1]: Запущен журнал отправки уведомлений.
20 октября 19:01:49 mymachine notifylog [364186]: не удалось открыть соединение с сеансовой шиной: невозможно автоматически запустить демон dbus без $ DISPLAY для X11
20 октября 19:01:49 mymachine systemd[1]: notifylog.service: успешно.
Вроде не запускается.
Для этого я немного модифицировал скрипт:
#!/бин/баш
logfile='/home/user/notifylog.txt'
rm -f $файл журнала
коснитесь $logfile
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "строка" |\
grep --line-buffered -e method -e ":" -e '""' -e срочность -e уведомление -v |\
grep --line-buffered '.*(?=строка)|(?<=строка).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
тс |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
РЕДАКТИРОВАТЬ: теперь я добавил его в systemd как пользователь, выполнив следующие действия.
Сначала добавьте файл .service в /home/пользователь/.config/systemd/пользователь
.
Затем выполните:
sudo systemctl демон-перезагрузка
systemctl --user включить notifylog.service
systemctl --user запустить notifylog.service
systemctl --статус пользователя notifylog.service
Это запустит службу правильно, но если я перезагружу свою машину,
systemctl --статус пользователя notifylog.service
дает мне:
▪ notifylog.service — журнал отправки уведомлений
Загружено: загружено (/home/user/.config/systemd/user/notifylog.service; включено; предустановка поставщика: включена)
Активный: неактивный (мертвый)
Чего мне сейчас не хватает?