Problemi PATH per gli script init.d all'avvio


8

Ho un semplice script che avvia un'istanza di unicorno (su Ubuntu 12.04LTS).

#!/bin/sh

case "$1" in
    start)
       echo "starting"
       cd /path && bundle exec unicorn -c /path/config/unicorn.rb -D -E production
      ;;
     stop)
      echo "Stopping Unicorn Instances"
      kill `cat /tmp/unicorn.pid`
    ;;
    restart)
    echo "sending USR2 to all unicorns"
    kill -s USR2 `cat /tmp/unicorn.pid`
    ;;
esac
exit 0

Si comporta correttamente quando chiamato: /etc/init.d/unicorn_boot.sh start

Voglio che si avvii all'avvio, quindi ho eseguito: update-rc.d -f unicorn_boot.sh defaults

Quando riavvio ora ottengo il seguente errore:

/etc/rc2.d/S20unicorn_boot.sh: 10: /etc/rc2.d/S20unicorn_boot.sh: bundle: not found

Ho controllato il bundlecomando, ed è installato /usr/local/bin, lo stesso per il rubycomando.

Sembra che all'avvio PATHnon sia ancora incluso /usr/local/bin. Come posso risolvere questo problema?

Risposte:


9

Gli initscript sono responsabili dell'impostazione di un percorso appropriato. Imposta la $PATHvariabile nella parte superiore dello script:

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin

Ok grazie. Non lo sapevo. Ora è riparato!
Peterdk,

In alternativa, dovresti essere in grado di impostare PATH="$PATH:/usr/local/bin"per aggiungere i percorsi richiesti alla variabile, anziché sovrascrivere interamente la variabile $ PATH.
Jaseeey,

Affidarsi a un $ PATH esterno è un rischio per la sicurezza. Non aggiungere un PERCORSO esistente! Crea il tuo con l'elenco esatto di cui hai bisogno.
Brendan Byrd,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.