Intereting Posts
Найти наборы шифров, предлагаемые клиентами в TLS Как я могу узнать диапазон LBA файла, используя его inode? Как сделать «ярлык» рабочего стола, который открывает терминал, но в другом каталоге, чем дом по умолчанию? Альтернатива rsync -delete для перемещения файлов в другой каталог вместо удаления задайте файл, найдите, где в подкаталоге он был скопирован в `nice` не очень помогает в Linux Не удается запустить X-окно, поскольку отчет не может найти действительное устройство фреймбуфера Застрял в bootloop после обновления до Ubuntu 16.04LTS В чем разница между прикрепленным и отсоединенным экраном? Какой способ передачи файлов (например, FTP) я могу использовать для rlogin (Solaris 8 на SPARC) Создание внешних объявлений из глобальных объявлений в C с помощью emacs ‘query-replace-regexp Как использовать awk через несколько файлов? Как я могу сделать bash более удобочитаемым? Как написать работу в Perl? Как предотвратить ядро ​​Linux от пробуждения вторичного жесткого диска от сна

Как запустить службу Systemd навсегда («Загрузка еще не завершена. Повторите попытку позже»).

Я создал службу systemd , которая должна работать вечно (потому что она выполняет основное задание на моем встроенном компьютере):

 # /etc/systemd/system/samplerbox.service ######################################## [Unit] Description=Starts SamplerBox [Service] Type=oneshot ExecStart=/root/SamplerBox/samplerbox.sh WorkingDirectory=/root/SamplerBox/ [Install] WantedBy=multi-user.target 

Вот что он на самом деле делает:

 # /root/SamplerBox/samplerbox.sh ################################ #!/bin/sh python /root/SamplerBox/samplerbox.py 

Я включил эту службу с помощью

 systemctl enable /etc/systemd/system/samplerbox.service 

Он работает, и он запускается при загрузке.


Однако, поскольку я включил эту службу, когда я делаю systemd-analyze , я вижу:

 Bootup is not yet finished. Please try again later. 

Более того, я получаю эту информацию, показывающую, что услуга по-прежнему рассматривается как «активация» / запуск:

 # systemctl status samplerbox â samplerbox.service - Starts SamplerBox Loaded: loaded (/etc/systemd/system/samplerbox.service; enabled) Active: activating (start) since Thu 1970-01-01 00:14:01 UTC; 11min ago Main PID: 258 (samplerbox.sh) CGroup: /system.slice/samplerbox.service ââ258 /bin/sh /root/SamplerBox/samplerbox.sh ââ260 python /root/SamplerBox/samplerbox.py 

Как правильно заставить сервис работать навсегда?

Решение было довольно простым: нужно заменить

 [Service] Type=oneshot 

от

 [Service] Type=simple 

В этом документе говорится:

Тип = простой (по умолчанию): systemd считает, что служба запускается немедленно. Процесс не должен развиваться. Не используйте этот тип, если другие сервисы необходимо заказать в этой службе, если только это не активировано.

Type = oneshot: это полезно для скриптов, которые выполняют одно задание, а затем выходят. Возможно, вы захотите установить RemainAfterExit = yes, чтобы systemd все еще считал сервис активным после выхода процесса.