`pwd -P`, запрещающий запуск bash-скрипта в supervisord
Я управляю надзирателем, чтобы выполнить Gunicorn. Моя проблема в том, что когда мой скрипт содержит CURR_DIR=`pwd -P` и запускает скрипт через supervisord, он останавливает процесс. Мой скрипт находится в /var/www/conf
и я ожидаю, что `PWD P`, чтобы вернуться /var/www/conf
когда я запускаю скрипт Я пытался PWD, и это не возвращает /var/www/conf
или. `Pwd -P` работает, когда я запускаю скрипт вне супервизора.
Но если я жестко закодирую CURR_DIR=/some/dir, то supervisord запускает скрипт без проблем.
Вот мой сценарий
#!/bin/bash
NAME=myproj
GUNICORN_EXEC=/home/user/.virtualenvs/tscoop/bin/gunicorn
CURRENT_DIR=`pwd -P` # does not work: causes "STOPPED" error in supervisord
CURRENT_DIR=/var/www/conf # works ok
export GUNICORN_CONF=${CURRENT_DIR}/gunicorn.conf
echo "Starting $NAME"
exec $GUNICORN_EXEC -c $GUNICORN_CONF
exit 0
Вот сообщение об ошибке, которое я получаю из оболочки supervisorctl:
supervisor> status
myscript STOPPED Aug 27 09:57 PM
Как я могу сделать так, чтобы я мог запустить supervisord и запустить вышеупомянутый скрипт?
1 ответ
Вы не можете делать то, что хотите, потому что значение, возвращаемое pwd, не гарантирует того, что вы ожидаете.
Расположение скрипта не в его рабочем каталоге
$cat test
#!/bin/bash
pwd
$ ./test
/home/iain
$ cd /tmp
$/home/iain/test
/tmp
Увидеть? pwd возвращает текущий каталог оболочки, которую я использовал для вызова тестовой команды. Это то, что происходит с вами, вы видите значения, унаследованные от супервизора.
Если вы прочитаете документ, ссылки на него Денниса предоставят полезную информацию о том, как вы можете решить свою проблему.