Выполнения отлично через командную строку, не будет работать через systemd ExecStart

xargs

- инструмент для выполнения задания. Это, или

найти

с помощью [116173]-exec ... {} +[116174]. Эти инструменты запускают команду несколько раз, с максимальным количеством аргументов, которое может быть передано за один раз.

Оба метода проще выполнить, когда список переменных аргументов находится в конце, что здесь не так: конечным аргументом для [116175]mv[116176] является назначение. С утилитами GNU (например, на не встраиваемых Linux или Cygwin) вариант [116177]-t[116178] для [116179]mv[116180] полезен, чтобы сначала передать пункт назначения.

Если имена файлов не имеют ни белого пробела, ни любого из [116181]\"''[116182], то вы можете просто указать имена файлов на входе в [116183]xargs[116184] (команда [116185]echo[116186] является bash builtin, так что на нее не распространяется ограничение длины командной строки):

Вы можете использовать опцию [116187]-0[116188] для [116189]xargs[116190], чтобы использовать ввод с нулевым делением вместо формата по умолчанию, заданного в кавычках.

В качестве альтернативы вы можете сгенерировать список имен файлов с помощью [116191]find[116192]. Чтобы избежать повторения в подкаталогах, используйте [116193]-тип d -prune[116194]. Так как для перечисленных файлов изображений не указано никаких действий, перемещаются только остальные файлы.

(Сюда входят точечные файлы, в отличие от методов подстановочного шаблона оболочки)

Если у вас нет GNU-утилит, вы можете использовать промежуточную оболочку, чтобы получить аргументы в правильном порядке. Этот метод работает на всех POSIX-системах.

В zsh можно загрузить

mv[116508] builtin[116196]:

или, если вы предпочитаете, чтобы [116197]mv[116198] и другие имена продолжали ссылаться на внешние команды: или с помощью глобусов в стиле ksh-: Альтернативно, используя GNU [116199]mv[116200] и zargs :

1
08.01.2015, 07:16
2 ответа

Когда вы начинаете бабочку из оболочки, он удаляет цитаты вокруг 0,0.0,0 . С другой стороны, SystemD не делает расширение цитаты в этой ситуации, потому что это не оболочка.

На самом деле SystemD способен зачистить котировки вокруг аргументов, но не в середине их.

Итак, попробуйте удалить цитаты вокруг 0,0.0.0 в вашем сервисном файле и посмотрите, какие изменения. Не забывайте на Systemctl Daemon-Reload .

с. S.: Вы не можете волшебным образом сделать розетку демона - активируемый только путем написания блока. Его код должен быть изменен на поддержку активации сокета.

3
27.01.2020, 23:28

Я предполагаю, что у вас есть некоторые зависимости для запуска вашего Butterfly.service . Если работает из командной строки, может быть все услуги, и вы не сталкиваетесь с какой-либо проблемой, а не стоит Начиная с Systemd Systemd может быть некоторые из служб зависимостей не поднимаются и до того, как эти услуги Ваша бабочка. УВЕРГИЦИЯ идет вверх. И попробуйте добавить RESTART = всегда к вашему [Сервис] раздел , так что если он сбивает сбой, он должен снова перезапустить себя.

0
27.01.2020, 23:28

Теги

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