1

Я пытаюсь автоматически запустить интерактивную программу C++ при загрузке до появления TTY1.

Я создал файл с именем /etc/systemd/system/myapp.service со следующим содержимым:

[Unit]
Description=myapp

[Service]
Type=oneshot
ExecStart=/home/xxx/myapp.exe start
StandardOutput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

А потом побежал

sudo systemctl enable myapp

К сожалению, это не работает, как ожидалось. Я не могу взаимодействовать с myapp , и я не хочу, чтобы TTY1 появлялся до завершения программы


ОБНОВЛЕНИЕ: Мое приложение теперь работает до появления TTY. /etc/systemd/system/myapp.service теперь содержит:

[Unit]
Description=myapp
After=sysinit.target

[Service]
Type=oneshot
StandardOutput=tty
RemainAfterExit=yes
ExecStart=/home/xxx/myapp.exe start

[Install]
WantedBy=multi-user.target

Но я все еще не могу взаимодействовать с моей программой.

1 ответ1

2

Я смог взаимодействовать с моей программой, добавив строку TTY StandardInput в службу systemd и отключив службу TTY1 systemd.

Вот окончательное содержимое /etc/systemd/system/myapp.service:

[Unit]
Description=myapp
After=sysinit.target

[Service]
Type=oneshot
StandardInput=tty
StandardOutput=tty
RemainAfterExit=yes
ExecStart=/home/xxx/myapp.exe start

[Install]
WantedBy=multi-user.target

А вот команда для отключения службы systemd TTY1:

sudo systemctl disable getty@tty1.service

Теперь программа появляется в интерактивном режиме на TTY1.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .