2017-07-16 371 views
0

有誰知道如何使用logstash exec輸出插件在後臺運行命令? 我想這個配置使用logstash exec輸出插件在後臺運行命令

input { 
    file { 
    path => "file.log"  
    } 
} 
output { 
    exec { 
    command => "./script.sh fff ggg hhh jjj kkk &" 
    } 
} 

和文字內容是

#/bin/bash 
echo "$*" >> file.txt 

所以最後file.txt的包含&,因爲它是參數:fff ggg hhh jjj kkk &

回答

0

你似乎做的是正確的,但是請記住在exec的範圍內,當前工作目錄並不總是顯而易見的。腳本的完整路徑將更加健壯。請注意,如果您對潛在的副作用和限制感興趣,可以使用ruby的system()函數運行。

0

按照Logstash參考的Exec output plugin

使用dtachscreen使它非阻塞。

我建議你使用dtach,從dtachman網頁摘錄:

dtach適用於誰想要屏幕沒有畫面的其他開銷分離功能的用戶。它很小,不會使用許多圖書館,並儘可能保持不變。

用法示例(如sysadmin1138的建議,你應該使用完整路徑):

output { 
    exec { 
    command => "/usr/bin/dtach -n /tmp/session_name -Ez /absolute/path/script.sh fff ggg hhh jjj kkk" 
    } 
} 

注1:您可能需要安裝dtach第一,如果你的系統默認不擁有它。

注2:您可以通過使用which dtach命令得到dtach的完整路徑。

注3:從dtach的手冊頁-n模式定義:

-n創建一個新的會話,而無需連接到它。創建一個新的會話,執行指定的程序。但是,dtach不會嘗試附加到新創建的會話,而是退出。

希望有所幫助!