Mint linut: script de encerramento usando zenity não funciona

0

Eu escrevi um script simples que é executado quando estou desligando meu computador. Coloquei o script no diretório /etc/init.d/ e o vinculei novamente a /etc/rc0.d/ . O link é link flexível e seu nome é K99checkout-reminder .

Veja o resultado da listagem de arquivos em /etc/rc0.d/ :

lrwxrwxrwx 1 root root 24 Nov 17 18:10 K99checkout-reminder -> ../init.d/alert_checkout

Este é o conteúdo de alert_checkout :

#!/bin/bash
export DISPLAY=:0.0
if zenity --question --text="I guess you have a nice working day?"; then
    zenity --info --text="Gr8! Now please
          _______

               |
               |
               |
               v

DO NOT forget to CHECKOUT your working time at door.\n\nSee you next day!"
else
    zenity --info --text="Thats really sad.\n\nGo checkout your time to finish your working.\n\nHave good dinner, go sleep early and have a nice day!"
fi

Eu tentei executar o script em root privilege e ele funciona bem:

$ /etc/rc0.d $ sudo ./K99checkout-reminder

Recebi uma caixa de alerta!

Há algo que eu esteja sentindo falta aqui?

Obrigado.

    
por petwho 17.11.2014 / 12:17

4 respostas

0

Tente alterar o proprietário, talvez se funcionar depois disso, o que é uma permissão. As permissões podem ser complicadas, mesmo que tenham acesso total às vezes.

    
por 20.11.2014 / 03:30
0

tente adicionar \ símbolo antes dos finais de linha no texto zenity, desta forma:

#!/bin/bash
export DISPLAY=:0.0
if zenity --question --text="I guess you have a nice working day?"; then
zenity --info --text="Gr8! Now please \
      _______\
\
               |\
               |\
               |\
               v\
\
DO NOT forget to CHECKOUT your working time at door.\n\nSee you next day!";
else
zenity --info --text="Thats really sad.\n\nGo checkout your time to finish your         working.\n\nHave good dinner, go sleep early and have a nice day!"
fi

ou substitua os novos símbolos de linha por \ n escapes.

    
por 20.11.2014 / 11:59
0

Por favor, note que há uma diferença entre executar sob privilégios de root e executando sob root user . Se você tentou rodá-lo assim:

sudo ./alert_checkout

funcionou, pois o Real UID ainda estava definido para o usuário, com apenas o UID efetivo sendo alterado para root. No entanto, quando executado como um script init.d , ele é executado sob o usuário root , portanto, os dois UIDs são definidos como root .

Isso é consfusing para zenity , já que ele precisa exibir a mensagem dentro da sua sessão de usuário. Por isso, é necessário que o Real ID corresponda ao seu usuário.

Se você só precisa disso para trabalhar em uma conta de usuário específica, basta editar o script e executar o zenity em su <user> -c <zenity cmd> .

    
por 20.11.2014 / 12:18
0

Acho que o link que você está mostrando é um link simbólico ou link simbólico.

Quando o sistema está sendo desligado, acho que ele executa o Kill inits em ordem numérica, para que

K01 ... é executado antes de k02 ...

Se você estiver executando este script como K99 ...

Então o gerenciador de janelas não seria desativado?

Você já tentou executar seu script como:

K01checkout-reminder 
    
por 21.11.2014 / 03:17