Init.d todos os scripts em /etc/pm/sleep.d
serão executados antes de entrar no modo de espera e, se algum deles retornar um estado de não-zero, o modo de espera não será inserido.
Assim, você pode colocar um script lá que procure por todos os processos que você deseja reconhecer como 'PC ainda está em uso' e simplesmente retornar 1 se algum deles ainda estiver em execução - ou qualquer outra condição que você possa para roteiro.
Para ssh você pode usar netstat -tnpa | grep ESTABLISHED.*sshd
para verificar se há conexões abertas e para o samba você pode analisar a saída de smbstatus
Editar: Se você estiver usando
systemd :
crie um /etc/systemd/system/dontsleep.service
como este
[Unit]
Description=Inhibit suspend in case of [some] activity
Before=sleep.target
[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c "some command that that returns an failure exit status if you don't want the pc to go into sleep mode (e.g exit 1)"
[Install]
RequiredBy=sleep.target
Agora, com RequiredBy= & Before=sleep.target
, seu novo dontsleep.service
tornou-se uma dependência para o sleep.target
e o systemd não pode entrar no modo de suspensão até que este serviço seja executado com êxito (por exemplo, exit 0
)
Não se esqueça de ativá-lo com systemctl enable dontsleep.service
(ideia roubada daqui: link )