как войти в tty при запуске

как войти в tty при запуске

Я хочу выполнить некоторую команду на специальном tty (например, tty2) при запуске Linux, чтобы каждый раз при перезагрузке системы эти команды выполнялись на этом tty. Я использовалэтотссылку, чтобы сделать это.

Работает отлично, но проблема в том, что при запуске мне нужно войти в нужный tty, а затем выполнить команды. Есть ли способ войти в tty с помощью какой-то команды в начале? Спасибо

решение1

На мой взгляд, более простым решением для запуска программы было бы объединить флаг --autologinи gettyфункцию, которая запускает нужные вам команды из .bashrc.

Часть 1: автоматический вход в getty

Как вы знаете или не знаете, TTY открываются с помощьюпрограмма gettyкак автозагрузочная служба в /etc/init/каталоге. Для Ubuntu программа по умолчанию — agetty, которая имеет --autologinфлаг. Таким образом, мы можем сделать следующее:

В терминале запустите, sudo nano /etc/init/tty1.confчтобы открыть файл init для TTY1 (обратите внимание, что TTY1 — это всего лишь пример, вы можете выбрать любой другой). Измените строку

exec /sbin/getty -8 38400 tty1

к

exec /sbin/getty --autologin userName    -8 38400 tty1

Замените userNameна свое фактическое имя пользователя.

Часть 2: запуск функции при входе в оболочку

В системах Linux/Unix есть эта милая маленькая программа, ttyкоторая сообщает, какой терминал вы используете в данный момент. Например, в gnome-terminal она бы сообщила что-то вроде

$ tty
/dev/pts/27

Однако в TTY1 он будет сообщать

$ tty
/dev/tty1

Зная это, мы можем создать функцию в верхней части нашего $HOME/.bashrcфайла

function testTTY
{
  isTTY=$(tty | awk '{if ($0~/\/dev\/tty.*/) {print "true"}else{print "false"}}')

  if [ $isTTY == "true" ]; then
    printf "You are in virtual console\n"
    printf "current disk usage is"
    df
  fi
}

Затем в нижней части .bashrcсделайте вызов вашей функции, просто как testTTY. Итак, сначала определите функцию, а потом вызовите ее.

Примечания:

  • разместить пользовательские команды междуif [];then ...fi
  • Если вам нужен определенный isTTYкод TTY, измените его на этот:isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')

решение2

выполните следующие шаги.

Сначала установите mingetty: $ sudo apt-get install mingetty

5.2) Отредактируйте /etc/init/tty1.conf

/* Для установки root в качестве логина по умолчанию */

Изменить: exec /sbin/getty -8 38400 tty1

Кому: exec /sbin/mingetty --autologin root --noclear tty1

/* Для создания обычного пользователя в качестве логина по умолчанию */

exec /bin/login -f abcuser < /dev/tty1 > /dev/tty1 2>&1

Связанный контент