Я пытаюсь сэкономить электроэнергию, переключая рабочие столы в режим ожидания, когда они неактивны. Но многие настольные компьютеры также доступны через SSH их владельцами. Существует развернутое решение wakeonlan, позволяющее владельцам включать машину, но проблема в том, что машины снова автоматически приостанавливаются через 10 минут, даже если соединение SSH включено.
Я пытаюсь включить активные сеансы SSH в определения «активность».
Вопрос в том, можно ли это сделать, установив правило polkit? Можно ли это сделать, поместив скрипт, который выполняется до фактического приостановления, и прервет его, если будут найдены сеансы SSH? Мне нужен чистый законный способ сделать это. Если не это, то хакерские пути тоже приветствуются.
Текущее наивное хакерское решение: edit /usr/sbin/pm-suspend
:
#check for SSH sessions, and prevent suspending:
if [ "$(who | grep -cv "(:")" -gt 0 ]; then
echo "SSH session(s) are on. Not suspending."
exit 1
fi
Это служит цели. Но я не знаю, когда обновление перезапишет файл /usr/sbin/pm-suspend
. Я также не знаю, как это будет работать с другими реализациями приостановки, такими как tuxonice.
[
если вы пишете if who | grep -qv :0; then
(при условии, что у вас есть POSIX, соответствующий grep
GNU grep).
grep -cv :0
вместо прохожденияwc
?