我使用以下内容在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.
这两者都是无益的。我该如何解决这个问题?
答案 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帖子
如果上述步骤无效,请尝试确保解决所有权限问题:
jenkins
用户无权运行它,然后在配置中将jenkins
更改为root
(描述为 {{ 3}} 强>)chmod
设置755
安装文件夹的java
权限 最后是什么帮助了我的结果
当我尝试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)
看起来像Java版本冲突。
请参阅https://medium.com/lucian-daniliuc/upgrading-jenkins-on-ubuntu-14-04-lts-df3e1209f98c
答案 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 日志太大