O ambiente de trabalho terá configurações que controlam coisas como modos de espera e hibernação. Isso geralmente é bom o suficiente para economizar eletricidade e colocar o HD para dormir.
No entanto, para responder à pergunta que você fez, um script poderia facilmente fazer um teste simples. Para daemonizar este script é um pouco mais complicado, mas aqui está um exemplo em Ruby para você começar:
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
Ele nem sempre detecta logins breves com menos de 10 segundos, conforme escrito ...
É um pouco mais complicado no bash, especialmente sem usar &&
para if
, mas o equivalente é algo assim:
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