如何在upstart配置文件中设置uid后编写pid文件

时间:2014-01-14 02:06:20

标签: linux pid upstart

目前我需要从upstart文件启动java应用程序并使用monit监视它,但需要一个pid文件。

我将应用程序用户设置为wwww-data:adm using

setuid www-data    
setgid adm

然后

script  
    echo $$ > /var/run/logstash.pid  
    exec java -jar logstash.jar agent -f logstash.conf --log logstash.stdout  
end script

错误日志显示

/proc/self/fd/9: 2: /proc/self/fd/9: cannot create /var/run/logstash.pid: Permission denied

如何编写pid文件?

PS。我使用了start-stop-daemon,它告诉“无法创建Java虚拟机”

2 个答案:

答案 0 :(得分:1)

我终于通过在 / var / run 中添加了www-data:adm所拥有的文件夹来解决它,并将pid文件放在那里。

答案 1 :(得分:0)

/ run和/ var / run中的文件和目录在重新启动时不会持久。

解决方法 - 我们可以通过每次系统启动时通过init脚本创建一个子目录来解决这个问题。

我猜monit没有内置的解决方案来解决这个问题。 如果有人出现,我想知道理想的解决方案。