Как использовать подстановочные знаки в systemd сервисах?

Я пытаюсь удалить все файлы в определенном каталоге с помощью systemd в перезагрузке.

Вот мой /lib/systemd/system/delete-at-boot.service файл (корень, доступ 644):

[Unit]
Description=Remove content of test folder at boot

[Service]
ExecStart=/bin/rm /home/user/test/*

[Install]
WantedBy=multi-user.target

Когда я работаю /bin/rm /home/user/test/* вручную удаление хорошо работает, но когда я запускаю процесс, я вижу, что мои файлы не удалены.

● delete-at-boot.service - Remove content of test folder at boot
   Loaded: loaded (/lib/systemd/system/delete-at-boot.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2019-08-02 18:21:09 UTC; 7s ago
  Process: 5460 ExecStart=/bin/rm /home/user/test/* (code=exited, status=1/FAILURE)
 Main PID: 5460 (code=exited, status=1/FAILURE)

Aug 02 18:21:09 tegra-ubuntu systemd[1]: Started Remove content of test folder at boot.
Aug 02 18:21:09 tegra-ubuntu rm[5460]: /bin/rm: cannot remove '/home/user/test/*': No such file or directory
Aug 02 18:21:09 tegra-ubuntu systemd[1]: delete-at-boot.service: Main process exited, code=exited, status=1/FAILURE
Aug 02 18:21:09 tegra-ubuntu systemd[1]: delete-at-boot.service: Unit entered failed state.
Aug 02 18:21:09 tegra-ubuntu systemd[1]: delete-at-boot.service: Failed with result 'exit-code'.

Я полагаю, что проблема связана с "*", Но я не уверен, что лучший способ состоит в том, чтобы заменить ее.

1
задан 4 August 2019 в 20:30

1 ответ

Подстановочные знаки, как предполагается, не используются как этот в a systemd сервис. измените Ваш ExecStart кому:

ExecStart=/bin/sh -c '/bin/rm /home/user/test/*'

Теперь это должно выполнить действие правильно.

2
ответ дан 7 December 2019 в 13:15

Другие вопросы по тегам:

Похожие вопросы: