【问题标题】:Jenkins dead but pid file exists詹金斯死了但pid文件存在
【发布时间】:2013-08-27 22:35:07
【问题描述】:

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

jenkins dead but pid file exists

在 Red Hat Enterprise Linux Server 6.2 版(圣地亚哥)上运行,Yum 作为包管理器。

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

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

【问题讨论】:

  • 查看日志文件,看看您遇到了什么错误。
  • catalina.out 怎么样 - 那个也是空的?我的里面有各种各样的东西。还有一个 conf/logging.properties 可以用来调整日志的详细程度。
  • 这个盒子上没有tomcat。 - 由本文档安装:wiki.jenkins-ci.org/display/JENKINS/…
  • @user3811048 我也有同样的问题,但有点不同。当 Jenkins 停止 GitLab 时,可以通过浏览器访问,当 GitLab 停止时,Jenkins 可以通过浏览器访问,但不能同时访问两者,即使 Jenkins 运行在 8080 端口,GitLab 运行在 80 端口。

标签: linux jenkins


【解决方案1】:

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

它肯定会起作用。

【讨论】:

  • 我无话可说谢谢你!在我安装 Tomcat 后,我​​的 Jenkins 立即坏了,我尝试了各种修复方法,但在此之前没有任何效果!谢谢,谢谢,谢谢!
  • @user3811048 -- 我运行上面的命令它成功执行。但是当我再次检查状态时,我收到了相同的消息jenkins dead but pid file exists
  • 为什么这个改变会起作用,做出这个改变有什么影响? 8009 上没有任何监听,但进行此更改确实会让 Jenkins 重新启动。
  • @user3811048 请问那个配置文件在哪里?
【解决方案2】:

在关注 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

【讨论】:

  • 哇,完美,谢谢。更新java:安装sudo yum install java-1.8.0-openjdk,然后删除旧版本sudo yum remove java-1.7.0-openjdk.x86_64
  • 是的,这对我有帮助 =) 我认为亚马逊现在应该修复教程。
【解决方案3】:

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

服务 tomcat 停止;

服务 jenkins 启动

为我工作。

【讨论】:

    【解决方案4】:

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

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

    • java版本“1.7.0_55”
    • 詹金斯版本。 1.571

    【讨论】:

    • 哇,我尝试了上面列出的许多其他解决方案,只是更新它就可以了。我猜我更新到 Java 8 后,一些 Java 库依赖项已经过时了。
    【解决方案5】:

    刚刚在安装 RHEL 时遇到了这个问题。我的解决方法是显式设置 JENKINS_JAVA_CMD 配置参数。

    例如

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

    【讨论】:

    • 基于该配置文件中的注释,它说当它留空时它将使用“合适的”java。我想这应该只在你有多个 java 安装并且使用错误的时候才有效。
    【解决方案6】:

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

    试试:

    mount -o remount,exec /tmp
    

    然后(重新)启动 Jenkins。

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

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

    【讨论】:

    • mount: can't find /tmp in /etc/fstab or /etc/mtab - 我收到了这个错误。
    • 请注意下一个想要否决这个答案的人:错误“jenkins 已死,但 pid 文件存在”意味着 - 你启动了 jenkins,但它死了,只剩下 pid 文件。该错误消息不足以得出结论为什么它死了。我在这里的回答是基于一种预感。仅仅因为您的 Jenkins 不起作用并且您不知道为什么,并不意味着您应该对我的答案投反对票;)我觉得有趣的是,下面的帖子说“它肯定会起作用”同样可能不起作用 - 原因与上述相同。
    • 请否决这个答案 - 特别是如果您不知道如何管理 Linux 机器或您的机器有什么问题。
    • @coding_idot - 只是为后代回答 - 此错误意味着 /etc/fstab 的正常挂载列表中没有 /tmp 目录 - 您可能正在运行不同类型的 Linux。 (原来的帖子谈到了 RHEL,这就是为什么我的回答是针对那个的。)
    【解决方案7】:

    从日志中我的问题是 java.io.FileNotFoundException:/var/cache/jenkins/war/META-INF/MANIFEST.MF(权限被拒绝)

    我的用户 Jenkins 将所有权切换到“jenkins”,chown'ing 解决了问题

    【讨论】:

      【解决方案8】:

      以下对我有帮助:

      有时会有一些陈旧的詹金斯进程,所以 ps -ef | grep jenkins 杀死所有这些并像上面那样重新启动它会干净。

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

      取自here(感谢@sharp)

      【讨论】:

        【解决方案9】:
        cd /etc/sysconfig/jenkins
        

        更改 JENKINS_AJP_PORT

        改成

        JENKINS_AJP_PORT="8009"
        

        JENKINS_AJP_PORT="-1"
        

        【讨论】:

        • 为什么这个改变会起作用,做出这个改变有什么影响? 8009 上没有任何监听,但进行此更改确实会让 Jenkins 重新启动。
        【解决方案10】:

        对于上述错误,我设法转到 /var/run/jenkins.pid 并删除了一个已经存在的处理 ID。

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

        【讨论】:

          【解决方案11】:

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

          chown jenkins:jenkins jenkins.log
          

          如果没有正确的所有权,jenkins 一启动服务就会崩溃

          【讨论】:

            【解决方案12】:

            尝试在 /etc/sysconfig/jenkins 中将用户从 jenkins 更改为 root

            JENKINS_USER="root"
            

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

            将所有权更改为 jenkins 并将 /etc/sysconfig/jenkins 中的用户更改为“jenkins”,它将起作用。 同时更改/var/logs/jenkins的所有权

            【讨论】:

              【解决方案13】:

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

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

              【讨论】:

                【解决方案14】:

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

                1.您必须编辑 /etc/init.d/jenkins。

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

                HTTP_PORT=8888 JENKINS_ARGS="--httpPort=$HTTP_PORT"

                2.编辑/etc/sysconfig/jenkins

                改变

                JENKINS_PORT="8888"

                从终端使用以下命令启动 Jenkins 服务

                service jenkins start
                

                检查 Jenkins 的状态

                service jenkins status
                

                【讨论】:

                  【解决方案15】:

                  在以下文件中:

                  /etc/sysconfig/jenkins
                  

                  我必须设置以下值:

                  JENKINS_USER="root"
                  

                  【讨论】:

                    【解决方案16】:

                    当您的机器使用旧版 Java 升级 Java 和 Jenkins 时,也会出现这种情况。 更改 jenkins.xml 中的 Java 路径。

                    【讨论】:

                      【解决方案17】:
                      sudo vim /etc/sysconfig/jenkins
                           update:
                             JENKINS_USER="jenkins"
                              to:
                      
                      
                          JENKINS_USER="root"
                      

                      为我工作

                      【讨论】:

                      • 请编辑更多信息。不鼓励使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。我们在这里努力成为知识的资源。
                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-03-30
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-05-05
                      • 2013-08-27
                      相关资源
                      最近更新 更多