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:
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:
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!