如何在闲置 2 小时后关闭 Ubuntu?

如何在闲置 2 小时后关闭 Ubuntu?

运行:Xubuntu 14.04 32 位。

我读过几篇过时、无法正常工作、无法正常工作的文章,希望在这里和其他地方找到答案。我有一个脚本,在我将其设置为自动启动后,导致笔记本电脑在启动时关闭。

我还尝试安装 complexshutdown,尽管该工具在 2011 年就已失效,而且在 Lauchpad 上有一个错误,导致其确切选项不可用。它甚至没有安装在 14.04 上。

我正在寻找一个简单直接的脚本,该脚本经过实际测试并且可以运行,我可以将其放入自动启动中,它只检查活动(鼠标/键盘),如果 2 小时内没有活动,则关闭我的笔记本电脑。

谢谢。

答案1

这可能是最好的解决方案。无需调整和运行屏幕保护程序。

安装sudo apt-get install xprintidle

将此脚本放入自动启动:

#!/bin/bash

idletime=$((1000*60*60*2)) # 2 hours in milliseconds

while true; do
    idle=`xprintidle`
    echo $idle
    if (( $idle > $idletime )); then
        #sudo shutdown -P now
        dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
    fi
    sleep 1
done

评论和@Jobin 的回答确实让我再次调查自己,实际上我发现了一个未完成的脚本,xprinttime但脚本中没有任何循环。可能没有完成这个,因为我当时对 linux/bash 的了解不够。我也确实将我的脚本放在了 rc.local 或类似的东西中,从而触发了启动时的关机。感谢@Jobin 提醒如何在 XFCE 中添加启动应用程序,我已经知道这一点,但是......感谢 dbus 的东西,我从未见过,比关机更好,因为它不需要 root。

答案2

IdleAction这是一个老问题,但我想我会用 Ubuntu 21.04 中对我有用的方法回答它。您可以在文件中设置systemd/logind.conf

使用以下方法编辑文件:

sudo nano /etc/systemd/logind.conf

并添加:

IdleAction=poweroff
IdleActionSec=120min

我已经对其进行了测试IdleActionSec=1min并且机器按预期关闭。

答案3

在研究了一段时间不活动后关闭的多种方法后,似乎这xautolock是最简单的方法。所有功劳都归于斯帕霍克提到xautolock

谢谢斯尼特舍尔指出 xscreensaver。使用 xscreensaver,我可以手动指定在一定时间不活动后要做什么。要使用 xscreensaver,您需要使用以下命令安装它:

sudo apt-get install xscreensaver

或者从软件中心安装它,然后使用以下命令运行一次:

xscreensaver-demo

或者在仪表板上输入“xscreensaver”并打开“屏幕保护程序”。

这将创建一个~/.xscreensaver文件。打开它并搜索以下行:

programs:                                                                     \

并添加:

dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true \n\

就在

programs:                                                                     \

线。

您可以通过更改以 开头的行来指定应在多长时间后触发关机timout。将其修改为

timeout:        2:00:00

两小时后关机。

看看我的.xscreensaver文件这里

这将在两小时不活动后或您在脚本中指定的任何时间关闭您的机器。

笔记:

  • 看一下这个问题了解如何在启动时添加 xscreensaver。

  • 我尝试使用复杂的关机,但是错误这里似乎对我有影响,所以不可能发生。否则,应该有一个图形应用程序可以解决这个问题。

  • 这可以使用 xautolock 来实现,但是,红色动物战争指出,如果不修改源代码并重新编译,就不可能出现超过 1 小时的超时。

答案4

修改了 @redanimalwar 脚本以警告用户并提供取消关机的机会。对于测试,它使用 3 秒和一条简单消息。请根据您的喜好进行调整。HTH。

#!/bin/bash
#https://askubuntu.com/questions/442795/
#http://ubuntuforums.org/showthread.php?t=2172828

function showProgress(){
#
# Force Zenity Status message box to always be on top.
sleep 1 && wmctrl -r "Progress Status" -b add,above &

(
echo "# Shutting Down in 5" ; sleep 2
echo "25"
echo "# Shutting Down in 4" ; sleep 2
echo "50"
echo "# Shutting Down in 3" ; sleep 2
echo "75"
echo "# Shutting Down in 2" ; sleep 2
echo "99"
echo "# Shutting Down in 1" ; sleep 2
echo "# Shutting Down now" ; sleep 2
echo "100"

) |
zenity --progress \
  --title="Progress Status" \
  --text="First Task." \
  --percentage=0 \
 --auto-close

return $?

}


#idletime=$((1000*60*60*2)) # 2 hours in milliseconds
idletime=$((1000*3)) # test, 3seconds

while true; do
    idle=`xprintidle`
    echo $idle
    if (( $idle > $idletime )); then
        showProgress && \
        #sudo shutdown -P now
        #dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
        #echo for tests. use command above to actually shutdown
        echo shuting down the system. Just kidding  ^_^ \
        && exit 0
    fi
    sleep 1
done

相关内容