Выполнение демона с помощью службы systemd не возвращает результат

Вам не нужен рекурсивный листинг, потому что, как вы видели, рекурсивный означает "до конца", а не "до какой-то произвольной точки остановки".

Чтобы отобразить два уровня ниже папки A, находясь в родительской папке A,

(cd folderA && ls -d -- */*)

Суть в том, что */*подстановочный знак/подстановочный знак; который просит оболочку сгенерировать все непосредственные подкаталоги (с */), а затем все его записи (окончательный*).

Важно отметить, что мы должны указать lsдля не расширять какие-либо из этих конечных записей, если они являются каталогами; мы делаем это с флагом -d.

Последняя часть, чтобы получить выходной формат, который вы ищете, я решил, запустив подоболочку, где мы cdв папке A, чтобы сделать листинг. После выхода lsподоболочка завершает работу, и мы возвращаемся к нашему текущему приглашению и каталогу (над папкой A ).

0
14.11.2019, 18:07
1 ответ

Буквально вчера вечером я имел дело именно с этим вопросом. Потребовалось две вещи, чтобы исправить. Поскольку политика selinux и переменные среды могут сильно различаться между тем, что имеет systemd, и тем, что есть у суперпользователя, вошедшего в систему, тестирование в командной строке может дать ложный положительный результат. При применении selinux разница может быть существенной. Вместо того, чтобы потерпеть неудачу, systemd пытается запустить его бесконечно, ожидая успешного (выхода 0 ). Итак, чтобы докопаться до сути,запустите systemctl, запустите мой демон -, затем CTL + C, чтобы отменить запуск вне службы, затем запустите systemctl status моего демона -. Статус обязательно покажет, что не работает и почему не вышел.

Другая вещь находится в разделе [service], в дополнение к другим параметрам, используйте

Type=simple
RemainAfterExit=no

Хотя Type=forking может подойти для вашей работы.

0
28.01.2020, 03:06

Теги

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