web-dev-qa-db-fra.com

Erreur de descripteur de fichier de fuite de processus sur JENKINS

J'obtiens cette erreur lorsque j'ai configuré un travail pour faire arrêter et démarrer le serveur Tomcat:

Traitez les descripteurs de fichiers qui ont fui. Voir http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build pour plus d'informations

Quand je l'ai googlé, j'ai obtenu une solution recommandée comme set BUILD_ID=dontKillMe
Est-ce la solution exacte?
Si oui, où dois-je définir BUILD_ID? À l'intérieur du script de génération de fourmi/post?
Quelqu'un peut-il clarifier cela?

26
user2181104

Oui, créer de faux BUILD_ID for process indique à Jenkins d'ignorer ce processus lors de la détection des processus générés, donc ce processus ne sera pas tué après la fin du travail.

Utilisation: entrez BUILD_ID=dontKillMe avant votre commande, par exemple dans Execute Shell étape de construction:

 BUILD_ID=dontKillMe Nohup ./yourStartScript.sh &

Remarque: Voir aussi Nohup

15
lu_ko

Par défaut, Jenkins tuera tout le processus généré à la fin de la construction.

Pour remplacer cela, vous devez créer la variable d'environnement BUILD_ID.

Allez dans Jenkins -> Gérer Jenkins -> Configurer le système maintenant dans la section 'Propriétés globales', sous Variables d'environnement, cliquez sur le bouton AJOUTER pour ajouter une nouvelle variable d'environnement. Donnez Name = BUILD_ID et value = 'allow_to_run_as_daemon start_my_service' (sans devis). Cliquez sur le bouton Enregistrer. Et vous avez terminé.

Maintenant, le processus d'apparition continuera de s'exécuter même après la fin de la construction.

7
NdK

Ajoutez cette ligne comme argument Java_ARGS lorsque vous démarrez votre serveur jenkins (je mets le mien sur/etc/default/jenkins dans ma boîte Ubuntu)

-Dhudson.util.ProcessTree.disable=true

Et tu as fini

7
Arx Cruz

Vous appelez une commande de Jenkins qui engendre un autre processus -
la commande Tomcat-start se termine, mais son processus enfant est toujours en cours d'exécution
(il s'agit du serveur Web Tomcat que vous avez tenté de démarrer).

Jenkins identifie parfois cette situation comme un problème possible,
mais la page que vous avez mentionnée explique également comment le résoudre
(en bref: ne démarrez pas Tomcat de Jenkins à moins que vous ne sachiez comment).

2
Gonen