Я использую 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