Случается, что на сторадже заканчивается место до того как bacula соберётся удалять старые файлы. В результате вы получаете одно оповещение, что задача не была выполнена и второе от мониторинга, что закончилось место. Если задача одна-две, это не проблема. Удалили руками и всё в порядке. Но ситуация меняется когда задач много и тем более вы не среагировали за период более чем один цикл бэкапа. Очередь закупоривается и пока она не будет выполнена целиком новые задания не будут выполнены. Данный скрипт позволяет по очереди удалить все задания начиная с последнего по очереди, чтобы дойдя до первого не стартовало следующее за ним.
#!/bin/bash for ID in `echo 'status dir running' | bconsole | sed -n '/Running Jobs:/,/^$/p' | sed -n '/^=\+$/,/^=\+$/p' | grep -v '^=\+$' | awk '/is waiting/{print $1}' | sed -e '1!G;h;$!d'` ; do if [[ ! ${ID} =~ ^[0-9]+$ ]] ; then echo "JobID \"${ID}\" is not a number! Skipping." else echo -e "Do you want to kill waiting job ${ID}" read -p 'Type YES if you really want to delete job: ' input if [[ ! ${input} =~ ^[Yy]$ ]] ; then echo -e "Skip job ${ID}.\n" continue else echo "cancel jobid=${ID}" | bconsole fi fi done