시작시 init.d 스크립트의 PATH 문제


8

우분투 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

호출 될 때 올바르게 작동합니다. /etc/init.d/unicorn_boot.sh start

부팅시 시작하기를 원했기 때문에 다음을 실행했습니다. update-rc.d -f unicorn_boot.sh defaults

지금 재부팅하면 다음 오류가 발생합니다.

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

bundle명령을 확인했으며 명령과 /usr/local/bin동일하게 설치되었습니다 ruby.

부팅시 PATH아직 포함되지 않은 것 같습니다 /usr/local/bin. 이 문제를 어떻게 해결할 수 있습니까?

답변:


9

초기화 스크립트는 적절한 경로를 스스로 설정해야합니다. $PATH스크립트 상단에 변수를 설정하십시오 .

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

알았어 고마워. 몰랐어요 이제 수정되었습니다!
Peterdk

또는 PATH="$PATH:/usr/local/bin"$ PATH 변수를 완전히 대체하지 않고 변수에 필요한 경로를 추가 하도록 설정할 수 있어야합니다 .
jaseeey

$ PATH 외부에 의존하는 것은 보안 위험입니다. 기존 PATH를 추가하지 마십시오! 필요한 정확한 목록으로 자신을 만드십시오.
Brendan Byrd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.