У меня очень странная ситуация.
У меня есть модуль systemd
[Unit]
Description=Nightly snapshot backup job for [%i] volume
[Service]
Type=simple
KillMode=process
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 start schedule-backup@projects.service
скрипт backup.sh вообще не получает последний параметр. Должен получиться "backup_projects.log"
Читаю параметры с
while getopts s:b:t:l: flag
do
case "${flag}" in
s) source_path_root="${OPTARG}";;
b) backup_path_root="${OPTARG}";;
t) email_title="${OPTARG}";;
l) log_name="${OPTARG}";;
esac
done
когда проверяю сервисные логи, кажется скрипт вызывается с соответствующими параметрами:
systemctl -l status schedule-backup@projects.service -n50
○ schedule-backup@projects.service - Nightly snapshot backup job for [projects] volume
Loaded: loaded (/etc/systemd/system/schedule-backup@.service; static)
Active: inactive (dead) since Tue 2021-12-14 12:47:01 EET; 16min ago
TriggeredBy: ● schedule-backup_projects.timer
Process: 8161 ExecStart=/usr/local/bin/backup.sh -s $SOURCE -b $BACKUP -t $TITLE -l backup_projects.log (code=exited, status=0/SUCCESS)
Main PID: 8161 (code=exited, status=0/SUCCESS)
CPU: 3.122s
Dec 14 12:46:56 fallen-robot systemd[1]: Started Nightly snapshot backup job for [projects] volume.
Dec 14 12:46:56 fallen-robot backup.sh[8161]: /usr/local/bin/backup.sh: line 37: /var/log/: Is a directory
Dec 14 12:46:56 fallen-robot backup.sh[8161]: Log file set to /var/log/
Когда запускаю тот же скрипт из консоли параметр принимается нормально. Что я делаю неправильно?
РЕДАКТИРОВАТЬ: Похоже, это сработало, когда я поставил параметр -l в начале, а не в конце. Может быть проблема с getopts. Я приму ответ от любого, кто может объяснить это