Por que esse script não é executado na inicialização?

5

Esse script funciona perfeitamente quando eu inicio manualmente. Como posso executá-lo na inicialização? A função do script é obter o Docky para o reinício automático em caso de falha.

Eu criei o script assim:

  • gedit ~/process_monitor.sh

Colocado a seguir ( encontrou no Ask Ubuntu ):

#!/bin/bash

if [[ -z "" ]];then
    echo "ERROR: must specify program"
    exit 1
fi

while (( 0 == 0 ));do
    $@ &
    pid='jobs -l | awk '{print }''
    wait $pid
done
  • Salva o arquivo.

  • Defina a permissão:

    chmod a+x ~/process_monitor.sh
    

Agora, quando eu executo assim, funciona perfeitamente:

~/process_monitor.sh docky

No entanto, quando adiciono o seguinte aos aplicativos de inicialização, isso não faz com que o script seja iniciado na inicialização. Bem, talvez sim, mas o roteiro não funciona.

/bin/bash ~/process_monitor.sh docky

Basicamente, há algum tipo de elemento gráfico que pisca na tela por meio segundo, mas nenhum outro sinal do script pode ser visto, e Docky não é reiniciado se for morto.

Como fazer isso funcionar? Tenho certeza que é extremamente básico.

Estou no Ubuntu 14.04.

    
por Revetahw 29.03.2016 / 14:30

2 respostas

10

Usando caminhos em um arquivo .desktop

O problema é que os aplicativos de inicialização criam um arquivo .desktop em ~/.config/autostart

Em um arquivo .desktop , você não pode usar caminhos relativos ou variáveis como ~ . Use caminhos absolutos em vez disso:

/bin/bash /absolute/path/to/process_monitor.sh docky
    
por Jacob Vlijm 29.03.2016 / 15:11
0

Esta é uma abordagem melhor

execute crontab -e insira esta linha na parte inferior

*/2 * * * * if [ ! 'pgrep docky' ] ; then /usr/bin/docky; fi

verifique se o comando /usr/bin/docky inicia o docky, é isso. Isso irá verificar se o docky está sendo executado a cada 2 minutos, caso contrário ele será iniciado.

    
por MRX 29.03.2016 / 14:44