Você faria algo como:
#!/bin/bash
regex="plexdrive.*Could not update\/save object"
journalctl -f -n 0 |
while read line
do
if [[ "$line" =~ $regexp ]]; then
systemctl restart PLEX_SERVICE
fi
done
journalctl
fornece a saída do diário do sistema. -f
usa o modo de acompanhamento, para que o comando fique lá e forneça novas entradas de diário. -n 0
diz para não dar a você nenhum dos lançamentos anteriores.
A saída é canalizada para while read line
. Isso lê infinitamente a partir do fluxo de saída de journalctl
, colocando cada linha na variável de shell line
.
=~
é o operador expressão regular do Bash. Aqui, apenas verifica se a linha contém plexdrive
e em algum lugar depois disso Could not update/save object
. Se a expressão regular corresponder, então a linha systemctl restart PLEX_SERVICE