Команда не выполняется на запуске

Я хочу запустить сервер единорога на запуске сервера Ubuntu. Я изменил файл /etc/rc.local иметь это:

echo 'test' >> sudo /tmp/unicorn
test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
RAILS_ENV=staging
/etc/init.d/unicorn_lescollectionneurs start >> sudo /tmp/unicorn
exit 0

Когда я выполняю файл, он работает, моя начальная загрузка сервера, но нет ничего в /tmp/unicorn. Когда я перезагружаю сервер, единорог не работает, но ссылка symoblic создается. Я не знаю, как иметь трассировку.

Что я могу сделать?

Редактирование после anwser Florian Diesch

Я внес некоторые изменения. Это - новый сценарий:

test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
export RAILS_ENV=staging
sudo -H -u deployer bash -c '/etc/init.d/unicorn_lescollectionneurs start' >> /tmp/unicorn
exit 0

Я хочу запустить скрипт как "устройство развертывания", потому что я использую rbenv:

echo "starting" >> /tmp/unicorn_log
sig 0 && echo >&2 "Already running" && exit 0
run "$CMD" >> /tmp/unicorn_log
echo "end starting" >> /tmp/unicorn_log

В файле /tmp/unicorn_log/ это показывает только "запуск". Действительно ли возможно иметь больше журналов?

0
задан 22 November 2014 в 20:08

1 ответ

Команда

echo 'test' >> sudo /tmp/unicorn

совпадает с

echo 'test' /tmp/unicorn >> sudo

таким образом, это добавляет строку

test /tmp/unicorn

в файл sudo в текущей папке.

Если Вы хотите добавить test в файл /tmp/unicorn использование полномочий пользователя root необходимо использовать

echo 'test' | sudo tee -a /tmp/unicorn

вместо этого. Как /etc/rc.local выполняется корнем так или иначе, Вам не нужно sudo во всех кроме просто

echo 'test' >> /tmp/unicorn

Аналогично команда

/etc/init.d/unicorn_lescollectionneurs start >> sudo /tmp/unicorn

совпадает с

/etc/init.d/unicorn_lescollectionneurs start /tmp/unicorn >> sudo

В зависимости от как /etc/init.d/unicorn_lescollectionneurs записан это может или не может произвести ошибку (скорее всего, она не делает и /tmp/unicorn просто проигнорирован).


Строка

RAILS_ENV=staging

просто устанавливает переменную RAILS_ENV но не экспорт его. Таким образом, это не доступно для /etc/init.d/unicorn_lescollectionneurs и его дочерние процессы. Использовать

export RAILS_ENV=staging

вместо этого.

0
ответ дан 6 October 2019 в 19:47

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

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