Tôi có một tình huống rất kỳ lạ.
Tôi có một đơn vị systemd
[Đơn vị]
Mô tả=Công việc sao lưu ảnh chụp nhanh hàng đêm cho tập [%i]
[Dịch vụ]
Loại = đơn giản
KillMode=tiến trình
Môi trườngFile=/etc/systemd/schedule-backup_%i.conf
ExecStart=/usr/local/bin/backup.sh -s '$SOURCE' -b '$BACKUP' -t '$TITLE' -l 'backup_%i.log'
Khi tôi thực hiện điều đó với phiên bản dịch vụ:
Sudo systemctl start [email protected]
tập lệnh backup.sh hoàn toàn không nhận được tham số cuối cùng. Nó sẽ nhận được "backup_projects.log"
Tôi đang đọc các thông số với
trong khi getopts s:b:t:l: cờ
làm
trường hợp "${flag}" trong
s) source_path_root="${OPTARG}";;
b) backup_path_root="${OPTARG}";;
t) email_title="${OPTARG}";;
l) log_name="${OPTARG}";;
thoát hiểm
xong
khi tôi kiểm tra nhật ký dịch vụ, có vẻ như tập lệnh được gọi với các tham số thích hợp:
systemctl -l status [email protected] -n50
â [email protected] - Công việc sao lưu ảnh chụp nhanh hàng đêm cho khối lượng [dự án]
Đã tải: đã tải (/etc/systemd/system/[email protected]; tĩnh)
Đang hoạt động: không hoạt động (đã chết) kể từ Thứ Ba 2021-12-14 12:47:01 EET; 16 phút trước
TriggeredBy: â schedule-backup_projects.timer
Quá trình: 8161 ExecStart=/usr/local/bin/backup.sh -s $SOURCE -b $BACKUP -t $TITLE -l backup_projects.log (code=exited, status=0/SUCCESS)
PID chính: 8161 (mã=đã thoát, trạng thái=0/THÀNH CÔNG)
CPU: 3.122 giây
Ngày 14 tháng 12 12:46:56 Falling-robot systemd[1]: Đã bắt đầu công việc sao lưu ảnh chụp nhanh hàng đêm cho tập [dự án].
Ngày 14 tháng 12 12:46:56 Falled-robot backup.sh[8161]: /usr/local/bin/backup.sh: dòng 37: /var/log/: Là một thư mục
Ngày 14 tháng 12 12:46:56 Falled-robot backup.sh[8161]: Tệp nhật ký được đặt thành /var/log/
Khi tôi thực thi cùng một tập lệnh từ bảng điều khiển, tham số được chấp nhận tốt. Tôi đang làm gì sai?
CHỈNH SỬA: Có vẻ như nó đã hoạt động khi tôi đặt tham số -l ở đầu thay vì ở cuối. Có thể là một số vấn đề với getopts. Tôi sẽ chấp nhận câu trả lời từ bất cứ ai có thể giải thích điều này