Есть ли способ использовать подстановочные знаки, перенаправление или другой синтаксис оболочки с единицами systemd?
У меня есть файл systemd для запуска файла JAR. Но я хочу выполнить файл JAR как *.jar
, Есть ли способ сделать это?
[Unit]
Description=Test Background
[Service]
ExecStart=/usr/bin/java -jar /var/www/test.com/*.jar
Type=simple
WorkingDirectory=/var/www/test.com
[Install]
WantedBy=multi-user.target
Я пытался это, но не работает.
1 ответ
Решение
От man 5 systemd.service
(раздел "Командные линии"):
This syntax is inspired by shell syntax, but only the meta-characters and expansions
described in the following paragraphs are understood, and the expansion of variables is
different. Specifically, redirection using "<", "<<", ">", and ">>", pipes using "|",
running programs in the background using "&", and other elements of shell syntax are not
supported.
А также:
Note that shell command lines are not directly supported. If shell command lines are to be
used, they need to be passed explicitly to a shell implementation of some kind. Example:
ExecStart=/bin/sh -c 'dmesg | tac'
Подстановочные знаки не упоминаются как поддерживаемые, поэтому вам придется заключить эту команду в /bin/sh -c
или же /bin/bash -c
как в приведенном выше примере.