Eu criei meu primeiro script init em um servidor linux (o ubuntu se adiciona alguma informação) que verifica uma atualização, baixa e executa em cada hora. O arquivo init é o seguinte:
/etc/init/updater.conf
start on (filesystem and stopped udevtrigger)
stop on runlevel [06]
console output
respawn
script
chvt 6
chvt 7
while true; do
# code to check update ...
if [ should_update ]; then
# Download the script
chmod +x /path/to/script.sh
bash /path/to/script.sh
rm /path/to/script.sh
fi
echo 'Rechecking for updates in 1h...'
sleep 1h
done
end script
O script baixado começa da seguinte maneira:
script.sh
#!/bin/bash
clear
exec > >(tee -i /var/log/update.log)
exec 2>&1
ScriptLoc=$(readlink -f "$0")
# check for root privilege
if [ "$(id -u)" != "0" ]; then
echo " This script must be run as root" 1>&2
echo
exit 1
fi
LOG_OUTPUT=/dev/tty4
(some_time_consuming_command 2>&1 > $LOG_OUTPUT) & spinner &!
O comportamento esperado é que após a instalação do linux terminar, o pressionado irá adicionar o updater.conf
to /etc/init
que é feito, então o linux reinicia após a instalação e mostra o "Hello I will ..." mensagem, em seguida, um spinner como este ajuste [-]
ao redirecionar a saída do some_time_consuming_command
para TTY4
No entanto, o comportamento atual é que o Linux reinicia em uma tela preta (TTY7) sem nada, quando eu mudo para TTY1, vejo o: "Olá eu vou começar a mensagem de instalação". Eu não entendi esse comportamento.
Alguém pode me guiar para alcançar o comportamento esperado?
EDIT: Depois de ler um pouco, descobri que / dev / tty7 é, em geral, o padrão por causa do / dev / console vinculado a ele. Estou certo? Alguém poderia explicar por que o TTY7 é o padrão em geral? E eu estou procurando por exibir a saída do init para / dev / console em vez de / dev / tty7?
Tags bash init init.d ubuntu ubuntu-14.04