SSH连接打开时,防止机器hibernate

我试图通过在桌面处于非活动状态时将桌面切换为挂起模式来节省电量。 但是许多桌面也是由其所有者通过SSH访问的。 部署了一个wakeonlan解决方案,使所有者能够打开机器,但问题是机器将在10分钟内再次自动挂起,即使SSH连接已打开。

我想要做的是在“活动”定义中包含活动的SSH会话。

问题是可以通过设置polkit规则来完成吗? 是否可以通过放置在实际挂起之前运行的脚本来完成,如果找到SSH会话则中止它? 我需要一种干净合法的方式来做到这一点。 如果不是这样,那么也欢迎hacky方式。

目前天真的hacky解决方案:编辑/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这样的其他挂起实现是如何工作的。

查看pm-action(8)并在“FILES”部分中搜索/etc/pm/sleep.d 。 如果其中一个脚本以非零退出状态返回,则会阻止暂停。

更新说明以便清晰:

  1. 所以创建一个文件/etc/pm/sleep.d/05_ssh_keepawake

  2. 把一个shebang ( #!/bin/sh )和问题中提到的代码放在这个文件中。

  3. 设置执行权限:

     chmod +x /etc/pm/sleep.d/05_ssh_keepawake