2017-07-16 64 views
0

logstash exec outputプラグインを使用してバックグラウンドでコマンドを実行する方法を知っている人はいますか?それはパラメータであるとして 私はこの設定を試してみました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()関数によって実行されることに注意してください。 Exec output pluginためLogstashリファレンスによると

0

使用dtachまたはscreenそれ以外のブロックにします。

私は、あなたが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をインストールする必要があります。

注2which dtachコマンドを使用すると、dtachのフルパスを取得できます。

注3:dtachのmanページから-nモードの定義:

-nがそれに取り付けずに、新しいセッションを作成します。指定されたプログラムが実行される新しいセッションが作成されます。ただし、dtachは新しく作成されたセッションにアタッチしようとせず、代わりに終了します。

関連する問題