включенный сервис lsyncd не автоматически запускает на перезапуске ПК - Активный: неактивные (мертвые)

Я супер упростил вопрос путем слияния всех предыдущих редактирований

файл конфигурации lsyncd /etc/lsyncd/lsyncd.conf.lua

settings {
    logfile = "/media/blueray/WDRed/_LsyncLog/lsyncd.log",
    statusFile = "/media/blueray/WDRed/_LsyncLog/lsyncd-status.log",
    pidfile="/media/blueray/WDRed/_LsyncLog/lsyncd.pid",
    statusInterval = 5,
    nodaemon = false,
}

sync {
    default.rsync,
    source    = "/media/blueray/Data/",
    target    = "/media/blueray/WDRed/_LsyncBackup/",
    delay     = 0, 
    exclude = { "/_RedoBackup" },
    rsync     = {
        binary   = "/usr/bin/rsync",
        archive  = true,
        compress = true,
        _extra = { "--backup-dir=/media/blueray/WDRed/_LsyncDeletedBackup/" },
    }
}

сервисный файл lsyncd /home/blueray/.config/systemd/user/lsyncd.service

[Unit]
Description=Live Syncing (Mirror) Daemon
After=network.target remote-fs.target media-blueray-Data.mount media-blueray-WDRed.mount
Wants=media-blueray-Data.mount media-blueray-WDRed.mount
Requires=media-blueray-Data.mount media-blueray-WDRed.mount

[Service]
Type=forking
ExecStart=/usr/bin/lsyncd /etc/lsyncd/lsyncd.conf.lua
PIDFile=/media/blueray/WDRed/_LsyncLog/lsyncd.pid
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target

Перед перезапуском

blueray@blueray-i58600K:~$ systemctl --user start lsyncd
blueray@blueray-i58600K:~$ systemctl --user enable lsyncd
blueray@blueray-i58600K:~$ systemctl --user status lsyncd
● lsyncd.service - Live Syncing (Mirror) Daemon
   Loaded: loaded (/home/blueray/.config/systemd/user/lsyncd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-29 11:58:22 +06; 11s ago
 Main PID: 1921 (lsyncd)
   CGroup: /user.slice/user-1000.slice/user@1000.service/lsyncd.service
           └─1921 /usr/bin/lsyncd /etc/lsyncd/lsyncd.conf.lua

Oct 29 11:58:22 blueray-i58600K systemd[916]: Starting Live Syncing (Mirror) Daemon...
Oct 29 11:58:22 blueray-i58600K systemd[916]: Started Live Syncing (Mirror) Daemon.
blueray@blueray-i58600K:~$ 

После перезапуска

blueray@blueray-i58600K:~$ systemctl --user status lsyncd
● lsyncd.service - Live Syncing (Mirror) Daemon
   Loaded: loaded (/home/blueray/.config/systemd/user/lsyncd.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
blueray@blueray-i58600K:~$ 

Поскольку Вы видите, что этот сервис работает приятно, если я даю команду systemctl --user start lsyncd

Почему это не автоматически запускает, хотя я дал команду systemctl --user enable lsyncd. Почему это показывает Active: inactive (dead) после перезапуска?

2
задан 31 October 2018 в 16:22

2 ответа

Systemd может путать с до и после, но я бы изменил:

After=network.target remote-fs.target media-blueray-Data.mount media-blueray-WDRed.mount

На:

After=network.target remote-fs.target media-blueray-Data.mount media-blueray-WDRed.mount network.target multi-user.target

на основе этого ответа .

2
ответ дан 2 December 2019 в 03:31

Создайте lsyncd файл конфигурации в (можно поместить его в другое местоположение также), /home/blueray/.config/lsyncd.conf.lua

settings {
    logfile = "/media/blueray/WDRed/_LsyncLog/lsyncd.log",
    statusFile = "/media/blueray/WDRed/_LsyncLog/lsyncd-status.log",
    pidfile="/home/blueray/.config/lsyncd.pid",
    statusInterval = 5,
    nodaemon = false,
}

sync {
    default.rsync,
    source    = "/media/blueray/Data/",
    target    = "/media/blueray/WDRed/_LsyncBackup/",
    delay     = 0, 
    exclude = { "/_RedoBackup" },
    rsync     = {
        binary   = "/usr/bin/rsync",
        archive  = true,
        compress = true,
        _extra = { "--backup-dir=/media/blueray/WDRed/_LsyncDeletedBackup/" },
    }
}

создайте lsyncd сервисный файл в /home/blueray/.config/systemd/user/lsyncd.service

[Unit]
Description=Live Syncing (Mirror) Daemon
Requires=default.target
After=default.target

[Service]
Type=forking
ExecStart=/usr/bin/lsyncd /home/blueray/.config/lsyncd.conf.lua
PIDFile=/home/ismail/.config/lsyncd.pid
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID
Restart=always
RestartSec=10

[Install]
WantedBy=default.target

Мотивация шагов отладки:

Поскольку этот вид проблемы заполоняет Интернет -

https://superuser.com/questions/955922/enabled-systemd-unit-does-not-start-at-boot

https://unix.stackexchange.com/questions/237795/lsyncd-wont-start-at-startup

https://unix.stackexchange.com/questions/374638/why-x0vncserver-is-not-starting-at-boot? rq=1

https://unix.stackexchange.com/questions/98033/service-not-starting-at-boot

https://unix.stackexchange.com/questions/282174/squid-systemd-service-not-run-at-boot

https://unix.stackexchange.com/questions/255788/what-is-wrong-with-my-systemd-unit-file

https://unix.stackexchange.com/questions/137028/why-is-my-systemd-unit-loaded-but-inactive-dead

https://unix.stackexchange.com/questions/376038/systemd-why-is-this-service-inactive-dead/376043

https://unix.stackexchange.com/questions/159174/differences-between-inactive-vs-disabled-and-active-vs-enabled-services

https://unix.stackexchange.com/questions/376038/systemd-why-is-this-service-inactive-dead

https://unix.stackexchange.com/questions/251211/why-doesnt-my-systemd-user-unit-start-at-boot

и многое другое.

Я также хотел бы добавить шаги отладки, которые помогли мне решить проблему.

Шаги отладки:

Шаг 1 является попыткой сохранить это простым.

Добавление media-blueray-Data.mount, media-blueray-WDRed.mount и т.д. после

After=, Wants=, Requires= и т.д. сделанный вещами комплекс.

Для User Services использовать systemctl --user list-dependencies и/или systemd-analyze --user critical-chain выяснять то, что Вы хотите поместить как WantedBy= под [Install] раздел -

Примечание: [Install] раздел необходим, если Вы хотите enable сервис (выполняет его при запуске).

$ systemctl --user list-dependencies 

default.target
● └─basic.target
●   ├─paths.target
●   ├─sockets.target
●   │ ├─dirmngr.socket
●   │ ├─gpg-agent-browser.socket
●   │ ├─gpg-agent-extra.socket
●   │ ├─gpg-agent-ssh.socket
●   │ └─gpg-agent.socket
●   └─timers.target

$ systemd-analyze --user critical-chain

default.target @12ms                                                                                                                                                                                                                                                           
└─basic.target @12ms                                                                                                                                                                                                                                                           
  └─paths.target @12ms    

Можно использовать выбранную цель с Requires= & After= под [Unit] раздел в случае необходимости.

Включите сервисное использование systemctl --user enable lsyncd

Если после перезапуска Ваш вычисляла, услуга не работает. Проверьте состояние сервисного использования systemctl --user status lsyncd

Если Вы находите ошибку как lsyncd Start request repeated too quickly. в

Использовать RestartSec= под [Service]

Примечание:

Принимает безразмерное значение в секундах или значение отрезка времени, таких как "5 минимальных 20-х". Значения по умолчанию к 100 мс.

Можно также использовать что-то как

StartLimitInterval=10
StartLimitBurst=1

решать эту проблему.

После любого изменения в использовании файлов единицы

$ systemctl --user daemon-reload
// Disabling before enabling helped me. But I do not think it is necessary.
// $ systemctl --user disable lsyncd
$ systemctl --user enable lsyncd

PS: Это было кратким руководством по отладке. Существует много статей в Интернете относительно этого. Мой не завершен (Существует еще дюжина команд, которые могут помочь, а именно, journalctl с различными атрибутами для чтения журналов). Но я надеюсь, что это поможет многим новичкам использовать systemd.

0
ответ дан 2 December 2019 в 03:31

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

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