Executar um script como root durante a inicialização e exibir no terminal linux padrão?

3

Veja como configurei meu script de inicialização do sistema de kickstart (este é um trecho de script conf kickstart):

...

%post --log=/root/ks-post.log --interpreter /bin/bash

cd /root
curl --silent --show-error --retry 5 -O "https://mysecurewebsite.net/init-script7.sh"
cp init-script.sh /etc/init.d/initializesystem
chmod +x /etc/init.d/initializesystem
[ ! -d /etc/rc.d ] && echo "/etc/rc.d/ not present, creating dir." && mkdir /etc/rc.d
[ ! -d /etc/rc.d/rc3.d ] && echo "/etc/rc.d/rc3.d/ not present, creating dir." && mkdir /etc/rc.d/rc3.d
ln -s /etc/init.d/initializesystem /etc/rc.d/rc3.d/S30initializesystem

%end

Isso funciona muito bem e é executado em segundo plano não assistido na primeira inicialização após a instalação do sistema operacional.

No entanto, gostaria de tornar isso ainda mais amigável, permitindo que a inicialização padrão tty exiba o stdout desse script initializesystem . Atualmente eu tenho o script escrevendo seu progresso para um arquivo de log, e eu tenho que logar como root e tail -f do arquivo de log. Eu ainda gostaria de poder fazer isso, se quiser, mas quero saber se é possível também mostrar automaticamente a saída sem precisar que eu faça o login.

Uma coisa a notar é que não quero tornar o sistema completamente não interativo. Por exemplo, eu gostaria de poder Ctrl + Alt + F2 e fazer o login para fazer alguma administração enquanto este script continua.

Eu também preferiria que uma Ctrl + C não fosse capaz de matar este script em particular durante a execução, embora eu suspeite que isso possa ser fácil configurado para lidar com o SIGINT, então esqueça que eu mencionei isso.

Isso é possível? Usando o Centos 7 aqui.

    
por Steven Lu 22.02.2015 / 10:07

1 resposta

1

Conforme você se indica, como root você pode simplesmente escrever coisas em /dev/tty1 .

Se o seu script escrever no stdout, você poderá usar:

yourscript | tee -a /your/log/file > /dev/tty1

se o script grava diretamente no arquivo de log, as coisas não são tão fáceis, você teria que seguir o arquivo de log e exibir o novo conteúdo. Nesse caso, é provavelmente mais fácil alterar o script para usar uma rotina print na qual você pode duplicar a saída facilmente.

Não há como parar com o uso de Ctrl + C , mesmo que você tenha efetuado login pela primeira vez no console, pois não há como shell para saber para onde enviar a interrupção.

Dependendo de suas preferências de inicialização, se você tem um login gráfico ou não, convém usar /dev/tty2 para não estrobrar a primeira tela. Você também deve considerar iniciar o log com uma nova linha para que o primeiro texto não apareça após o

machinename login:

prompt que está no topo da tela.

Não acho que haja uma maneira de voltar ao console em que você está escrevendo dessa maneira, mas isso pode não ser importante.

    
por 22.02.2015 / 11:14