根据 Florian Diesch 的回答进行编辑

根据 Florian Diesch 的回答进行编辑

我想在 Ubuntu 服务器启动时启动一个 unicorn 服务器。我修改了文件,/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。当我重新启动服务器时,unicorn 没有运行,但创建了符号链接。我不知道如何进行跟踪。

我能做些什么?

根据 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/仅显示“正在启动”。是否可以显示更多日志?

答案1

命令

echo 'test' >> sudo /tmp/unicorn

是相同的

echo 'test' /tmp/unicorn >> sudo

所以它附加了以下行

test /tmp/unicorn

sudo到当前文件夹中的文件。

如果你想使用 root 权限附加test到文件,/tmp/unicorn你应该使用

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

相反。/etc/rc.local无论如何,您根本不需要 root 来运行,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

反而。

相关内容