延迟关机,直到 UbuntuOne 完成同步

延迟关机,直到 UbuntuOne 完成同步

当我以其他用户身份注销、关闭或重新启动计算机时,有时我会收到此消息

一些程序仍在运行

节目列表

等待程序完成。中断这些程序可能会导致您丢失工作

ubuntu 有没有办法在关闭之前自动检测这些程序是否已完成任务?我知道有些程序可能崩溃了。但其他一些程序,如乌班图系统关闭前可能需要一些额外的时间来同步


给你,这是解析输出。我不知道可以用它做什么,但我很高兴看到一些魔法!

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

我不确定这是否很好,你能想象在关机前必须同步 1Gb 的文件吗?将关闭信号发送给程序以便它们可以退出,如果还有进一步的工作,那么可以在再次启动后恢复,这不是更有意义吗?

即使是 Windows,在强制关闭程序之前也只允许 30 秒的时间。

我真的不明白这有什么用!如果我下令关机,我希望尽快关闭并启动它,而不是等待程序执行我不知道的事情。毕竟,启动关机是我的责任,我应该知道什么时候是合适的时间。

编辑(阅读下面的所有评论!):

这是检查 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 和 hf ;)

答案2

当您退出 gnome-session 时会出现一个对话框,并且有些应用程序就是不退出,但我不记得它是否允许您推迟关机直到某个进程完成。我不认为它允许,但我认为添加它应该不太难。

正如其他人指出的那样,您可以等待一段时间或直到某个时间点再关闭系统。您还可以做的另一件事是为此编写自定义脚本,但如果有人为此编写了应用程序,我并不感到惊讶。

相关内容