![如何在闲置 2 小时后关闭 Ubuntu?](https://linux22.com/image/851907/%E5%A6%82%E4%BD%95%E5%9C%A8%E9%97%B2%E7%BD%AE%202%20%E5%B0%8F%E6%97%B6%E5%90%8E%E5%85%B3%E9%97%AD%20Ubuntu%EF%BC%9F.png)
运行: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
文件这里。
这将在两小时不活动后或您在脚本中指定的任何时间关闭您的机器。
笔记:
答案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