Linux 为什么壳牌赢了';如果它';是从rc.local调用的,但是SSH?

Linux 为什么壳牌赢了';如果它';是从rc.local调用的,但是SSH?,linux,shell,startup,Linux,Shell,Startup,我制作了这个shell脚本 /var/start app.sh #!/bin/sh # file-name: app-start.sh cd /var/www/html/app bundle exec rake sunspot:solr:start RAILS_ENV=production unicorn_rails -c config/unicorn.rb -E production -D 如果我在SSH中键入/var/start app.sh。它触发,一切正常 然后我把sh/var/sta

我制作了这个shell脚本

/var/start app.sh

#!/bin/sh
# file-name: app-start.sh
cd /var/www/html/app
bundle exec rake sunspot:solr:start RAILS_ENV=production
unicorn_rails -c config/unicorn.rb -E production -D
如果我在SSH中键入
/var/start app.sh
。它触发,一切正常

然后我把
sh/var/start app.sh
放在
/etc/rc.d/rc.local
的最后一行,以便在服务器启动时运行它

但这根本不起作用。为什么?我怎样才能做到这一点

从SSH,我使用
root
权限调用它。
这就是为什么?如果是这样的话,我如何向
rc.local
授予root权限?

看起来从rc.local启动服务不是最佳做法。您最好编写一个init脚本:

您是否尝试过使用
upstart
,您试图让它工作的那一个似乎给您带来了很多麻烦trouble@nXqd“暴发户”是关于什么的?我怀疑这与rc.local的用户有关。是否有可能它没有启动app.sh的权限?通过SSH,我使用
root
权限调用了
start app.sh
。这就是它工作正常的原因吗?我可以帮忙:@fedorqui谢谢。我看了一下链接。但是我无法理解我的版本控制有什么问题,首先要看看将它添加到
rc.local
是否有效。如果将脚本更改为
echo“hello”>/tmp/test
,会怎么样?如果它创建了
/tmp/test
文件,那么您就知道它正在运行脚本,但其中有些内容是错误的。可能是完整/相对路径?