2015-06-27 62 views
0

我有用戶作業未啓用

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,使新貴〜/文件夾的.init一個codestains.conf文件用戶作業 但每次我運行

start codestains 
    sudo start codestains 

我得到 「開始:未知作業:codestains」。 我已經嘗試了很多可在網上使用的東西。似乎沒有任何幫助。

此外,

init-checkconf codestains.conf 

賦予 「文件codestains.conf:語法OK」

回答

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

哪個殼(bash中,至少)會專門爲我描述的治療:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html (見「命令替換的部分「)

HTH