выключение особым образом, если никто не использует компьютер

У меня проблема, потому что мои друзья, с которыми я живу, часто забывают выключить наш компьютер. Я не знаю, как использовать решение, чтобы притвориться. Установлена ​​система Ubuntu.

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

Есть ли решение этой проблемы?

3
задан 1 May 2012 в 22:51

4 ответа

Это рабочий сценарий того, что вы хотите сделать:

#!/bin/bash
while true; do
   sleep 59m
   zenity --question --text "Are you using the pc (click anything)?"&
   zenity_id=$!
   #the user has 1 minute to answer, otherwise PC will shut down
   sleep 1m
   if kill $zenity_id 2> /dev/null; then 
      #zenity was still running, shutdown the pc
      dbus-send --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RequestShutdown
   fi
done

Каждый раз в час отображается всплывающее окно с вопросом «Вы еще здесь?», Если пользователь нажимает на что-то, то он не выключается еще один час (через час снова появляется всплывающее окно), но если прошло более 1 минуты без взаимодействия с диалоговым окном, компьютер автоматически выключается. Чтобы запустить это при запуске, создайте файл с вышеуказанным кодом и сделайте его исполняемым (щелкните правой кнопкой мыши -> свойства -> разрешения -> разрешить запуск файла как программы) и нажмите кнопку питания в правом верхнем углу экрана, выберите автозагрузку приложения и добавьте этот скрипт.

0
ответ дан 1 May 2012 в 22:51

Один из способов сделать это - эмулировать нажатие кнопки питания. Затем появится следующее диалоговое окно и выключит компьютер через 60 секунд. enter image description here

Для этого используйте acpi_fakekey 116, который «нажмет» кнопку выключения (номер 116). (По крайней мере 116 - моя кнопка выключения. Если она не работает на вашем компьютере, попробуйте установить evtest и запустить ее, пока вы нажимаете кнопку)

Чтобы автоматизировать это каждый час, добавьте его в корневой каталог root следующим образом:

sudo crontab -e и добавьте следующую строку:

0 * * * * /usr/bin/acpi_fakekey 116

Это будет нажимать кнопку на 0-й минуте каждого часа каждого дня каждой недели каждой недели. месяц.

0
ответ дан 1 May 2012 в 22:51

Кажется утомительным заставлять кого-то нажимать кнопку каждый указанный интервал.

Вы можете позволить gnome-screensaver работать на вас и проверить, как долго он работает.

В сценарии вы можете сделать что-то вроде следующего:

#!/bin/bash

pidof X || exit #not running X!

export DISPLAY=":0" # use current display
DURATION="`gnome-screensaver-command -t | awk '{print $7}'`"

if [ $DURATION -gt 3600 ]; then #idle for an hour
  shutdown -h now
fi

Это ОЧЕНЬ базовый пример, который может расширить любой. Поместите его в задание cron или запустите его в режиме демона с помощью вызовов while / sleep.

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

0
ответ дан 1 May 2012 в 22:51

Вы можете написать простой скрипт , используя команду shutdown 0 после приглашения.

Я должен добавить, что вы можете использовать команду sleep в цикле, чтобы реализовать ожидание.

0
ответ дан 1 May 2012 в 22:51

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

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