web-dev-qa-db-ja.com

JENKINSのプロセスリークファイル記述子エラー

Tomcatサーバーの停止と開始を行うようにジョブを構成すると、このエラーが発生します。

リークされたファイル記述子を処理します。詳細については、 http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build を参照してください

グーグルで検索したとき、set BUILD_ID=dontKillMe
これは正確な解決策ですか?
はいの場合、BUILD_IDを設定する場所はどこですか? ant/postビルドスクリプト内?
誰でもこれを明確にできますか?

24
user2181104

はい、プロセスの偽BUILD_IDを作成すると、生成されたプロセスの検出中にこのプロセスを無視するようにJenkinsに指示するため、ジョブの終了後にこのプロセスは強制終了されません。

使用法:コマンドの前にBUILD_ID=dontKillMeを入力します。たとえば、Execute Shellビルドステップに入力します。

 BUILD_ID=dontKillMe Nohup ./yourStartScript.sh &

注: Nohup も参照してください

15
lu_ko

デフォルトでは、Jenkinsはビルドの完了時に生成されたプロセスをすべて強制終了します。

これをオーバーライドするには、環境変数BUILD_IDを作成する必要があります。

Jenkins-> Manage Jenkins-> Configure System Nowの[Global properties]セクションの[Environment variables]で、[ADD]ボタンをクリックして新しい環境変数を追加します。名前= BUILD_IDおよび値= 'allow_to_run_as_daemon start_my_service'(引用符なし)を指定します。保存ボタンをクリックします。これで完了です。

これで、ビルドが完了した後でも、spawnプロセスが実行され続けます。

7
NdK

Jenkinsサーバーを起動するときにこの行をJava_ARGS引数として追加します(Ubuntuボックスの/ etc/default/jenkinsに配置します)

-Dhudson.util.ProcessTree.disable=true

そして、あなたは終わった

7
Arx Cruz

別のプロセスを生成するJenkinsからコマンドを呼び出しています-
Tomcat-startコマンドは終了しますが、その子プロセスはまだ実行中です
(これは、起動しようとした実際のTomcat Webサーバーです)。

Jenkinsはこの状況を問題の可能性があると特定し、
しかし あなたが言及したページ はそれを解決する方法も説明しています
(簡単に言うと:Tomcatを開始しないでください。

2
Gonen