2017-01-04 11 views
2

データベースにリスナーを開始するためのperlスクリプトを書いています。 perlスクリプトは、端末から実行するとうまく動作し、リスナーを起動します。マシンをログアウトしてログインしても、リスナーは起動しています(実行する必要があります)。リスナーは端末から始まり、Jenkinsからは戻ってこない

しかし私はジェンキンスを通して同じことをしようとすると問題に直面しています。そのVMをJenkinsのスレーブとして追加し、JenkinsのExecute Shellオプションから同じスクリプトを実行しています。 Jenkinsのコンソール出力では、リスナーが起動していることが示され、ps -ef | grep tnslはリスナーが起動していることを示しますが、Jenkinsのスクリプトが実行されている限りです。 Jenkinsのビルドが完了するとすぐにps -ef | grep tnslに結果が表示されません。

私はこれをいつかデバッグしようとしています。誰もここに光を投げることはできますか?私は最初に読んだときに質問があいまいに聞こえるかもしれないと理解しますが、誰かが必要と考える情報を提供しています。

+1

'デーモン化-E BUILD_ID = dontKillMe /パス/に/スクリプト:

BUILD_ID=dontKillMe /my/database/listener/script.pl 

また、機能はジェンキンスが起動されるすべてのジョブのために無効にすることができますすることができます'。詳細については、[ビルドからのスポーンプロセス](https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build)を参照してください。 –

答えて

1

this answerと同様の質問で述べたように、Jenkins ProcessTreeKillerは、生成されたプロセスを監視し、ゾンビを回避することを排除します。

特定のジョブでこの動作を無効にするには、ProcessTreeKillerが検索する環境変数BUILD_IDを変更します。たとえば、次の

あなたはそれをデーモン化でき
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war 
関連する問題