O script Bash não abre no terminal ao reiniciar

0

Visão geral rápida, criei um script que reinicia o laptop após x quantidade de tempo e x quantidade de ciclos. Eu adicionei o script para os aplicativos de inicialização e o script parece estar sendo executado em segundo plano, mas nunca abre uma janela de terminal. Estou faltando alguma coisa?

Adicionando código (isso é salvo em um arquivo chamado countdown.sh)

#!/bin/bash

# check if passed.txt exists if it does, send to soak test

if [ -f passed.txt ];
then
echo reboot has passed $nol cycles
sleep 5;
echo Starting soak tests 
sleep 5;
rm testlog.txt;
rm passed.txt;
phoronix-test-suite run quick-test
exit 0;
fi

# check if file testlog.txt exists if not create it

if [ ! -f testlog.txt ];
then
echo >> testlog.txt;
fi

# read reboot file to see how many loops have been completed

exec < testlog.txt
nol=0
while read line
do
nol='expr $nol + 1'
done

# start the countdown, x is time limit

let x=10; 
while [ $x -gt 0 ]; 
do clear; 
figlet "Rebooting in..."; 
figlet $x; 
let x-=1; 
sleep 1;
done;
echo reboot success $nol >> testlog.txt;
shutdown -r now;

# set how many times the script should shutdown the laptop

reboot_count=1

# if number of reboots matches nol's then stop the script
# create a new text file called passed.txt

if [ "$nol" == "$reboot_count" ];
then
echo reboot passed $nol cycles >> passed.txt;
fi
    
por twigg 11.09.2012 / 10:03

1 resposta

1
Os scripts de shell

não abrem automaticamente janelas na sua área de trabalho. Você tem que incluir código para fazer isso, se é isso que você quer.

Atualização 1

Uma maneira de fazer isso é usar Xdialog .

Note que você pode precisar instalá-lo usando sudo yum install Xdialog ou apt-get install Xdialog (ou qualquer comando apropriado para o gerenciador de pacotes da sua distribuição Unix / Linux).

Há exemplos em /usr/share/doc/xdialog*/samples , aqui está um

Usando essa ferramenta, você pode ter o script de segundo plano exibindo mensagens no console do sistema (supondo que esteja executando um servidor X). Talvez seja necessário definir o valor da variável de ambiente DISPLAY para que o programa saiba em qual tela deve exibir a caixa de diálogo. Isso também funciona para PCs remotos, etc., se eles executarem um servidor X (por exemplo, Xming no Windows).

Aqui está um exemplo rápido

Atualização 2

Observação: o acima não é o modo comum como uma tarefa em segundo plano do sistema se comunica com os usuários. Normalmente eu teria apenas que a tarefa escrevesse suas mensagens em um arquivo de log (e talvez usasse logger para escrever no syslog), então quem estiver interessado pode usar apenas tail -f logfilename para ver o status atual do processo em segundo plano. p>

Se você precisar chamar a atenção de alguém para a conclusão de uma tarefa, envie-a um e-mail ou acione um alerta de SNMP.

    
por 11.09.2012 / 11:17

Tags