Вы бы сделали что-то вроде:
#!/bin/bash
regex="plexdrive.*Could not update\/save object"
journalctl -f -n 0 |
while read line
do
if [[ "$line" =~ $regex ]]; then
systemctl restart PLEX_SERVICE
fi
done
journalctl
дает вам вывод системного журнала. -f
использует режим отслеживания, так что команда находится там и дает вам новые записи в журнале. -n 0
говорит ему не давать вам ни одной из предыдущих записей в журнале.
Вывод передается на while read line
. Это бесконечно читает из выходного потока journalctl
, помещая каждую строку в переменную оболочки line
.
=~
— это оператор регулярного выражения Баша. Здесь просто проверяется, что в строке есть plexdrive
и где-то после этого Could not update/save object
. Если регулярное выражение, обозначенное как regex
, совпадает, то выполняется строкаsystemctl restart PLEX_SERVICE