用户作业未启用

时间:2015-06-27 09:25:34

标签: ruby-on-rails ubuntu unicorn upstart

我在〜/ .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"

1 个答案:

答案 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