2012-08-03 59 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