
Ich möchte beim Start von Linux einen Befehl auf einem speziellen TTY (z. B. TTY2) ausführen, sodass dieser Befehl bei jedem Neustart des Systems auf diesem TTY ausgeführt wird. Ich habeDasKlicken Sie dazu auf den Link.
Es funktioniert einwandfrei, aber das Problem ist, dass ich mich beim Start beim gewünschten TTY anmelden muss, um dann die Befehle auszuführen. Gibt es eine Möglichkeit, mich am Anfang mit einem Befehl bei einem TTY anzumelden? Danke
Antwort1
Eine einfachere Lösung zum Ausführen eines Programms wäre meiner Meinung nach die Kombination des --autologin
Flags von getty
und einer Funktion, die die gewünschten Befehle ausführt .bashrc
.
Teil 1: Automatische Anmeldung bei Getty
Wie Sie vielleicht wissen oder auch nicht, werden TTYs mit einemGetty-Programmals Startdienst im /etc/init/
Verzeichnis. Für Ubuntu ist das Standardprogramm agetty
, das das Flag hat --autologin
. Daher können wir Folgendes tun:
Führen Sie im Terminal den Befehl aus sudo nano /etc/init/tty1.conf
, um die Init-Datei für TTY1 zu öffnen (beachten Sie, dass TTY1 nur ein Beispiel ist, Sie können es beliebig wählen). Ändern Sie die Zeile
exec /sbin/getty -8 38400 tty1
Zu
exec /sbin/getty --autologin userName -8 38400 tty1
Ersetzen Sie es userName
durch Ihren tatsächlichen Benutzernamen.
Teil 2: Ausführen einer Funktion beim Shell-Login
Linux/Unix-Systeme haben dieses nette kleine Programm namens, tty
das meldet, welche Art von Terminal Sie gerade verwenden. In gnome-terminal würde es beispielsweise etwas wie
$ tty
/dev/pts/27
Bei TTY1 würde es jedoch eine Meldung geben
$ tty
/dev/tty1
Wenn wir wissen, dass wir oben in unserer $HOME/.bashrc
Datei eine Funktion erstellen können
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
Rufen Sie dann unten Ihre Funktion auf, ganz einfach als testTTY
. Definieren Sie also zuerst die Funktion und rufen Sie sie später auf.
Randnotizen:
- Platzieren Sie benutzerdefinierte Befehle zwischen den
if [];then ...fi
- Wenn Sie einen bestimmten TTY-Code benötigen, ändern Sie
isTTY
ihn folgendermaßen:isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')
Antwort2
Befolgen Sie die folgenden Schritte.
Installieren Sie zuerst mingetty: $ sudo apt-get install mingetty
5.2) Bearbeiten Sie /etc/init/tty1.conf
/* Um Root als Standard-Login festzulegen */
Änderung: exec /sbin/getty -8 38400 tty1
An: exec /sbin/mingetty --autologin root --noclear tty1
/* Um einen normalen Benutzer als Standard-Login festzulegen */
exec /bin/login -f abcuser < /dev/tty1 > /dev/tty1 2>&1