2016-03-22 70 views
0

接口我有apache和Node.js的Ubuntu上使用Node.js的與慶典

運行有沒有一種方法,如果Apache服務與節點運行以編程方式檢查?如果它沒有運行,請允許Node.js啓動/重新啓動服務,也可以使用相同的代碼來運行其他進程,如MySQL?

我也想找到一種方法,使節點執行「PS -u用戶」並捕獲輸出在一個js字符串或對象

我看了一下Node.js的子進程,但我不能提前弄清楚

感謝

回答

1

您可以使用「child_process」模塊的「執行」方法從您的節點的應用程序執行命令,並輸出作爲參數傳遞給回調傳遞功能。

var exec = require("child_process").exec; 

exec("ps -u user", function (error, stdout, stderr) { 
    var myResult = stdout; 
    //doSomething 
}); 
1

你也可以使用shelljs - https://www.npmjs.com/package/shelljs,它有很多功能直接轉移到外殼,是跨平臺的。 ps命令不是其中之一,所以使用exec與child_process類似。

require('shelljs/global');  
exec('ps -aux | grep apache') 

使用exec你也可以啓動/重新啓動服務,但是你需要以root身份運行節點進程,有什麼不是最好的選擇。或者專門爲apache創建用戶組。

運行「ps -u user」使用相同。它會返回您的對象與您需要的有關流程的所有信息。

exec('ps -u user'); 

而不是按照需要繼續輸出。

0

使用spawn可以運行shell腳本。所以,如果你有一個shell腳本來檢查一個進程是否正在運行......類似於this,你應該生成它來運行它。像... var child = spawn('sh', [__dirname+'/some-status-shell-script.sh'], {env: process.env});

同樣可以用重生來訪問你的MySQL數據庫...類同this