LINUX.ORG.RU

Автозапуск приложений в tmux

 ,


3

1

Здравствуйте мои маленькие любители авиационного спирта! Сейчас я вам расскажу как запускать приложения при загрузке линукса сразу в tmux.

Во-первых, в /etc/inittab нужно добавить параметр --autologin root чтобы автоматически входить в систему при загрузке.

Было так:

c1:2:respawn:/sbin/agetty --noclear 38400 tty1 linux
c2:2:respawn:/sbin/agetty 38400 tty2 linux
c3:2:respawn:/sbin/agetty 38400 tty3 linux
c4:2:respawn:/sbin/agetty 38400 tty4 linux
c5:2:respawn:/sbin/agetty 38400 tty5 linux
c6:2:respawn:/sbin/agetty 38400 tty6 linux

Стало так:

c1:2:respawn:/sbin/agetty --autologin root --noclear 38400 tty1 linux
c2:2:respawn:/sbin/agetty 38400 tty2 linux
c3:2:respawn:/sbin/agetty 38400 tty3 linux
c4:2:respawn:/sbin/agetty 38400 tty4 linux
c5:2:respawn:/sbin/agetty 38400 tty5 linux
c6:2:respawn:/sbin/agetty 38400 tty6 linux

Далее нужно в .bash_profile настроить разовый запуск tmux, проверять это можно путём лок-файла. Разовый, чтобы приложения не запускались повторно при логине по ssh, к примеру. Так же, указать автозапуск приложений.

#!/bin/bash

autorun ()
{
    # если tmux уже запущен, ничего не делаем
    if test -f ~/.tmux.pid; then
        if kill -0 $(< ~/.tmux.pid) 2>/dev/null; then
          return 1
        fi
    fi

    # запускаем tmux и записываем Process ID
    tmux start-server

    echo $! > ~/.tmux.pid

    # запускаем все необходимые процессы в автозапуске
    tmux new-session -d -s autorun "/bin/bash"

    tmux new-window -t autorun "/bin/bash -c /root/.local/bin/hpeconf.sh"

    tmux new-window -t autorun "/bin/bash -c /root/.local/bin/shutdown1hour.sh"

    # возвращаемся к первому окну в tmux
    tmux select-window -t autorun:0

    # подключаемся к tmux чтобы видеть его в tty1
    tmux attach-session -t autorun
}

autorun

Теперь при включении компьютера, загрузке ОС GNU/Linux, вы будете логиниться в системе как root (в tty1 без ввода пароля), а далее будет происходить автоматический запуск всех необходимых приложений внутри tmux, таким образом вы сможете подключиться к хосту по ssh и приаттачить tmux в любой момент.

Это удобно если например создать флешку с загружающимся live-дистрибутивом и автозапуском всех необходимых приложений для настройки.

Если кто-то захочет оформить это в виде отдельных удобных функций для сподручного запуска tmux с приложениями — будет круто.

Удачной работы за компьютером!

★★★★★
Ответ на: комментарий от Spoofing
if tmux has-session -t '=autorun' 2> /dev/null; then
  # проверяем $TMUX если не установлена то tmux attach-session -t '=autorun'
  exit 0
fi

# Создаём сессию, окна, запускаем приложухи
tmux new-session -d -s autorun ...
...

tmux attach-session -t '=autorun'

vvn_black ★★★★★
()

перверция какая-то. что мешает оформить запуск всего этого барахла в tmux в виде стартового сервиса, без логина? а при логине просто цепляться к tmux сессии?

ananas ★★★★★
()
Ответ на: комментарий от ananas

Ну прост я подключаю к серверу монитор и вижу процесс настройки, вдруг если что пойдёт не так.

https://www.voglea.com/20211208_092450.jpg

Флешку воткнул и оно всё само сделало.

Spoofing ★★★★★
() автор топика
Последнее исправление: Spoofing (всего исправлений: 1)
Ответ на: комментарий от t184256

НЕ НУЖЕН МНЕ ВАШ СИСТЕМДЭ Я САМ НАПИШУ СКРИПТ КОТОРЫЙ ЗАПУСКАЕТ СЕРВИСЫ ТОЛЬКО ПОСЛЕ ПОДКЛЮЧЕНИЯ К ИНТЕРНЕТАМ

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от Spoofing

Там ещё пара-тройка фич есть кроме этой, надеюсь тебе они не понадобятся =)

t184256 ★★★★★
()

.tmux.pid надо бы в tmpfs, чтоб после перезагрузки нормально стартавало

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.