Задержка выключения до окончания синхронизации UbuntuOne

при выходе из системы другому пользователю, выключении или перезапуске машины иногда я могу получить это сообщение

, некоторые программы все еще работают

список программ [ 115]

ожидает завершения программ. прерывание этих программ может привести к потере работы

Есть ли способ, которым ubuntu может автоматически определить, когда эти программы выполнили свою задачу перед закрытием? Я понимаю, что существует проблема с программами, которые могли произойти сбой. Но некоторым другим программам, таким как Ubuntuone , может потребоваться некоторое дополнительное время для синхронизации, прежде чем система сможет завершить работу


Вот, пожалуйста, это результат анализа. Я понятия не имею, что можно с этим сделать, но я очень рад видеть какое-то волшебство!

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

единственная разница, когда демон синхронизируется, - это последняя строка, которая может стать

queues: WORKING

или

queues: WORKING_ON_BOTH
1
задан 26 July 2012 в 22:01

2 ответа

Я не уверен, что это было бы неплохо. Можете ли вы представить, что вам нужно было w8 для синхронизации файлов 1 Гб перед выключением? Разве не имеет больше смысла, что сигналы закрытия посылаются программам, чтобы они могли выйти, и если есть дальнейшая работа, то она может быть возобновлена ​​после повторной загрузки.

Даже Windows позволяет только 30 секунд, прежде чем она принудительно закрывает программы для закрытия.

Я действительно не понимаю, как это может быть полезно! Если я заказываю завершение работы, я хочу, чтобы эта штука была закрыта как можно скорее, и загружалась как можно скорее, а не ждать, пока программы сделают idontknowwhat. В конце концов, именно моя ответственность привела к закрытию, я должен знать, когда это хорошее время или нет.

Редактировать (прочитать все комментарии ниже!):

Вот скрипт, который проверяет текущее состояние UbuntuOne и выключается, только когда статус простаивает.

#! /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

Чтобы использовать его, вам нужно сделать следующее: на терминале вам нужно использовать sudo visudo и добавить эту строку в конец файла <yourusername> hostname=NOPASSWD: /sbin/shutdown -h now, чтобы при выключении компьютера с помощью пароля не требовалось счет.

После этого вам нужно сохранить скрипт в любом месте (), вам нужно использовать chmod 755 <nameofthescript.sh>, чтобы сделать его исполняемым.

Затем вы можете просто запустить скрипт и посмотреть, как он работает:

  • получает текущее состояние UbuntuOne
  • , если не в режиме ожидания, повторно проверяет, если он простаивает каждые 30 секунд
  • , если в режиме ожидания это даст еще 10 секунд, и перепроверить, если статус все еще находится в режиме ожидания
  • , если он все еще находится в режиме ожидания, он отключится с помощью shutdown -h now

Надеюсь, что это работает и комментируйте, как вы хотите, код, если вы понимаете, что это на самом деле мой самый первый скрипт bash!

Gl and hf;)

0
ответ дан 26 July 2012 в 22:01

Есть диалоговое окно, которое появляется, когда вы выходите из gnome-сессии, и есть приложения, которые просто не будут закрываться, но я не помню, позволяет ли это отложить завершение работы до завершения определенного процесса. Я не верю, что это так, но это не должно быть слишком сложно добавить это, я думаю.

Как уже отмечали другие, вы можете подождать определенное время или до определенного момента времени, прежде чем выключить систему. Еще одна вещь, которую вы можете сделать, это написать собственный сценарий для него, но я не буду шокирован, узнав, что кто-то написал приложение для этого.

0
ответ дан 26 July 2012 в 22:01

Другие вопросы по тегам:

Похожие вопросы: