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
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:
if [];then ...fi
isTTY
en ceci: isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')
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