У меня очень странная ситуация.
у меня системный юнит
[Ед. изм]
Description=Ночное задание резервного копирования снимков для тома [%i]
[Оказание услуг]
Тип=простой
KillMode=процесс
EnvironmentFile=/etc/systemd/schedule-backup_%i.conf
ExecStart=/usr/local/bin/backup.sh -s '$SOURCE' -b '$BACKUP' -t '$TITLE' -l 'backup_%i.log'
Когда я выполняю это с экземпляром службы:
sudo systemctl запустить расписание[email protected]
скрипт backup.sh вообще не получает последний параметр. Должен получиться "backup_projects.log"
Я читаю параметры с помощью
в то время как getopts s:b:t:l: флаг
делать
case "${flag}" в
s) source_path_root="${OPTARG}";;
б) backup_path_root="${OPTARG}";;
т) email_title="${OPTARG}";;
м) имя_журнала="${OPTARG}";;
эсак
сделано
когда я проверяю журналы службы, кажется, что скрипт вызывается с соответствующими параметрами:
systemctl -l статус [email protected] -n50
○ [email protected] — ночное задание резервного копирования снимков для тома [проекты]
Загружено: загружено (/etc/systemd/system/[email protected]; статично)
Активен: неактивен (мертв) со вторника 14 декабря 2021 г., 12:47:01 EET; 16 минут назад
TriggeredBy: расписание-backup_projects.timer
Процесс: 8161 ExecStart=/usr/local/bin/backup.sh -s $SOURCE -b $BACKUP -t $TITLE -l backup_projects.log (code=exited, status=0/SUCCESS)
Основной PID: 8161 (код=выход, статус=0/УСПЕХ)
ЦП: 3,122 с
14 декабря, 12:46:56 падший робот systemd[1]: запущено задание ночного резервного копирования моментальных снимков для тома [проекты].
14 декабря 12:46:56 падший робот backup.sh[8161]: /usr/local/bin/backup.sh: строка 37: /var/log/: это каталог
14 декабря, 12:46:56 падший робот backup.sh[8161]: файл журнала установлен в /var/log/
Когда я запускаю тот же скрипт из консоли, параметр принимается нормально. Что я делаю не так?
РЕДАКТИРОВАТЬ: Похоже, это сработало, когда я поставил параметр -l в начале, а не в конце. Может быть проблема с getopts. Я приму ответ от любого, кто может это объяснить