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?

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.