내 쉘 스크립팅 지식이 약간 부족하지만 /etc/init.d/unicorn(Ubuntu 14.04)에 정의된 데몬을 다음과 같이 실행하고 싶습니다.
case "$1" in
start)
check_config
check_app_root
log_daemon_msg "Starting $DESC" $NAME || true
if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $UNICORN_OPTS; then
별도의 파일 /etc/default/unicorn에서 다음 변수를 정의했습니다.
APP_ROOT=/home/rails/myproject
...
UNICORN_OPTS="-D -c $CONFIG_RB -E $RAILS_ENV"
...
DAEMON="cd $APP_ROOT; $GEM_HOME/bin/bundle exec $GEM_PATH/bin/unicorn"
"$GEM_HOME/bin/bundle"이 실행되어야 하는 디렉토리이기 때문에 "cd $APP_ROOT"를 추가했습니다. 그런데 서비스를 시작하면 다음과 같은 오류가 발생합니다.
myuser@myproject:~$ sudo service unicorn restart
/home/rails/.gem/bin/bundle
* Restarting Unicorn web server unicorn
start-stop-daemon: unable to stat //cd (No such file or directory)
원하는 디렉터리에서 명령을 실행할 수 있도록 옵션을 저장하는 다른 방법이 있습니까?
답변1
당신이 하고 있는 일에 몇 가지 문제가 있는 것 같습니다.
--exec
start-stop-daemon
하나의 매개변수만 허용하지만 매개변수는 의 끝에 전달될 수 있습니다--
.인수는
--exec
식별자로도 사용됩니다.start-stop-daemon
실행 중인 인스턴스가 있는지 확인하세요(이렇게 하면/bin/sh
매우 좋지 않은 후보가 됩니다.
따라서 머신당 하나의 인스턴스를 실행할 것으로 예상되는 쉘 스크립트를 작성하십시오. --exec
.in 에 절대 경로를 전달합니다 --
.