Eu não tenho certeza se isso seria bom, você pode imaginar se você tinha que w8 para 1Gb de arquivos a serem sincronizados antes do desligamento? Não faz mais sentido que os sinais de fechamento sejam enviados para os programas para que eles possam sair e se houver mais trabalho, então ele pode ser retomado depois da inicialização novamente.
Mesmo o Windows só permite 30 segundos antes de forçar o fechamento de programas para desligamento.
Eu realmente não vejo como isso pode ser útil! Se eu encomendar um desligamento eu quero que a coisa fechada o mais cedo possível e arrancar o mais cedo possível, não espere que os programas façam o que eu sei. Afinal, foi minha responsabilidade que iniciou o desligamento, eu deveria saber quando é um bom momento ou não.
Editar (leia todos os comentários abaixo!):
Aqui está o script que verifica o status atual do UbuntuOne e desliga apenas quando o status está ocioso.
#! /bin/bash
gracetime_given=false
while true; do
u1sdtool_status=$(u1sdtool --status | grep -o 'queues: IDLE')
timestamp=$(date +%H:%M:%S)
if [ "$u1sdtool_status" = "queues: WORKING" -o "$u1sdtool_status" = "queues: WORKING_ON_BOTH" ]; then
echo "$timestamp - UbuntuOne has not finished sync, waiting for conclusion."
echo "Re-checking in 30 seconds."
gracetime_given=false
sleep 30
elif [ "$u1sdtool_status" = "queues: IDLE" ]; then
if [ $gracetime_given = false ]; then
echo "u1sdtools seems to be idle at the moment..."
echo "Giving u1sdtool some grace time, rechecking in 10 seconds."
gracetime_given=true
sleep 10
else
echo "This is where you shutdown!!!"
sleep 5
sudo shutdown -h now
fi
else
echo "Something is really wrong!!!"
break
fi
done
Para usá-lo você precisa fazer o seguinte, no terminal você precisa usar sudo visudo
e adicionar esta linha no final do arquivo <yourusername> hostname=NOPASSWD: /sbin/shutdown -h now
para que nenhuma senha seja necessária para desligar seu computador usando a conta. / p>
Depois disso, você precisa salvar o script em qualquer lugar (), você precisa usar chmod 755 <nameofthescript.sh>
para torná-lo executável.
Você pode simplesmente executar o script e ver como ele funciona:
- obtém o status atual do UbuntuOne
- se não estiver ocioso, verifica novamente se está ocioso a cada 30 segundos
- se ocioso fornecer mais 10 segundos e verificar novamente se o status ainda está ocioso
- se ainda estiver ocioso, será encerrado usando
shutdown -h now
Espero que isso funcione e comente como você deseja no código, desde que você entenda que este é realmente o meu primeiro script bash!
Gl e hf;)