시작시 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.