詹金斯死了,但是pid文件存在

时间:2013-08-27 22:35:07

标签: linux jenkins

我遇到了无法访问全新安装Jenkins的问题。这是错误和操作系统的详细信息:启动jenkins会导致“OK”状态消息,但是如果我运行status-all | grep jenkins导致:

jenkins dead but pid file exists

使用Yum作为程序包管理器在Red Hat Enterprise Linux Server 6.2(Santiago)上运行。

rpm -qa | grep java

java-1.7.0-openjdk-1.7.0.19-2.3.9.1.el6_4.x86_64
java-1.6.0-openjdk-1.6.0.0-1.61.1.11.11.el6_4.x86_64
tzdata-java-2011l-4.el6.noarch
libvirt-java-0.4.7-1.el6.noarch
libvirt-java-devel-0.4.7-1.el6.noarch
java-1.6.0-openjdk-devel-1.6.0.0-1.61.1.11.11.el6_4.x86_64

权限是:

ls -la /var/lib/jenkins/
total 8
drwxr-xr-x   2 jenkins jenkins 4096 Aug 27 00:21 .
drwxr-xr-x. 29 root    root    4096 Aug 27 14:47 ..

以前有人解决过这个问题吗?

17 个答案:

答案 0 :(得分:10)

JENKINS_AJP_PORT="8009"(或任何值)更改为JENKINS_AJP_PORT="-1"

它肯定会起作用。

答案 1 :(得分:8)

Set up a build pipeline with Jenkins and Amazon ECS上关注AWS教程时,我遇到了完全相同的错误。

更改端口无法解决问题。

我发现错误来自Jenkins安装的Java版本。

将java-1.7.0-openjdk更新为java-1.8.0-openjdk做了诀窍

编辑: 从Anatoly评论,到更新java:

sudo yum install java-1.8.0-openjdk

然后删除旧版本:

sudo yum remove java-1.7.0-openjdk.x86_64

最后,重启jenkins服务

sudo service jenkins restart

答案 2 :(得分:2)

通常tomcat服务正在接管8080端口。 尝试停止tomcat服务并重新运行jenkins服务。

服务tomcat停止;

服务jenkins开始

为我工作。

答案 3 :(得分:1)

我遇到了同样的错误,我无法以任何方式重启实例。

我在服务器中进行了“yum update”并修复了问题。

  • java版“1.7.0_55”
  • Jenkins ver。 1.571

答案 4 :(得分:1)

刚刚在RHEL安装时遇到过这个问题。对我来说,修复是明确设置JENKINS_JAVA_CMD配置参数。

E.g。

sudo vim /etc/sysconfig/jenkins
update:
    JENKINS_JAVA_CMD=""
to:
    JENKINS_JAVA_CMD="/usr/java/default/bin/java"

答案 5 :(得分:0)

当您的机器升级 Java 和较早版本安装的 Jenkins 时也会出现这种情况。 在 jenkins.xml 中更改 Java 路径。

答案 6 :(得分:0)

只是预感 - 默认情况下,RHEL / CentOS在/ tmp目录中禁用了文件执行。

尝试:

mount -o remount,exec /tmp

然后(重新)启动詹金斯。

这样可以从/ tmp /目录中执行二进制文件(也可以加载.so文件),看起来像Jenkins的这个特殊包装需要加载某种JNI代码。当我尝试在CentOS 6.4上安装和运行时,这是我唯一的问题。

如果可以,那么您可以设置它,以便在启动时使用/ etc / fstab中的设置(可行但可降低系统安全性)默认情况下发生这种情况,或者尝试破解安装的启动过程得到(不推荐),或者使用Tomcat或其他不需要在/ tmp目录上执行文件的包装来安装它(推荐但更多工作)。

答案 7 :(得分:0)

在以下文件中:

/etc/sysconfig/jenkins

我必须设置以下值:

JENKINS_USER="root"

答案 8 :(得分:0)

我遇到的错误实际上是因为/var/run/jenkins由root而不是jenkins用户拥有。以下为我解决了这个问题:

sudo chown -R jenkins:jenkins /var/run/jenkins

答案 9 :(得分:0)

尝试在/ etc / sysconfig / jenkins

中将用户从jenkins更改为root
JENKINS_USER="root"

OR

检查所有权     /var/lib/jenkins /var/cache/jenkins

将所有权更改为jenkins并将/ etc / sysconfig / jenkins中的用户更改为" jenkins"它会工作。 同时更改/var/logs/jenkins

的所有权

答案 10 :(得分:0)

确保jenkins.log文件的所有者是jenkins用户

chown jenkins:jenkins jenkins.log

如果没有正确的所有权,jenkins会在您启动服务后立即崩溃

答案 11 :(得分:0)

对于上述错误,我设法转到/var/run/jenkins.pid并删除了现有的处理ID。

然后jenkins进程启动并且现在成功运行。

答案 12 :(得分:0)

cd /etc/sysconfig/jenkins

更改JENKINS_AJP_PORT

更改
JENKINS_AJP_PORT="8009"

JENKINS_AJP_PORT="-1"

答案 13 :(得分:0)

以下帮助了我:

有些时候会有一些jenkins进程失效,所以ps -ef | grep jenkins杀死所有这些并重启,如上所述它将是干净的。

ps -ef | grep jenkins
sudo kill -kill <pid>

取自here(感谢@sharp)

答案 14 :(得分:0)

从日志中我的问题是 java.io.FileNotFoundException:/var/cache/jenkins/war/META-INF/MANIFEST.MF(Permission denied)

从我的用户Jenkins开始的所有权运行“jenkins”,chown'ing修复了问题

答案 15 :(得分:0)

请在以下步骤中进行更改(假设 - 您要将端口8888设置为jenkins端口)

<强> 1。你必须编辑/etc/init.d/jenkins。

在DAEMON_ARGS:

之后,在文件顶部添加以下两行

HTTP_PORT = 8888 JENKINS_ARGS =&#34; - HTTPPORT = $ HTTP_PORT&#34;

2.编辑/ etc / sysconfig / jenkins

并更改

JENKINS_PORT =&#34; 8888&#34;

使用终端

中的以下命令启动Jenkins服务
service jenkins start

检查詹金斯&#39;状态

service jenkins status

答案 16 :(得分:-1)

sudo vim /etc/sysconfig/jenkins
     update:
       JENKINS_USER="jenkins"
        to:


    JENKINS_USER="root"

为我工作