詹金斯在运行"service start jenkins"时失败了

Yah*_*din 31 jenkins

我使用以下命令在Cnetos 7上安装了jenkins:

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
Run Code Online (Sandbox Code Playgroud)

官方文档中所述

但是,当我跑:

service start jenkins
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

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]
Run Code Online (Sandbox Code Playgroud)

跑步systemctl status jenkins.service给了我这个:

? 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.
Run Code Online (Sandbox Code Playgroud)

跑步journalctl -xe给了我这个:

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.
Run Code Online (Sandbox Code Playgroud)

这两者都是无益的.我该如何解决这个问题?

小智 25

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....
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请手动安装Java Runtime Environment:

JDK版本9:

sudo apt install openjdk-9-jre
Run Code Online (Sandbox Code Playgroud)

JDK版本8:

sudo apt install openjdk-8-jre
Run Code Online (Sandbox Code Playgroud)

打开Jenkins配置文件:

sudo vi /etc/init.d/jenkins
Run Code Online (Sandbox Code Playgroud)

最后,追加新java可执行文件的路径(第16行):

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/lib/jvm/java-8-openjdk-amd64/bin/
Run Code Online (Sandbox Code Playgroud)

  • 进一步提高你的答案安德鲁.在撰写此评论时,v9将无法正常工作,jenkins将因"发现的Java版本不正确"而失败,因此要修复您应该通过简单地运行`sudo update-alternatives --config java来选择版本8作为默认的Java环境`然后选择你的版本8 (12认同)

小智 13

错误:Linux/Centos:

jenkins.service的作业失败,因为控制进程退出并显示错误代码.有关详细信息,请参阅"systemctl status jenkins.service"和"journalctl -xe".

解:

  • 我们在哪里添加java路径? (5认同)

lua*_*tor 8

我在Ubuntu 16.04上遇到过类似的问题.感谢@Guna我发现我必须手动安装Java(sudo apt install openjdk-8-jre).


小智 7

在安装 Jenkins 之前,您应该安装 JDK:

apt install openjdk-8-jre
Run Code Online (Sandbox Code Playgroud)

安装 Jenkins 后:

apt-get install jenkins
Run Code Online (Sandbox Code Playgroud)

并检查詹金斯状态(应该是“活跃”):

systemctl status jenkins.service
Run Code Online (Sandbox Code Playgroud)


小智 6

我在CentOS 7上遇到了类似的问题,同时安装了正确版本的Java,并java -version得到了不错的结果。

从不同的SO线程收集多个答案,我做了以下工作:

确保已安装Java语言(版本与詹金斯兼容) 里有一些技巧,如果说关于CentOS的,这是在官方詹金斯教程提到这里

如果Java已安装且可用,则运行java -v输出时应如下所示:

    ~>$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)
Run Code Online (Sandbox Code Playgroud)

将Java路径添加到/etc/rc.d/init.d/jenkins

   ~>$ 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
    "
Run Code Online (Sandbox Code Playgroud)

如何在键入smth之类的调用时获取到Java分发程序的“真实”路径,例如“java -v 跟随 SO线程”

如果上述步骤没有帮助,请尝试确保解决所有权限问题:

  1. 如果Jenkins无法运行Java,则可能是jenkins用户没有运行该Java的权限,然后更改jenkinsrootconfig(在此处介绍)
  2. 尝试播放对安装文件夹的chmod设置755权限java

最后是什么对我有所帮助 当我journalctl -xe按照尝试运行时的建议运行时sudo service jenkins start,我得到了类似的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
Run Code Online (Sandbox Code Playgroud)

问题在于,Jenkins尝试JNA从默认/tmp标记为dir的目录中启动库noexec,因此我们可以通过在/jenkins路径中创建一个临时目录来对其进行修复,以使其得以执行。CloudBees支持在此描述完整的方法(非常感谢他们)

我希望此列表中的内容会有所帮助(同样,我将来主要还是将它留给我使用,因为当我不得不再次为CentO安装Jenkins时:)


小智 6

如果它是 AWS linux 实例,则此问题最简单的解决方法

sudo yum install java-1.8.0 -y 

sudo yum remove java-1.7.0-openjdk
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

66645 次

最近记录:

6 年,9 月 前