web-dev-qa-db-fra.com

comment se connecter à un tty au démarrage

Je souhaite exécuter une commande sur un terminal spécial (par exemple, tty2) lors du démarrage de Linux afin que chaque fois que le système redémarre, ces commandes soient exécutées sur ce terminal. J'ai utilisé le lien this pour le faire.

Cela fonctionne bien, mais le problème est qu’au démarrage, j’ai besoin de me connecter au tty souhaité, puis d’exécuter les commandes. Est-il possible de connecter un tty en utilisant une commande au début? Merci

1
Hamed

Une solution plus simple pour exécuter un programme, IMHO serait de combiner l'indicateur --autologin de getty et une fonction qui exécute les commandes souhaitées à partir de .bashrc.

Partie 1: connexion automatique à getty

Comme vous le savez peut-être ou non, les TTY sont ouverts avec un répertoire programme getty en tant que service de démarrage dans le répertoire /etc/init/. Pour Ubuntu, le programme par défaut est agetty, qui a le drapeau --autologin. Ainsi, nous pouvons faire ce qui suit:

Dans le terminal, exécutez Sudo nano /etc/init/tty1.conf pour ouvrir le fichier init pour TTY1 (notez que TTY1 n’est qu’un exemple, il peut correspondre à votre choix). Changer de ligne

exec /sbin/getty -8 38400 tty1

à

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

Remplacez userName par votre nom d'utilisateur actuel.

Partie 2: exécuter une fonction sur le login au shell

Les systèmes Linux/Unix ont ce joli petit programme appelé tty qui indique le type de terminal que vous utilisez actuellement. Par exemple, dans gnome-terminal, il signalerait quelque chose comme

$ tty
/dev/pts/27

En ATS 1 cependant, il serait rapporté

$ tty
/dev/tty1

Sachant que nous pouvons créer une fonction au sommet de notre fichier $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
}

Puis, au bas du .bashrc, appelez votre fonction, simplement comme testTTY. Donc, définissez d'abord la fonction, appelez-la plus tard.

Notes annexes:

  • placez des commandes personnalisées entre le if [];then ...fi
  • Si vous avez besoin de changer le code TTY isTTY en ceci: isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')
3

suivez les étapes ci-dessous.

Première installation de mingetty: $ Sudo apt-get install mingetty

5.2) Éditez /etc/init/tty1.conf

/ * Pour faire de la racine le login par défaut * /

Changement: exec/sbin/getty -8 38400 tty1

À: exec/sbin/mingetty --autologin root --noclear tty1

/ * Pour créer un utilisateur normal en tant que connexion par défaut * /

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

2
Hariharan Gopal