2012-08-03 61 views
0

我有一个C++可执行文件,我使用supervisord进行监视。我将supervisord作为启动过程。当我重新启动,supervisord和我的可执行文件工作正常(功能)。并且在tmp中创建Stdout_log文件(这也很好)。但是日志文件是空的。supervisord命令失败'stdout_log和系统命令'

而在我的可执行文件中,我使用system()运行几个bash脚本,但它也失败了。

所以,我有两个问题

  1. 日志文件是空的
  2. 系统()失败

我有关这些问题的一些权限,但没有任何线索来解决它。寻找一些建议

感谢

+0

一当你的二进制文件没有在'stdout'输出时,日志文件可以很容易地被清空。你是否检查过是否有任何'stderr'输出? – 2012-08-03 20:10:59

+0

另外,*你的系统()运行你的bash脚本失败了吗? – 2012-08-03 20:11:34

+0

即使Stderr是空的。请注意,我正在获取所有日志文件如果我自己启动supervisord(即UID是我而不是root) – mohan 2012-08-03 21:51:07

回答

0

如果你的可执行文件不能以root身份运行本身,运行它作为非特权用户来代替。

无论是配置supervisord以其他用户通过设置[supervisord]user选项运行的所有

[supervisord] 
user = wwwdata 

或设置user参数在它的可执行文件的[program:x]部分:

[program:yourprogram] 
user = wwwdata 
+0

我想要root用户权限,因为我有很少的监听器并绑定到套接字 – mohan 2012-08-03 23:01:06

+0

然后,您需要修复您的可执行文件以在根目录下工作;在任何情况下,这不是一个supervisord问题。 – 2012-08-03 23:02:44