Служба активна: неактивна (мертва)

Вопрос или проблема

Вот скрипт:

#!/bin/bash
setterm --blank 1 --powerdown 2

Вот сервис:

[Unit]
Description=Затемнить экран через 1 минуту и выключить его через 2 минуты. Любая клавиша включит его обратно.
After=ssh.service

[Service]
Type=oneshot
Environment=TERM=linux
StandardOutput=tty
TTYPath=/dev/console
ExecStart=/home/USER/.boot-scripts/screen-off.sh

[Install]
WantedBy=local.target

Если я включаю его и запускаю, он работает, но когда я перезагружаю сервер, ничего не происходит. Если я проверяю статус сервиса, то получаю следующее:


 ● screen-off.service - Затемнить экран через 1 минуту и выключить его через 2 минуты. Любая клавиша включит его обратно.
     Loaded: loaded (/etc/systemd/system/screen-off.service; enabled; vendor preset: enabled)
     Active: inactive (dead)

Какие идеи, почему он не запускается при загрузке и мне приходится делать это вручную?

Спасибо

Спасибо за помощь – user535733 (комментарий по ошибке был удален). local.target не является обычной целью systemd в загрузочном пути системы Ubuntu. Я переместил его в multi-user.target, и теперь он работает!

Ответ или решение

Понимание проблемы службы systemd: неактивное состояние после перезагрузки

Фон

В данном случае мы имеем дело с службой systemd, создаваемой для управления поведением вывода на экран. Скрипт, выполняемый службой, отвечает за затемнение экрана через одну минуту и его отключение через две минуты бездействия. Несмотря на то что служба работает правильно при ручном запуске, она не активируется автоматически при загрузке системы, о чем свидетельствует статус "inactive (dead)".

Основные компоненты

  1. Скрипт:

    #!/bin/bash
    setterm --blank 1 --powerdown 2

    Этот скрипт использует команду setterm, чтобы задать параметры затемнения и отключения монитора. Он работает на терминале Linux и использует возможности встроенной оболочки для управления выводом на экран.

  2. Юнит службы:

    [Unit]
    Description=Blank screen after 1 min and turn it off after 2 min. Any keypress will turn it back on.
    After=ssh.service
    
    [Service]
    Type=oneshot
    Environment=TERM=linux
    StandardOutput=tty
    TTYPath=/dev/console
    ExecStart=/home/USER/.boot-scripts/screen-off.sh
    
    [Install]
    WantedBy=local.target

    В юните описаны различные параметры, включая тип службы, среду и путь к TTY. Однако существует важный момент: секция [Install], где указано, что служба должна запускаться с local.target.

Причины проблемы

На основании предоставленной информации и вашего описания, причины, по которым служба не активируется при загрузке, могут быть следующими:

  1. Неправильный таргет для автоматического запуска:
    Прошу прощения за путаницу, упомянутую в комментарии, – local.target не является стандартным таргетом в большинстве дистрибутивов Linux для автостарт служб, особенно в Ubuntu. Вместо этого рекомендуется использовать multi-user.target, который является более подходящим для запуска фоновых процессов и пользовательских служб.

  2. Тип службы:
    Тип oneshot предполагает, что служба выполняется и завершается. Если она не успевает выполнить свою задачу должным образом в момент загрузки, это может привести к тому, что она будет отмечена как "неактивная". Поскольку служба зависит от ssh.service, важно, чтобы SSH-сервис был активен до запуска службы screen-off.

Решение проблемы

Чтобы исправить проблему, измените WantedBy на более подходящий таргет. Измените файл юнита следующим образом:

[Install]
WantedBy=multi-user.target

После внесения изменений, выполните следующие команды:

sudo systemctl daemon-reload
sudo systemctl enable screen-off.service

Это обновит состояние меню и позволит правильно инициализировать вашу службу в нужном таргете.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...