Остановить запуск службы systemd при загрузке

Я не хочу, чтобы моя служба systemd запускалась при загрузке, и я не могу ее остановить.

Я создал свой собственный сценарий, службу и файлы таймера для автоматического резервного копирования в Backblaze. Я нашел 3 или 4 сообщения на форуме по этому поводу, но ни одно из этих решений мне не помогло.

Если я удалю раздел [Install] в .service, статус изменится на static . И он по-прежнему работает при загрузке.

Вот мой файл .service:

ryley@pop-os:~$ cat /etc/systemd/system/b2backup.service 
[Unit]
Description=Backblaze Backup Script

[Service]
User=ryley
Group=ryley
Type=simple
ExecStart=/home/ryley/b2backup.sh --full --to-external
Restart=on-failure

[Install]
WantedBy=multi-user.target

Вот мой файл таймера:

ryley@pop-os:~$ cat /etc/systemd/system/b2backup.timer
[Unit]
Description=timer for Backblaze upload script
Requires=b2backup.service

[Timer]
Unit=b2backup.service
OnCalendar=Sun 03:00:00

[Install]
WantedBy=multi-user.target

Вот статус:

ryley@pop-os:~$ systemctl status b2backup.service 
● b2backup.service - Backblaze Backup Script
     Loaded: loaded (/etc/systemd/system/b2backup.service; disabled; vendor preset: enabled)
     Active: inactive (dead) since Mon 2020-11-23 20:58:30 PST; 12h ago
TriggeredBy: ● b2backup.timer
    Process: 944 ExecStart=/home/ryley/b2backup.sh --full --to-external (code=exited, status>
   Main PID: 944 (code=exited, status=0/SUCCESS)

Это показывает, что служба отключена:

ryley@pop-os:~$ systemctl list-unit-files --state=disabled
UNIT FILE                              STATE    VENDOR PRESET
proc-sys-fs-binfmt_misc.mount          disabled enabled      
acpid.service                          disabled enabled      
b2backup.service                       disabled enabled      

Любая помощь очень признателен. Я занимаюсь этим несколько часов.

1
задан 24 November 2020 в 20:46

1 ответ

Похоже, проблема в вашем файле /etc/systemd/system/b2backup.timer.

В частности, эта строка:

Requires=b2backup.service

Из документации systemd.timer:

Для каждого файла таймера должен существовать соответствующий файл модуля, описывающий модуль, который активируется по истечении таймера. По умолчанию активирован сервис с тем же именем, что и у таймера (за исключением суффикса). Пример: файл таймера foo.timer активирует соответствующий сервис foo.service. Юнитом для активации можно управлять с помощью Unit= (см. ниже).

  • foo.timer всегда будет запускать foo.service.Systemd автоматически сопоставляет имя ('foo')
  • Чтобы указать другой служебный файл(ы), используйте Unit=someOtherService (отличается от раздела [Unit])

К сожалению, строка Requires= создает зависимость . Systemd должен запустить зависимость , прежде чем сможет запустить службу или таймер.

  • Строка Requires=foo указывает systemd запустить эту службу до запуска таймера.

Просто удалите строку Requires= из вашего таймера. Вам это не нужно (systemd уже знает, какую службу запускает таймер), и это вызывает поведение, которое вам не нужно.

0
ответ дан 25 November 2020 в 03:36

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

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