我在〜/ .init文件夹中有一个codestains.conf文件
description "Codestains"
author "Varun Mundra"
start on virtual-filesystems
stop on runlevel [06]
env PATH=/opt/www/codestains.com/current/bin:/usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/local/bin:/us$
env RAILS_ENV=production
env RACK_ENV=production
setuid ubuntu
setgid sudo
chdir /opt/www/codestains.com
pre-start script
exec >/home/ubuntu/codestains.log 2>&1
exec /opt/www/codestains.com/current/bin/unicorn -D -c /opt/www/codestains.com/current/config/unicorn.rb $
end script
post-stop script
exec kill 'cat /tmp/unicorn.codestains.pid'
end script
我在/ etc / dbus-1 / system.d / Upstart.conf`中添加了https://gist.github.com/bradleyayers/1660182以启用Upstart用户作业 但每次我跑
start codestains
sudo start codestains
我得到了#34;开始:未知的工作:codestains"。 我在网上尝试过很多东西。似乎没有任何帮助。
此外,
init-checkconf codestains.conf
给出"文件codestains.conf:语法ok"
答案 0 :(得分:0)
我发现一个肯定是问题的错误;我不知道这是否是唯一的问题。我没有尝试过测试它。但是,这一点:
exec kill 'cat /tmp/unicorn.codestains.pid'
肯定是错误的,它会将字符串cat /tmp/unicorn.codestains.pid
传递给kill
命令,这将无法执行您想要的操作。
您可能已经看过一个示例,并且错过了它们是反引号字符,这会导致shell执行cat /tmp/unicorn.codestains.pid
,捕获其STDOUT
,然后在放置反引号的位置插入结果; IOW它将该pid文件的内容传递给kill
命令。
像这样:
exec kill `cat /tmp/unicorn.codestains.pid`
请注意略有不同的backtick character
如我所述,哪些shell(至少是bash)会特别对待:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html (参见"命令替换和#34;)
HTH