Как отключить Ubuntu после (2 часа) простоя?
Работает: Xubuntu 14.04 32bit.
Я прочитал несколько устаревших, не работающих, работающих по-разному, что я хочу ответы здесь и в других местах. У меня был скрипт, который приводил к выключению моего ноутбука во время загрузки после того, как я установил его в автозапуск.
Я также попытался установить complexshutdown, несмотря на то, что этот инструмент умер в 2011 году и содержит ошибку на Lauchpad, из-за которой его точная опция недоступна. Это даже не установлено 14.04 здесь.
Так что, если я могу задать этот вопрос снова без наказания "дубликатом" ...
Я ищу простой прямой скрипт, который на самом деле протестирован и работает, и который я могу вставить в автозапуск, который ничего не делает, кроме проверки активности (мышь / клавиатура) и выключения моего ноутбука, если его не было в течение 2 часов.
Благодарю.
5 ответов
Это, наверное, лучшее решение. Нет необходимости для настройки экрана и запуска.
устанавливать 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.
Это старый вопрос, но я решил ответить на него тем, что работает для меня в Ubuntu 21.04. Вы можете установить
IdleAction
в твоей
systemd/logind.conf
файл.
Отредактируйте файл, используя:
sudo nano /etc/systemd/logind.conf
и добавить:
IdleAction=poweroff
IdleActionSec=120min
Я проверил это с
IdleActionSec=1min
и машина выключается, как и ожидалось.
После просмотра ряда вариантов выключения после определенного времени бездействия, кажется, что xautolock
это самый простой способ. Все благодарности Sparhawk за упоминание о xautolock
,
Спасибо user.dz за указание на 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, однако, как указывает redanimalwar, тайм-аут, превышающий 1 час, невозможен без изменения его исходного кода и перекомпиляции.
Это мой упрощенный скрипт, для этого необходимо, чтобы вы установили пакет "xprintidle" и изменили команду shutdown, чтобы можно было запускать без sudo/password.
sudo chmod u+s /sbin/shutdown
sudo apt-get install xprintidle
скрипт
#!/bin/bash
idletime=$((15*60*1000)) # 15 min in milliseconds
idle=0
while [ $idle -lt $idletime ];do
idle=`xprintidle`
sleep 1
done
shutdown -P now
Изменен скрипт @redanimalwar, чтобы предупредить пользователя и дать возможность отменить выключение. Для тестов используется 3 секунды и простое сообщение. Пожалуйста, настройте на свой вкус. НТН.
#!/bin/bash
#https://Ask-ubuntu.ru/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