web-dev-qa-db-de.com

Jenkins schlägt fehl, wenn "Service Start Jenkins" ausgeführt wird

Ich habe Jenkins auf Cnetos 7 mit folgendem installiert:

Sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo
Sudo rpm --import http://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

als in der offiziellen Dokumentation beschrieben

Wenn ich jedoch laufe:

service start jenkins

Ich erhalte folgende Fehlermeldung:

Starting jenkins (via systemctl):  Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
                                                           [FAILED]

Das Ausführen von systemctl status jenkins.service gibt mir folgendes:

● jenkins.service - LSB: Jenkins Continuous Integration Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins)
   Active: failed (Result: exit-code) since Wed 2016-09-21 16:45:28 BST; 3min 59s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2818 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)

Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.Sun.akuma.JavaVMArguments.of(JavaVMArguments...04)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.Sun.akuma.JavaVMArguments.current(JavaVMArgu...92)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.Sun.akuma.Daemon.daemonize(Daemon.Java:106)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.Sun.akuma.Daemon.all(Daemon.Java:88)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: ... 6 more
Sep 21 16:45:28 webstack.local.caplib systemd[1]: jenkins.service: control process exited, code=exited s...s=1
Sep 21 16:45:28 webstack.local.caplib systemd[1]: Failed to start LSB: Jenkins Continuous Integration Server.
Sep 21 16:45:28 webstack.local.caplib systemd[1]: Unit jenkins.service entered failed state.
Sep 21 16:45:28 webstack.local.caplib systemd[1]: jenkins.service failed.
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: [FAILED]
Hint: Some lines were ellipsized, use -l to show in full.

und journalctl -xe gibt mir folgendes:

Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.Sun.akuma.JavaVMArguments.of(JavaVMArguments.Java:
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.Sun.akuma.JavaVMArguments.current(JavaVMArguments.
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.Sun.akuma.Daemon.daemonize(Daemon.Java:106)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.Sun.akuma.Daemon.all(Daemon.Java:88)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: ... 6 more
Sep 21 16:45:28 webstack.local.caplib runuser[2819]: pam_unix(runuser:session): session closed for user jenkin
Sep 21 16:45:28 webstack.local.caplib systemd[1]: jenkins.service: control process exited, code=exited status=
Sep 21 16:45:28 webstack.local.caplib systemd[1]: Failed to start LSB: Jenkins Continuous Integration Server.
-- Subject: Unit jenkins.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit jenkins.service has failed.
--
-- The result is failed.
Sep 21 16:45:28 webstack.local.caplib systemd[1]: Unit jenkins.service entered failed state.
Sep 21 16:45:28 webstack.local.caplib systemd[1]: jenkins.service failed.
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: [FAILED]
Sep 21 16:45:28 webstack.local.caplib polkitd[1392]: Unregistered Authentication Agent for unix-process:2813:8
Sep 21 16:45:28 webstack.local.caplib dhclient[1390]: DHCPREQUEST on eno16777984 to 192.168.15.254 port 67 (xi
Sep 21 16:45:28 webstack.local.caplib dhclient[1390]: DHCPACK from 192.168.15.254 (xid=0x2ab6e6bc)
Sep 21 16:45:30 webstack.local.caplib dhclient[1390]: bound to 192.168.15.120 -- renewal in 865 seconds.
Sep 21 16:45:36 webstack.local.caplib systemd[1]: Starting Cleanup of Temporary Directories...
-- Subject: Unit systemd-tmpfiles-clean.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit systemd-tmpfiles-clean.service has begun starting up.
Sep 21 16:45:36 webstack.local.caplib systemd[1]: Started Cleanup of Temporary Directories.
-- Subject: Unit systemd-tmpfiles-clean.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit systemd-tmpfiles-clean.service has finished starting up.
--
-- The start-up result is done.

Beides ist wirklich wenig hilfreich. Wie kann ich dieses Problem beheben?

19
Yahya Uddin

Ähnliches Problem auf Ubuntu 16.04. 

Setting up jenkins (2.72) ...
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
invoke-rc.d: initscript jenkins, action "start" failed.
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2017-08-01 05:39:06 UTC; 7ms ago
Docs: man:systemd-sysv-generator(8)
Process: 3700 ExecStart=/etc/init.d/jenkins start (code=exited, status=1/FAILURE)

Aug 01 05:39:06 ip-0 systemd[1]: Starting LSB: Start Jenkins ....
Aug 01 05:39:06 ip-0 jenkins[3700]: ERROR: No Java executable ...
Aug 01 05:39:06 ip-0 jenkins[3700]: If you actually have Java ...
Aug 01 05:39:06 ip-0 systemd[1]: jenkins.service: Control pro...1
Aug 01 05:39:06 ip-0 systemd[1]: Failed to start LSB: Start J....
Aug 01 05:39:06 ip-0 systemd[1]: jenkins.service: Unit entere....
Aug 01 05:39:06 ip-0 systemd[1]: jenkins.service: Failed with....

Um das Problem zu beheben, installieren Sie Java Runtime Environment manuell:

JDK Version 9:

Sudo apt install openjdk-9-jre

JDK Version 8:

Sudo apt install openjdk-8-jre

Jenkins Konfigurationsdatei öffnen: 

Sudo vi /etc/init.d/jenkins

Fügen Sie schließlich den Pfad zur neuen ausführbaren Java-Datei (Zeile 16) hinzu:

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/lib/jvm/Java-8-openjdk-AMD64/bin/
15

FEHLER: Linux/Centos:

Job für jenkins.service ist fehlgeschlagen, weil der Steuerungsprozess mit Fehlercode beendet wurde. Weitere Informationen finden Sie unter "systemctl status jenkins.service" und "journalctl -xe".

Lösung:

  • Bearbeiten Sie die Jenkins-Init-Datei, indem Sie

    Sudo vi /etc/init.d/jenkins
    
  • Fügen Sie Ihren eigenen Java-Pfad hinzu, zum Beispiel:

    /opt/Oracle/product/Java/jdk1.8.0_45/bin/Java
    
  • Starten Sie den Dienst neu:

    Sudo service jenkins start
    Sudo service jenkins status
    Sudo service jenkins stop
    
10
Guna Sekaran

Ich hatte ein ähnliches Problem unter Ubuntu 16.04. Dank @Guna habe ich herausgefunden, dass ich Java (Sudo apt install openjdk-8-jre) manuell installieren musste.

8
luator

Ich hatte unter CentOS 7 ein ähnliches Problem, während eine korrekte Java-Version installiert war und Java -version ein Nizza-Ergebnis ergab.

Mehrere Antworten aus verschiedenen SO - Threads gesammelt Ich habe Folgendes getan:

Stellen Sie sicher, dass Java installiert ist (und die Version mit Jenkins kompatibel ist) Es gibt einige Tricks, wenn Sie über CentOS sagen. Dies wird im offiziellen Jenkins-Tutorial HIER erwähnt. 

Wenn Java installiert und verfügbar ist, sollte die Ausgabe von Java -v folgendermaßen aussehen:

    ~>$Java -version
    openjdk version "1.8.0_161"
    OpenJDK Runtime Environment (build 1.8.0_161-b14)
    OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

Fügen Sie Java einen Pfad zu /etc/rc.d/init.d/jenkins hinzu.

   ~>$ Sudo vim /etc/rc.d/init.d/jenkins
    candidates="
    /etc/alternatives/Java
    /usr/lib/jvm/Java-1.8.0/bin/Java
    /usr/lib/jvm/jre-1.8.0/bin/Java
    /usr/lib/jvm/Java-1.7.0/bin/Java
    /usr/lib/jvm/jre-1.7.0/bin/Java
    /usr/bin/Java
    /usr/Java/jdk1.8.0_162/bin/Java ##add your Java path here
    "

So erhalten Sie Ihren "echten" Pfad zu Java-Verteilungselementen, das aufgerufen wird, wenn Sie smth wie Java -v .__ eingeben. Folgen Sie THIS SO

Wenn die oben genannten Schritte nicht geholfen haben, stellen Sie sicher, dass alle Berechtigungsprobleme gelöst sind:

  1. Wenn Jenkins Java nicht ausführen kann, könnte dies jenkins sein. Der Benutzer hat keine Berechtigung zum Ausführen von Java. Ändern Sie jenkins in root in config (beschrieben HIER).
  2. Versuchen Sie, mit der chmod-Einstellung 755-Berechtigungen für den Java-Installationsordner zu spielen

Und was hat mir letztendlich in result .__ geholfen. Als ich journalctl -xe ausgeführt habe, wurde vorgeschlagen, als ich Sudo service jenkins start versuchte, bekam ich einen ähnlichen Java-Stacktrace:

Starting CloudBees Jenkins Enterprise Exception in thread "main" Java.lang.reflect.InvocationTargetException
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:497)
at Main._main(Main.Java:140)
at Main.main(Main.Java:98)
Caused by: Java.lang.UnsatisfiedLinkError: /tmp/jna--1712433994/jna7387046629130767794.tmp: /tmp/jna--1712433994/jna7387046629130767794.tmp: failed to map segment from shared object: Operation not permitted
at Java.lang.ClassLoader$NativeLibrary.load(Native Method)
at Java.lang.ClassLoader.loadLibrary0(ClassLoader.Java:1937)
at Java.lang.ClassLoader.loadLibrary(ClassLoader.Java:1822)
at Java.lang.Runtime.load0(Runtime.Java:809)
at Java.lang.System.load(System.Java:1086)
at com.Sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.Java:761)
at com.Sun.jna.Native.loadNativeDispatchLibrary(Native.Java:736)
at com.Sun.jna.Native.<clinit>(Native.Java:131)
at com.Sun.akuma.CLibrary.<clinit>(CLibrary.Java:89)
at com.Sun.akuma.JavaVMArguments.resolvePID(JavaVMArguments.Java:128)
at com.Sun.akuma.JavaVMArguments.ofLinux(JavaVMArguments.Java:116)
at com.Sun.akuma.JavaVMArguments.of(JavaVMArguments.Java:104)
at com.Sun.akuma.JavaVMArguments.current(JavaVMArguments.Java:92)
at com.Sun.akuma.Daemon.daemonize(Daemon.Java:106)
at com.Sun.akuma.Daemon.all(Daemon.Java:88)
... 6 more

Das Problem ist, dass Jenkins versucht, die JNA-Bibliothek von /tmp dir aus zu starten, das standardmäßig als noexec markiert ist. Wir könnten das Problem beheben, indem wir ein temporäres Verzeichnis in einem /jenkins-Pfad erstellen, damit es ausgeführt werden kann Dies wird beschrieben HIER VOM CLOUDBEES-SUPPORT (vielen Dank dafür)

Ich hoffe, dass etwas von dieser Liste helfen wird (auch wenn ich Jenkins für CentOs wieder installieren muss).

3
rodikno

Ich hatte das gleiche Problem, und als ich überprüfte, ob Java installiert ist, habe ich festgestellt, dass dies nicht der Fall ist. Die Installation von Java hat das Problem für mich gelöst.

Überprüfen Sie für Java:

Java -version

Wenn Java im System installiert ist, gibt der Befehl die Java-Version zurück, andernfalls wird eine solche Meldung angezeigt.

The program 'Java' can be found in the following packages:
 * default-jre
 * gcj-5-jre-headless
 * openjdk-8-jre-headless
 * gcj-4.8-jre-headless
 * gcj-4.9-jre-headless
 * openjdk-9-jre-headless

Um Java zu installieren, verwenden Sie den folgenden Befehl.

Sudo apt-get install default-jre
3
mok

Immer noch den gleichen Fehler bei Ubuntu, Ubuntu-Derivaten und OpenSuse. Dies ist eine großartige Möglichkeit, umzugehen und vorwärts zu gehen, bis Sie das eigentliche Problem beheben können. 

Verwenden Sie einfach das Docker-Image für Jenkins von Dockerhub.

docker pull jenkins/jenkins

Andocklauf -itd -p 8080: 8080 - Name Jenkins_container Jenkins

Navigieren Sie mit dem Browser zu:

localhost: 8080 oder mein_pc: 8080

So erreichen Sie das Token unter dem auf dem Anmeldebildschirm angegebenen Pfad:

docker exec -it jenkins_container/bin/bash

Navigieren Sie dann zur Token-Datei und kopieren Sie den Code in den Anmeldebildschirm. Sie können die Menüs zum Bearbeiten/Kopieren/Einfügen in den Terminals kde/gnome/lxde/xfce verwenden, um den Terminaltext zu kopieren und ihn dann mit Strg-v einzufügen 

Kriegsdatei

Oder verwenden Sie die Datei jenkins.war. Zu Entwicklungszwecken können Sie jenkins als Benutzer (oder als jenkins) über die Befehlszeile ausführen oder ein kurzes Skript in/usr/local oder/opt erstellen, um es zu starten.

Laden Sie jenkins.war von der jenkins-Download-Seite herunter:

https://jenkins.io/download/

Dann legen Sie es an einen sicheren Ort, ~/Jenkins wäre ein guter Ort.

mkdir ~/jenkins; cp ~/Downloads/jenkins.war ~/jenkins

Dann renne:

Nohup Java -Jar ~/Jenkins/Jenkins.war> ~/Jenkins/Jenkins.log 2> & 1

Um das ursprüngliche Admin-Passwort-Token zu erhalten, kopieren Sie die Textausgabe von:

cat /home/my_home_dir/.jenkins/secrets/initialAdminPassword

und fügen Sie diese in die Box mit Strg-v als Ihr ursprüngliches Administratorkennwort ein.

Hoffe, das ist detailliert genug, um dich auf den Weg zu bringen ...

2
Fraser Doswell

Ich habe versucht, es in kubuntu 18.04 zu installieren, und ich war mir bereits sicher, dass ich Java installiert hatte. Ich bestätigte es, indem ich es versuchte

Java-Version

Ich habe die Ausgabe so bekommen

Java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Da ich bereits weiß, dass meine Java PATH-Variablen in der Datei/etc/environment definiert sind, habe ich diese Datei oben in der Datei /etc/init.d/jenkins hinzugefügt

source /etc/environment

sie können den PATH sogar aus der Datei /etc/init.d/jenkins entfernen, da er bereits in/etc/environment definiert ist

danach startete ich meinen Jenkins-Server neu und schien von localhost aus gut zu funktionieren: 8080

1
mbkfa93

rm -rf/var/log/jenkins zu groß das log

0
Gank

Hinzufügen zu dem, was bereits von Guna Sekaran beantwortet wurde. Jenkins benötigen die Benutzer-Jenkins, um anwesend zu sein, um die Jenkins als Dienst auszuführen.

Fügen Sie den Benutzer "useradd jenkins" als root hinzu und feuern Sie "passwd jenkins" als root ab, bevor Sie Jenkins als Dienst starten.

0
Gogol

~> $ Sudo vim /etc/rc.d/init.d/jenkins


kandidaten = "

/ etc/alternatives/Java

/usr/lib/jvm/Java-1.8.0/bin/Java

/usr/lib/jvm/jre-1.8.0/bin/Java

/usr/lib/jvm/Java-1.7.0/bin/Java

/usr/lib/jvm/jre-1.7.0/bin/Java

/ usr/bin/Java

/usr/Java/jdk1.8.0_162/bin/Java ## Fügen Sie Ihren Java-Pfad hinzu

"


0
Aaric Thailad

Sie müssen lediglich Java ..__ installieren. Nach der Installation von Java Version 8, Mit dem folgenden Befehl hat es funktioniert: Sudo apt install openjdk-8-jre-headless

0
Mazen El-Gammal

Bevor Sie Jenkins installieren, sollten Sie JDK installieren:

apt install openjdk-8-jre

Nach dieser Installation Jenkins:

apt-get install jenkins

Und prüfe den Status von Jenkins (sollte "aktiv" sein):

systemctl status jenkins.service
0
Kamil Siwek

Bei der Einrichtung von Jenkins stand ich vor demselben Problem. Das Problem besteht darin, dass Java nicht installiert ist und daher nicht im Pfad verfügbar ist.

Der einfachste Weg ist, scp hier zu verwenden, um jdk-Binärdateien in die aws ec2-Box zu kopieren. Das Skript funktioniert nicht, wenn Sie eines erstellen, da sie die Download-URLs aktualisieren (Orale, meine ich):. scp -i C: /Users/key-pair.pem jdk-8u191-linux-x64.tar.gz ec2- [email protected]: ~ / 

$cd /opt

$Sudo cp /home/ec2-user/jdk* .

$Sudo chmod +x jdk*

$Sudo tar xzf jdk-8u191-linux-x64.tar.gz

$Sudo tar xzf jdk-8u191-linux-x64.tar.gz

$cd jdk1.8.0_191/

$Sudo alternatives --install /usr/bin/Java java /opt/jdk1.8.0_191/bin/Java 2

$Sudo alternatives --config Java

Hier lade ich die tar.gz-Datei in Loal-Fenstern herunter und übertrage sie über scp an AWS ec2-user (Standardverzeichnis). Ich hoffe es hilft.

0
Hitendra Kumar

[100%] Gelöst. Ich hatte heute das gleiche Problem. Ich habe meinen Serverplatz überprüft

df-h

Ich habe gesehen, dass der Server nicht genügend Speicherplatz hat, also überprüfe ich, welches Verzeichnis die größte Größe hat

Sudo du -ch / | sort -h

Ich habe 12.2G/var/lib/jenkins gesehen, also habe ich diesen Ordner betreten und alle Protokolle von gelöscht

cd /var/libs/jenkins
rm *

und starte die jenkins neu es wird normal funktionieren

Sudo systemctl restart jenkins.service
0

In meinem Fall der Port 8080 wurde von einem anderen Dienst verwendet (Apache Airflow).

Also bearbeite ich den HTTP-Port in dieser Datei:

Sudo vi /etc/default/jenkins

Und dann startete der Dienst und es funktionierte:

Sudo service jenkins start

Ich war auf Ubuntu 18.04 und habe openjdk-8 installiert

0
Gagan

Für Ubuntu 16.04 gibt es ein Firewall-Problem. Sie müssen den 8080-Port mit folgendem Befehl öffnen:

Sudo ufw allow 8080

Detaillierte Schritte finden Sie hier: https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-ubuntu-16-04

0
Ishwar

Sieht aus wie Java-Versionskonflikte. 

Bitte beachten Sie https://medium.com/lucian-daniliuc/upgrading-jenkins-on-ubuntu-14-04-lts-df3e1209f98c

0
Neeraj Kumar