Назад | Перейти на главную страницу

Скрипт выключения

Я использую Ubuntu 11.10.

Я хотел бы сделать сценарий оболочки, который выключает компьютер, если никто не входит в систему в течение часа.

Но если кто-то войдет в систему (локально или через удаленное SSH-соединение), то я не хочу выключать компьютер ..

И я был бы очень признателен, если бы кто-нибудь мог сообщить мне, что мне делать, чтобы применить этот сценарий.

Большое спасибо!

В среде рабочего стола есть настройки, которые управляют такими вещами, как режимы ожидания и гибернации. Обычно этого достаточно, чтобы просто сэкономить электроэнергию и перевести HD в спящий режим.

Однако, чтобы ответить на заданный вами вопрос, сценарий может легко выполнить простую проверку. Для демонстрации этого сценария требуется немного больше усилий, но вот пример на Ruby, чтобы вы начали:

last_user = Time.now
loop do
  last_user = Time.now if `who | wc -l`.to_i > 0
  system 'sudo shutdown -P +2' if Time.now - last_user >= 60 * 60
  sleep 10
end

Он не всегда обнаруживает короткие логины менее 10 секунд, как написано ...

В bash это немного сложнее, особенно без использования && для if, но эквивалент выглядит примерно так:

last_user=`date +%s`
while :; do
  if [ `who | wc -l` -gt 0 ]; then
    last_user=`date +%s`
  fi
  if [ $((`date +%s` - $last_user)) -ge 3600 ]; then
    sudo shutdown -P +2
  fi
  sleep 10
done