Por que meu script não funciona no boot?

1

Eu tenho um script simples:

while [[ true ]]
do
    status="$(xset q | grep 'Monitor is Off')"
    if [[ $status != '' ]] ; then
        #shutdown the computer
        dbus-send --system --print-reply --dest=org.freedesktop.login1.Manager.Poweroff" boolean:true
    fi
done

Então, sempre que minha tela sai do meu desligamento do computador. Este script funciona bem, quando eu inicio no terminal, mas eu quero executá-lo a cada inicialização. Eu coloquei um link simbólico em rc5.d e parece funcionar. pgrep poweroff show script PID mas, acho! se a tela sair do pc, não desligue. Eu não entendo o porquê.

    
por rosita la cava 22.04.2017 / 18:05

1 resposta

1

% bl0ck_qu0te%

Seu script é iniciado durante a inicialização, portanto, não seguindo o processo de login, portanto, não possui variáveis de ambiente ou talvez um conjunto muito limitado. Eu confio que não há DISPLAY, talvez nem mesmo um caminho. Portanto, o comando xset falhará, status permanecerá vazio, o dbus-send nunca será alcançado.
Você pode verificar minha explicação alterando o comando xset no seu script para:

% bl0ck_qu0te%

depois reinicie e verifique o arquivo /tmp/output.err

% bl0ck_qu0te%

Eu não tenho a solução exata para você. Você terá que fazer algum trabalho e várias reinicializações e verificações de erros.
Eu te aconselho a mudar o nome do seu roteiro. Você nomeou poweroff e eu também, esquecendo que é um comando do sistema. Então adivinhe o que aconteceu quando eu corri meu script ...

Ok, primeira ação.
Na parte superior do seu script, adicione:

% bl0ck_qu0te%

Dentro do loop while adicione

% bl0ck_qu0te%

comando para evitar um enorme arquivo /tmp/output.err.

Reinicialize seu sistema e verifique os arquivos de saída em / tmp. Se houver um output.err vazio, o comando xset não falhará. Se ele falhar, você precisará definir mais variáveis de ambiente no seu script. Talvez uma ou mais das variáveis XDG_, desculpe, mas eu não sou muito experiente com o X11. Boa sorte!

    
por user680858 22.04.2017 / 20:35