Если сценарий использует относительный путь для поиска файлов и/или каталогов, то его текущий рабочий каталог должен быть правильным, чтобы он мог их найти.
Вы можете изменить текущий рабочий каталог с помощью команды cd
. Если первая команда в файле — это команда cd
, которая изменяет каталог на абсолютный путь, из которого ожидается выполнение сценария, то пути, указанные далее в сценарии, будут правильными.
Например:
#!/bin/bash
cd /some/path/where/we/expect/to/be || exit 1
# (rest of script here)
Это привело бы к изменению каталога (или преждевременному выходу из сценария, если это было невозможно )до выполнения остальной части сценария.
Дополнительным преимуществом этого является то, что вы можете разместить скрипт в любом удобном для вас месте.
Другой способ решить эту проблему — изменить все пути в сценарии на абсолютные пути.
Я нашел ответ, попробовал и протестировал его, и, похоже, он сработал.
По сути, внутри /var/spool/postfix
есть несколько каталогов, в которых хранятся сообщения. Удалите все файлы в них, и это, по сути, очистит все очереди. С корневой файловой системой, смонтированной в_root
(задолго до того, как она будет загружена в raspberry pi ), я использую для этого код
_root/var/spool/postfix/{defer,bounce,maildrop,incoming,active,deferred,hold,flush} -type f -exec rm {} \;