klink0v (klink0v) wrote,
klink0v
klink0v

Маленькие извращения с systemd

Допустим, нам хочется на работающей системе автоматически иметь в одном из терминалов (tty) какую-нибудь неинтерактивную софтину, запущенную независимо от факта логина пользователя в системе. В старые добрые времена мы бы запихнули её вызов в inittab. Сейчас же везде systemd, там inittab-а уже нетути. Что же делать?

Ответ: создавать свой собственный service-файл для systemd и запихивать его в "/etc/systemd/system/". Содержание примерно следующее (может варьироваться в зависимости от конкретных потребностей). Я чисто для примера взял утилиту "top".

/etc/systemd/system/top.service


[Unit]
Description=top on tty1

[Service]
Type=simple
ExecStart=/usr/bin/top
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty1

[Install]
WantedBy = multi-user.target

После этого надо сделать "systemctl enable top.service", дабы активировать данный конфиг на автостарт.

Если же мы "до кучи" хотим, чтобы софтина могла бы работать интерактивно, то надо сделать так, чтобы она не дралась с logind. Для этого в "/etc/systemd/logind.conf" выставляем значение параметра "NAutoVTs" в какую-нибудь небольшую разумную величину. Например, "NAutoVTs=2" будет означать, что logind займёт два первых виртуальных терминала. А наш сервис мы будем запускать на третьем терминале ("TTYPath=/dev/tty1"). Тогда пользователь сможет даже понажимать на кнопочки.

Естественно, надо быть весьма осторожным, т.к. по умолчанию вся эта радость будет выполняться из-под root-а.

Tags: linux, systemd, администрирование
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments