詹金斯在跑步时失败了#34;服务开始jenkins"

时间:2016-09-21 15:52:33

标签: 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

described on the official documentation

但是当我跑步时:

service start jenkins

我收到以下错误消息:

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]

正在运行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.

并且运行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.

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

22 个答案:

答案 0 :(得分:21)

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....

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

JDK版本9:

sudo apt install openjdk-9-jre

JDK版本8:

sudo apt install openjdk-8-jre

打开Jenkins配置文件:

sudo vi /etc/init.d/jenkins

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

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/lib/jvm/java-8-openjdk-amd64/bin/

答案 1 :(得分:12)

错误:Linux / Centos:

  

jenkins.service的作业失败,因为控制进程退出并显示错误代码。参见" systemctl status jenkins.service"和" journalctl -xe"详情。

解决方案:

  • 通过执行

    编辑Jenkins init文件
    sudo vi /etc/init.d/jenkins
    
  • 添加您自己的Java路径,例如:

    /opt/oracle/product/java/jdk1.8.0_45/bin/java
    
  • 重启服务:

    sudo service jenkins start
    sudo service jenkins status
    sudo service jenkins stop
    

答案 2 :(得分:8)

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

答案 3 :(得分:4)

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

收集来自不同SO线程的多个答案我做了以下事情:

确保安装了Java(并且版本与Jenkins兼容) 如果说CentOS有一些技巧,官方Jenkins教程中提到了 here

如果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)

将一条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
    "

如何输入你在输入像java -v 这样的smth时调用的java分配的'真实'路径 关注 this SO帖子

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

  1. 如果Jenkins无法运行Java,可能jenkins用户无权运行它,然后在配置中将jenkins更改为root(描述为 {{ 3}}
  2. 尝试使用chmod设置755安装文件夹的java权限
  3. 最后是什么帮助了我的结果 当我尝试journalctl -xe时建议运行sudo service jenkins start时,我得到了类似的Java堆栈跟踪:

    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
    

    问题是Jenkins尝试从JNA dir启动/tmp库,默认情况下标记为noexec,因此我们可以通过在{中创建临时目录来修复它{1}}路径,因此可以执行。 完整的方法是 here (非常感谢他们)

    我希望这个列表中的某些内容会有所帮助(我将来还会为我留下它,因为我将不得不再次为CentOs安装Jenkins:)

答案 4 :(得分:3)

我有同样的问题,当我检查是否安装了Java时,我意识到它不是,所以安装Java解决了我的问题。

检查java:

java -version

如果系统中安装了Java,则该命令将返回java版本,否则将显示如下消息。

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

要安装java,请使用以下命令。

sudo apt-get install default-jre

答案 5 :(得分:2)

仍然在ubuntu,ubuntu衍生品和opensuse上同样的错误。这是绕过并继续前进的好方法,直到您可以解决实际问题。

只需使用dockerhub中的jenkins码头图片。

docker pull jenkins / jenkins

docker run -itd -p 8080:8080 - name jenkins_container jenkins

使用浏览器导航至:

localhost:8080 my_pc:8080

要在登录屏幕上给出的路径获取令牌:

docker exec -it jenkins_container / bin / bash

然后导航到令牌文件并将代码复制/粘贴到登录屏幕中。您可以使用kde / gnome / lxde / xfce终端中的编辑/复制/粘贴菜单复制终端文本,然后使用ctrl-v粘贴它

战争文件

或者使用jenkins.war文件。出于开发目的,您可以从命令行以您的用户(或jenkins)的身份运行jenkins,或者在/ usr / local或/ opt中创建一个简短的脚本来启动它。

从jenkins下载页面下载jenkins.war:

<强> https://jenkins.io/download/

然后把它放在安全的地方,〜/ jenkins会是一个好地方。

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

然后运行:

nohup java -jar~ / jenkins / jenkins.war&gt; 〜/ jenkins / jenkins.log 2&gt;&amp; 1

要获取初始管理员密码令牌,请复制以下文本输出:

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

并将其粘贴到框中,并使用ctrl-v作为初始管理员密码。

希望这个详细到足以让你继续前进......

答案 6 :(得分:2)

[100%]已解决。我今天有同样的问题。我检查了服务器空间

df-h

我看到服务器空间不足,所以我检查哪个目录的大小最大

sudo du -ch / | sort -h

我看到了12.2G / var / lib / jenkins,所以我进入了这个文件夹并清除了所有日志

cd /var/libs/jenkins
rm *

并重新启动詹金斯,它将正常工作

sudo systemctl restart jenkins.service

答案 7 :(得分:2)

在安装Jenkins之前,应先安装JDK:

apt install openjdk-8-jre

在安装Jenkins之后:

apt-get install jenkins

并检查Jenkins的状态(应为“活动”):

systemctl status jenkins.service

答案 8 :(得分:1)

如果它是一个AWS Linux实例,则可能是针对此问题的最简单的解决方法

sudo yum install java-1.8.0 -y 

sudo yum remove java-1.7.0-openjdk

答案 9 :(得分:1)

我正在尝试将其安装在kubuntu 18.04中,并且我已经确定已经安装了Java, 我通过尝试确认了

  

java -version

我得到了这样的输出

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)

由于我已经知道我的java PATH变量是在/ etc / environment文件中定义的,因此我将该文件添加到了/etc/init.d/jenkins文件的顶部

source /etc/environment

您甚至可以从/etc/init.d/jenkins文件中删除PATH,因为它已在/ etc / environment中定义

在那之后,我重新启动了我的jenkins服务器,它似乎可以从localhost:8080开始正常工作

答案 10 :(得分:0)

答案 11 :(得分:0)

就我而言,问题在于不受支持的 Java 版本

检查文件 /etc/init.d/jenkins 以了解支持哪些 Java 版本。

要查找支持的 Java 版本,请运行

grep -m 1 "JAVA_ALLOWED_VERSIONS" /etc/init.d/jenkins

输出将是这样的(你的可能不同)

JAVA_ALLOWED_VERSIONS=( "1.8" "11" )

就我而言,支持 1.8 和 11 版。我将使用版本 11。

使用命令安装支持的jre版本

对于 ubuntu/debian

sudo apt install openjdk-11-jre 

centOS 使用

sudo yum install java-11-openjdk-devel

找到新安装的jre的路径

对于 ubuntu/debian 路径是

/usr/lib/jvm/java-11-openjdk-amd64/bin/java

你可以在centOS上的/usr/lib/jvm/下找到路径

修改文件/etc/init.d/jenkins 在第 28 行,将 JAVA=`type -p java` 替换为 JAVA='/usr/lib/jvm/java-11-openjdk-amd64/bin/java'

现在运行命令重新加载 systemctl 守护进程

sudo systemctl daemon-reload

启动 jenkins 服务

sudo systemctl start jenkins

答案 12 :(得分:0)

我遇到以下错误:

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

解决方案是在以下文件中将NAME还原为jenkins(之前我已将其更改为“ NAME = ubuntu”):

sudo vi /etc/default/jenkins
    NAME=jenkins

现在重新启动已通过:

sudo service jenkins restart
sudo systemctl restart jenkins.service

希望有帮助。

答案 13 :(得分:0)

在我的情况下,端口8080被其他某些服务占用(Apache Airflow)。

因此,我在此文件中编辑HTTP端口:

sudo vi /etc/default/jenkins

然后启动该服务,它开始工作:

sudo service jenkins start

我在Ubuntu 18.04上安装了openjdk-8

答案 14 :(得分:0)

设置jenkins时遇到相同的问题,问题是未安装java,因此在路径中不可用。

最简单的方法是在此处使用scp将jdk二进制文件复制到aws ec2盒中,如果您制作一个脚本,则脚本将不起作用,因为它们会不断更新下载网址(Orale,我的意思是):     scp -i C:/Users/key-pair.pem jdk-8u191-linux-x64.tar.gz ec2-     user@54.183.220.7:〜/

$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

在这里,我在Loal窗口中下载tar.gz文件,并通过scp传输到AWS ec2-user(默认目录)。希望对您有所帮助。

答案 15 :(得分:0)

您只需要安装Java。 安装Java版本8后,它确实可以正常工作 使用以下命令:sudo apt install openjdk-8-jre-headless

答案 16 :(得分:0)

对于ubuntu 16.04,存在防火墙问题。您需要使用以下命令打开8080端口:

sudo ufw allow 8080

详细步骤如下:https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-ubuntu-16-04

答案 17 :(得分:0)

〜&gt; $ sudo vim /etc/rc.d/init.d/jenkins

候选=&#34;

的/ etc /替代/ 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 ##添加您的java路径

&#34;

答案 18 :(得分:0)

补充Guna Sekaran已经回答的内容。 Jenkins需要用户jenkins才能将jenkins作为服务运行。

添加用户点火&#39; useradd jenkins&#39;作为根 和火&#39; passwd jenkins&#39;在启动Jenkins作为服务之前以root身份。

答案 19 :(得分:-1)

vi /etc/init.d/jenkins

添加:

/usr/lib/jvm/java/jre/bin/java

答案 20 :(得分:-1)

在我的情况下,我是从root而不是jenkins用户启动jenkins服务

我做了

sed -i 's/JENKINS_USER="jenkins"/JENKINS_USER="root"/g  /etc/sysconfig/jenkins

然后

service jenkins restart

一切正常

答案 21 :(得分:-2)

rm -rf / var / log / jenkins 日志太大