Eu procuraria usar o incrontab para monitorar as alterações no sistema de arquivos e combinar isso com o pequeno script você já tem.
Isso parece aproximadamente o seguinte.
Primeiro, salve o script que você deseja executar como um arquivo, por exemplo, como cups_monitor.sh
em /usr/local/bin
(não esqueça de torná-lo executável).
#!/bin/sh
VAR='tail -n 1 /var/log/cups/error_log | grep 'client-error-not-possible for Create-Job''
if [[ -n "$VAR" ]]; then
echo "$VAR" | DISPLAY=:0 notify-send -t 30000 -i
fi
Você pode querer verificar isso. Meus scripts nunca estão certos primeiro tente :). Observe também que é possível que este script não capture sua mensagem de erro se for seguido por outra mensagem: Eu vejo apenas a última linha do arquivo de log ( -n 1
); isso deve ser fácil de mudar.
Em seguida, edite seu incrontab
incrontab -e
adicionando a linha
/var/log/cups/error_log IN_CLOSE_WRITE /usr/local/bin/cups_monitor.sh
O IN_CLOSE_WRITE
é chamado de 'símbolo de evento' e indica que você deseja chamar seu script quando /var/log/cups/error_log
foi fechado depois de ter sido aberto para gravação; você pode encontrar outros eventos na página man do incrontab.
Tenha em mente que não testei isso. Você pode ver se o arquivo incrontab foi alterado com sucesso e se ele chama seu script ou não, procurando no syslog ( tail /var/log/syslog
).
(Minha primeira resposta no Stack Exchange já! Yippee!)