I am getting this error when I configured a job to do stop and start of tomcat server:
Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
When i googled it, i got a recommended solution as set BUILD_ID=dontKillMe
Is this the exact solution?
If yes, where do I need to set BUILD_ID? Inside ant/post build script?
Can anyone please clarify this?
Yes, creating fake BUILD_ID
for process tells Jenkins to ignore this process during detection spawned processes, so this process will be not killed after finishing job.
Usage: Enter BUILD_ID=dontKillMe
before your command, for example into Execute shell
build step:
BUILD_ID=dontKillMe nohup ./yourStartScript.sh &
Note: See also nohup
Add this line as a JAVA_ARGS argument when you start your jenkins server (I put mine on /etc/default/jenkins in my Ubuntu box)
-Dhudson.util.ProcessTree.disable=true
And you're done
By default, Jenkins will kill all the spawned process at the completion of build.
To override this, you need to create environment variable BUILD_ID.
Go to Jenkins-->Manage Jenkins-->Configure System Now under 'Global properties' section, under Environment variables, click on ADD button to add new Environment variable. Give Name= BUILD_ID and value='allow_to_run_as_daemon start_my_service' (without quote). Click on save button. And you are done.
Now the spawn process will continue to execute even after the build got completed.
You are calling a command from Jenkins that spawns another process -
the tomcat-start command ends, but its child-process is still running
(this is the actual tomcat web-server you attempted to start).
Jenkins sometimes identifies this situation as a possible problem,
but the page you have mentioned also explains how to solve it
(in short: Don't start tomcat from Jenkins unless you know how).
来源:https://stackoverflow.com/questions/17024441/process-leaked-file-descriptors-error-on-jenkins