
Quiero ejecutar algún comando en un tty especial (por ejemplo, tty2) en mi inicio de Linux, de modo que cada vez que el sistema reinicie, estos comandos se ejecuten en ese tty. solíaesteenlace para hacerlo.
Funciona bien, pero el problema es que al inicio necesito iniciar sesión en el tty deseado y luego ejecutar los comandos. ¿Hay alguna forma de iniciar sesión en un tty mediante algún comando al principio? Gracias
Respuesta1
En mi humilde opinión, una solución más sencilla para ejecutar un programa sería combinar la --autologin
bandera de getty
y una función que ejecute los comandos deseados desde .bashrc
.
Parte 1: inicio de sesión automático en Getty
Como puede que sepa o no, los TTY se abren con unprograma gettycomo servicio de inicio en /etc/init/
el directorio. Para Ubuntu, el programa predeterminado es agetty
, que tiene --autologin
una bandera. Así, podemos hacer lo siguiente:
En la terminal, ejecute sudo nano /etc/init/tty1.conf
para abrir el archivo de inicio para TTY1 (tenga en cuenta que TTY1 es solo un ejemplo, podría ser el que elija). Cambiar línea
exec /sbin/getty -8 38400 tty1
a
exec /sbin/getty --autologin userName -8 38400 tty1
Reemplace userName
con su nombre de usuario real.
Parte 2: ejecutar una función al iniciar sesión en el shell
Los sistemas Linux/Unix tienen este pequeño y agradable programa llamado tty
que informa qué tipo de terminal estás usando en ese momento. Por ejemplo, en gnome-terminal informaría algo como
$ tty
/dev/pts/27
Sin embargo, en TTY1 informaría
$ tty
/dev/tty1
Sabiendo que podemos crear una función en la parte superior de nuestro $HOME/.bashrc
archivo.
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
}
Luego, en la parte inferior, .bashrc
realice una llamada a su función, simplemente como testTTY
. Entonces, primero defina la función y llámela después.
Notas al margen:
- colocar comandos personalizados entre
if [];then ...fi
- Si necesita
isTTY
un código TTY específico, cambie este:isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')
Respuesta2
Siga los pasos a continuación.
Primera instalación de mingetty: $ sudo apt-get install mingetty
5.2) Editar /etc/init/tty1.conf
/* Para hacer que Root sea el inicio de sesión predeterminado */
Cambio: ejecutivo /sbin/getty -8 38400 tty1
Para: ejecutivo /sbin/mingetty --autologin root --noclear tty1
/* Para establecer un usuario normal como inicio de sesión predeterminado */
ejecutivo /bin/login -f abcuser < /dev/tty1 > /dev/tty1 2>&1