Am o situație foarte ciudată.
Am o unitate systemd
[Unitate]
Descriere=Lucrări de rezervă pentru instantanee nocturne pentru volumul [%i].
[Serviciu]
Tip=simplu
KillMode=proces
EnvironmentFile=/etc/systemd/schedule-backup_%i.conf
ExecStart=/usr/local/bin/backup.sh -s '$SOURCE' -b '$BACKUP' -t '$TITLE' -l 'backup_%i.log'
Când execut asta cu instanța de serviciu:
sudo systemctl start [email protected]
scriptul backup.sh nu primește deloc ultimul parametru. Ar trebui să primească „backup_projects.log”
Citesc parametrii cu
în timp ce getopts s:b:t:l: flag
do
cazul „${flag}” în
s) source_path_root="${OPTARG}";;
b) backup_path_root="${OPTARG}";;
t) email_title="${OPTARG}";;
l) log_name="${OPTARG}";;
esac
Terminat
când verific jurnalele de service, se pare că scriptul este apelat cu parametrii corespunzători:
systemctl -l status [email protected] -n50
â [email protected] - Sarcina de backup de instantanee nocturnă pentru volumul [proiecte]
Încărcat: încărcat (/etc/systemd/system/[email protected]; static)
Activ: inactiv (mort) din Mar 2021-12-14 12:47:01 EET; acum 16 minute
TriggeredBy: â schedule-backup_projects.timer
Proces: 8161 ExecStart=/usr/local/bin/backup.sh -s $SOURCE -b $BACKUP -t $TITLE -l backup_projects.log (code=exited, status=0/SUCCESS)
PID principal: 8161 (cod=ieșit, stare=0/SUCCESS)
CPU: 3.122s
14 dec. 12:46:56 fallen-robot systemd[1]: A început lucrarea de backup pentru instantanee nocturne pentru volumul [proiectelor].
14 decembrie 12:46:56 fallen-robot backup.sh[8161]: /usr/local/bin/backup.sh: linia 37: /var/log/: Este un director
14 decembrie 12:46:56 fallen-robot backup.sh[8161]: fișierul jurnal setat la /var/log/
Când execut același script din consolă, parametrul este acceptat bine. ce fac greșit?
EDIT: Se pare că a funcționat odată ce am pus parametrul -l la început și nu la sfârșit. Ar putea fi o problemă cu getopts. Voi accepta un răspuns de la oricine poate explica asta