Onde colocar scripts que são executados quando o computador é reiniciado?

8

Preciso bloquear a tela quando meu computador acordar da suspensão da memória,

Então, tentei colocar o seguinte script em /usr/lib/pm-utils/sleep.de /etc/pm/sleep.d, mas ele nunca foi executado,

#!/bin/sh

case "$1" in
    hibernate|suspend)
        ;;
    thaw|resume)
        vlock -ans
        ;;
    *) exit $NA
        ;;
esac

PS É pm-suspendnão pm-hibernate.

EDITAR

Tentei o serviço systemd também, sem sorte:

# /etc/systemd/system/[email protected]
[Unit]
Description=User resume actions
After=suspend.target

[Service]
User=root
Type=simple
ExecStart=vlock -ans

[Install]
WantedBy=suspend.target

E eu liguei systemctl enable [email protected]também, vlock não foi chamado ainda.

margarida
fonte
3
Tem certeza de que não será executado? Você pode tentar apenas registrá-lo ou fazer algo parecido comecho executed script >> /tmp/resume
Ulrich Dangel

Respostas:

2

O AFAIK ExecStartdeseja um caminho completo para o executável.

Tente com o ExecStart=/usr/bin/vlock -ansseu/etc/systemd/system/[email protected]

lviggiani
fonte
1

Você definiu as permissões e o proprietário conforme descrito no wiki?

Verifique se o script é executável (chmod 755) e pertence ao root: root

mibitzi
fonte
1

Você está tentando criar seu próprio gancho, certo? Estou lendo a documentação do Arch Linux no pm-utils (link abaixo) e gostaria de verificar estas coisas primeiro:

  • nome do script (comece com dois dígitos, obedecendo ao esquema nos documentos)
  • local do script: /etc/pm/sleep.d é o lugar certo
  • modos de script: chmod + x /etc/pm/sleep.d/66scriptname

Se você tem certeza de que está certo, considere o próprio script.

Aqui está um link para os documentos que estou lendo sobre isso: https://wiki.archlinux.org/index.php/pm-utils#Creating_your_own_hooks

Seu script não é muito parecido com o que eles mostram lá. Você chama / bin / sh em vez de / bin / bash. Você usa double-qoutes em torno de US $ 1 e eles não. Você combina opções e elas não. Tudo isso deve estar bem, certo? Exceto, talvez, sh versus bash.

Que tal colocar algumas instruções de logger ou eco para depuração e verificar os logs para ver se o script está sendo iniciado. E se for, até onde está chegando.

Mike Diehn
fonte
O systemd funciona com pm-utils? Eu não tenho certeza sobre isso ;-)
daisy
0

Eu descobri todos os diretórios fazendo um "sudo strace pm-hibernate 2>/root/myfile.log", ou você pode substituir o pm-hibernate por pm-suspend. Depois de algum tempo, a máquina será desligada. Então, quando você ligar / retomar novamente, leia o myfile.log e nele estão todos os scripts, configurações e arquivos de log acessados ​​/ gravados.

Para o meu Fedora 20 eles são:

/usr/lib64/pm-utils/pm-functions
/usr/lib64/pm-utils/defaults
/usr/lib64/pm-utils/module.d
/etc/pm/config.d
/etc/pm/pm-suspend.config.d
/var/run/pm-utils/locks/pm-suspsnd.lock
/var/run/pm-utils/pm-suspend/storage/parameters

etc e vários outros diretórios.

Ajude a si mesmo com sua distribuição específica de versão específica (o Fedora 20 está usando o systemd btw).

Peter Teoh
fonte