Я не могу сохранить скрипт bash

Я нашел и слегка модифицировал следующий скрипт, который отслеживает уведомления 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)

Что мне сейчас не хватает?

0
задан 20 October 2021 в 13:28

0 ответов

Другие вопросы по тегам:

Похожие вопросы: