PATH-Probleme für init.d-Skripte beim Start

8

Ich habe ein einfaches Skript, das eine Einhorninstanz startet (unter 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

Es verhält sich korrekt, wenn es aufgerufen wird: /etc/init.d/unicorn_boot.sh start

Ich möchte, dass es beim Booten startet, also lief ich: update-rc.d -f unicorn_boot.sh defaults

Beim Neustart wird folgende Fehlermeldung angezeigt:

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

Ich habe den bundleBefehl überprüft und er ist installiert /usr/local/bin, genau wie der rubyBefehl.

Es scheint, dass das beim Booten PATHnoch nicht beinhaltet /usr/local/bin. Wie kann ich das beheben?

Peterdk
quelle

Antworten:

9

Initscripts sind dafür verantwortlich, selbst einen geeigneten Pfad festzulegen. Setzen Sie die $PATHVariable oben im Skript:

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
mgorven
quelle
OK danke. Wusste das nicht. Es ist jetzt behoben!
Peterdk
Alternativ sollten Sie in der Lage sein, PATH="$PATH:/usr/local/bin"Ihre erforderlichen Pfade an die Variable anzuhängen, anstatt die Variable $ PATH vollständig zu überschreiben.
Jaseeey
Sich auf einen externen $ PATH zu verlassen, ist ein Sicherheitsrisiko. Fügen Sie keinen vorhandenen Pfad hinzu! Erstellen Sie Ihre eigene mit der genauen Liste, die Sie benötigen.
Brendan Byrd