Получение & ldquo; неспособность stat // bundle (Нет такого файла или каталога) & rdquo; даже несмотря на то, что файл существует

Я надеюсь, что это просто проблема с тем, что я не понимаю, как работает переменная $ PATH. Я использую Ubuntu 14.04. Я пытаюсь запустить рельсы через сервер единорога. У меня есть следующая конфигурация для моего сервера unicorn

# Change parameters below to appropriate values and set CONFIGURED to yes. CONFIGURED=yes # Default timeout until child process is killed during server upgrade, # it has *no* relation to option "timeout" in server's config.rb. TIMEOUT=60 # Path to your web application, sh'ld be also set in server's config.rb, # option "working_directory". Rack's config.ru is located here. APP_ROOT=/home/rails/mydomain # Server's config.rb, it's not a rack's config.ru CONFIG_RB=/etc/unicorn.conf # Where to store PID, sh'ld be also set in server's config.rb, option "pid". PID=/var/run/unicorn.pid RAILS_ENV="production" UNICORN_OPTS="-D -c $CONFIG_RB -E $RAILS_ENV" export GEM_HOME=/home/rails/.gem export GEM_PATH=$GEM_HOME/ruby/2.4.0 PATH=$GEM_HOME/bin:/usr/local/rvm/rubies/ruby-2.4.0/bin/:/usr/local/sbin:/usr/bin:/bin:/sbin:/usr/local/rvm/bin which bundle cd $APP_ROOT DAEMON="bundle exec $GEM_PATH/bin/unicorn"

Когда я иду запускать мой сервер единорога, я получаю эту ошибку

myuser@mydomain:~$ sudo service unicorn restart /home/rails/.gem/bin/bundle * Restarting Unicorn web server unicorn start-stop-daemon: unable to stat //bundle (No such file or directory)

Почему он жалуется на «bundle ( Нет такого файла или каталога), «когда я только что напечатал это в заявлении« какой »? Очевидно, что файл существует. Я добавил файл /etc/init.d/unicorn ниже, если это полезно.

#!/bin/sh ### BEGIN INIT INFO # Provides: unicorn # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: unicorn initscript # Description: unicorn ### END INIT INFO set -e NAME=unicorn DESC="Unicorn web server" . /lib/lsb/init-functions if [ -f /etc/default/unicorn ]; then . /etc/default/unicorn fi PID=${PID-/run/unicorn.pid} run_by_init() { ([ "${previous-}" ] && [ "${runlevel-}" ]) || [ "${runlevel-}" = S ] } exit_with_message() { if ! run_by_init; then log_action_msg "$1 Not starting." fi exit 0 } check_config() { if [ $CONFIGURED != "yes" ]; then exit_with_message "Unicorn is not configured (see /etc/default/unicorn)." fi } check_app_root() { if ! [ -d $APP_ROOT ]; then exit_with_message "Application directory $APP_ROOT is not exist." fi } set -u 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 log_end_msg 0 || true else log_end_msg 1 || true fi ;; stop) log_daemon_msg "Stopping $DESC" $NAME || true if start-stop-daemon --stop --signal QUIT --quiet --oknodo --pidfile $PID; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; force-stop) log_daemon_msg "Forcing stop of $DESC" $NAME || true if start-stop-daemon --stop --quiet --oknodo --pidfile $PID; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; restart|force-reload) log_daemon_msg "Restarting $DESC" $NAME || true start-stop-daemon --stop --quiet --oknodo --pidfile $PID sleep 1 if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $UNICORN_OPTS; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; reload) log_daemon_msg "Reloading $DESC" $NAME || true if start-stop-daemon --stop --signal HUP --quiet --oknodo --pidfile $PID; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; reopen-logs) log_daemon_msg "Relopening log files of $DESC" $NAME || true if start-stop-daemon --stop --signal USR1 --quiet --oknodo --pidfile $PID; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; status) status_of_proc -p $PID $DAEMON $NAME && exit 0 || exit $? ;; *) log_action_msg "Usage: $0 <start|stop|restart|force-reload|reload|force-stop|reopen-logs|status>" || true exit 1 ;; esac
2
задан 9 April 2017 в 20:53

3 ответа

Причина в том, что путь выполнения, переданный в start-stop-daemon, должен быть полностью квалифицирован. Исправление заключается в установке

DAEMON="/path/to/bundle exec $GEM_PATH/bin/unicorn"

Вы можете проверить это, используя этот простой пример

$ sudo start-stop-daemon --start --oknodo --user lathiat --pidfile /tmp/pid1 --exec sleep 60 -- [sudo] password for lathiat: start-stop-daemon: unable to stat //sleep (No such file or directory) $ sudo start-stop-daemon --start --oknodo --user lathiat --pidfile /tmp/pid1 --exec /bin/sleep 60 --
0
ответ дан 18 July 2018 в 15:27

Причина в том, что путь выполнения, переданный в start-stop-daemon, должен быть полностью квалифицирован. Исправление заключается в установке

DAEMON="/path/to/bundle exec $GEM_PATH/bin/unicorn"

Вы можете проверить это, используя этот простой пример

$ sudo start-stop-daemon --start --oknodo --user lathiat --pidfile /tmp/pid1 --exec sleep 60 -- [sudo] password for lathiat: start-stop-daemon: unable to stat //sleep (No such file or directory) $ sudo start-stop-daemon --start --oknodo --user lathiat --pidfile /tmp/pid1 --exec /bin/sleep 60 --
0
ответ дан 24 July 2018 в 20:38

Причина в том, что путь выполнения, переданный в start-stop-daemon, должен быть полностью квалифицирован. Исправление заключается в установке

DAEMON="/path/to/bundle exec $GEM_PATH/bin/unicorn"

Вы можете проверить это, используя этот простой пример

$ sudo start-stop-daemon --start --oknodo --user lathiat --pidfile /tmp/pid1 --exec sleep 60 -- [sudo] password for lathiat: start-stop-daemon: unable to stat //sleep (No such file or directory) $ sudo start-stop-daemon --start --oknodo --user lathiat --pidfile /tmp/pid1 --exec /bin/sleep 60 --
0
ответ дан 31 July 2018 в 23:40

Другие вопросы по тегам:

Похожие вопросы: