Delay shutdown até o UbuntuOne terminar de sincronizar

1

ao sair para um usuário diferente, desligar ou reiniciar a máquina, às vezes, posso receber essa mensagem

  

alguns programas ainda estão em execução

     
    

lista de programas

  
     

aguardando a conclusão dos programas. interromper estes programas pode causar   você perder o trabalho

Existe alguma maneira que o ubuntu possa detectar automaticamente quando esses programas completaram sua tarefa antes de fechar? Eu entendo que há um problema com programas que podem ter falhado. Mas alguns outros programas como o Ubuntuone podem precisar de algum tempo adicional para sincronizar antes que o sistema possa ser encerrado

Aqui está, esta é a saída de análise. Eu não tenho ideia do que pode ser feito com isso, mas estou muito animado para ver alguma mágica!

martin@ubuntu-desktop:~$ u1sdtool --status
State: QUEUE_MANAGER
    connection: With User With Network
    description: processing the commands pool
    is_connected: True
    is_error: False
    is_online: True
    queues: IDDLE

a única diferença quando o daemon está sincronizando é a última linha que pode se tornar

queues: WORKING

ou

queues: WORKING_ON_BOTH
    
por Martin 29.09.2011 / 17:06

2 respostas

3

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;)

    
por Bruno Pereira 29.09.2011 / 17:24
0

Existe um diálogo que aparece quando você está saindo do gnome-session e há aplicativos que simplesmente não param, mas não me lembro se isso permite que você adie o desligamento até que um certo processo seja concluído. Eu não acredito que sim, mas não deve ser muito difícil adicionar isso, eu acho.

Como outros apontaram, você pode esperar um determinado período de tempo ou até certo ponto no tempo antes de desligar o sistema. Outra coisa que você pode fazer é escrever um script personalizado, mas eu não ficaria chocado ao saber que alguém havia escrito um aplicativo para isso.

    
por Jo-Erlend Schinstad 03.10.2011 / 15:57