
Quero executar algum comando em tty especial (por exemplo, tty2) na inicialização do Linux, para que toda vez que o sistema for reinicializado, esses comandos sejam executados nesse tty. eu useiesselink para fazer isso.
Funciona bem, mas o problema é que na inicialização preciso fazer o login no tty desejado e executar os comandos. Existe alguma maneira de fazer login em um tty por algum comando no início? Obrigado
Responder1
Uma solução mais simples para executar um programa, IMHO, seria combinar o --autologin
sinalizador de getty
e uma função que executa os comandos desejados de .bashrc
.
Parte 1: login automático no getty
Como você pode ou não saber, os TTYs são abertos com umprograma gettycomo um serviço de inicialização no /etc/init/
diretório. Para Ubuntu, o programa padrão é agetty
, que possui --autologin
flag. Assim, podemos fazer o seguinte:
No terminal, execute sudo nano /etc/init/tty1.conf
para abrir o arquivo init para TTY1 (observe que TTY1 é apenas um exemplo, pode ser o que você escolher). Alterar linha
exec /sbin/getty -8 38400 tty1
para
exec /sbin/getty --autologin userName -8 38400 tty1
Substitua userName
pelo seu nome de usuário real.
Parte 2: executando uma função no login do shell
Os sistemas Linux/Unix têm um pequeno programa chamado tty
que informa que tipo de terminal você está usando no momento. Por exemplo, no gnome-terminal ele reportaria algo como
$ tty
/dev/pts/27
No entanto, em TTY1, ele reportaria
$ tty
/dev/tty1
Sabendo que podemos criar uma função no topo do nosso $HOME/.bashrc
arquivo
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
}
Então, na parte inferior, .bashrc
faça uma chamada para sua função, simplesmente como testTTY
. Portanto, defina a função primeiro e chame-a depois.
Notas laterais:
- coloque comandos personalizados entre o
if [];then ...fi
- Se você precisar
isTTY
de um código de alteração TTY específico para isso:isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')
Responder2
siga as etapas abaixo.
Primeiro instale o mingetty: $ sudo apt-get install mingetty
5.2) Edite /etc/init/tty1.conf
/* Para tornar o Root como login padrão */
Alteração: exec /sbin/getty -8 38400 tty1
Para: exec /sbin/mingetty --autologin root --noclear tty1
/* Para tornar um usuário normal como login padrão */
exec /bin/login -f abcuser < /dev/tty1 > /dev/tty1 2>&1