詹金斯活跃(退出)

Jenkins active (exited)

由于某种原因,Jenkins 一直停止工作,我必须重新启动 jenkins 服务才能使其再次工作。每次发生这种情况时,服务都是“活动(退出)”,但日志中没有任何内容。我使用 Ubuntu 16.04.

root@laran:~# service jenkins status
    ● jenkins.service - LSB: Start Jenkins at boot time
       Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
       Active: active (exited) since Sun 2017-03-05 06:09:46 EST; 6min ago
         Docs: man:systemd-sysv-generator(8)
      Process: 25459 ExecStop=/etc/init.d/jenkins stop (code=exited, status=0/SUCCESS)
      Process: 25477 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)

可能是 Linux 内核的 oom-killer ("out-of memory killer") 杀死了您的 JVM。如果物理内存不再足以容纳所有进程,它会向 selected 进程发送 SIGKILL 信号。检查 journalctl 的输出是否包含字符串 oom-killer 的行以确认。

oom-killer 在一定时间后才触发是正常的。通常,Linux 不会对进程请求的虚拟内存量施加限制(因此您的 JVM 可以轻松地在 512 MiB 系统上分配 2 GiB RAM)。但是,如果进程实际上开始 使用 分配的内存(在您的情况下:已用堆的数量增加),那么内核可能会发现物理内存量不再足够。这是 oom-killer 将 select 一个有前途的候选进程被杀死的点。 Jenkins作为一个非常消耗内存的非系统进程,很有可能会被kill掉。

你可以通过

解决问题
  • 为您的系统添加更多物理内存
  • 减少 JVM 内存设置(例如,较小的堆)

/var/lib/jenkins 下的文件和文件夹设置权限对我有用:

vim /etc/sysconfig/jenkins  
# make sure that $JENKINS_USER="jenkins"

chown -R jenkins:jenkins /var/lib/jenkins
chown -R jenkins:jenkins /var/cache/jenkins
chown -R jenkins:jenkins /var/log/jenkins
systemctl restart jenkins 

你更新了你的 Jenkins 了吗?

如果那么,请阅读此...

就我而言,是 Jenkins 更新更改了配置。我的自定义 jenkins 端口 (9090) 已更改(更新后默认为 8080)。我无法在 9090 端口上打开 jenkins 仪表板。所以我尝试了提到的建议。我检查了 service statusjournalctl 日志,我发现它们绝对具有误导性。服务詹金斯状态显示 Active: active (exited) 虽然服务已启动并且 运行。

我检查并确认 jenkins jvm 进程是 运行(使用 jps 命令显示 运行 java 进程列表)。

因此,在您全力以赴找出问题所在之前,只需 检查 jenkins 更新是否更改了任何配置 以及 jenkins 进程是否已经 运行在其他端口的后台。

我也是这样。

我先安装了 Apache,然后尝试安装 Jenkins。由于 Apache 使用我本地主机的端口 8080,它不允许 Jenkins 运行 在同一端口上,因为 Jenkins 的默认端口也是 8080。

快速解决方案:

停止 Apache 并再次尝试启动 Jenkins。这对我有用,可以将状态从 Excited 更改为 运行.

希望这对您有所帮助。

在我的例子中journalctl给出了一个非常明显的错误:

Feb 01 15:21:27 localhost.localdomain polkitd[1421]: Registered Authentication Agent for unix-process:26095:1614590 (system bus name :1.190 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freede
Feb 01 15:21:27 localhost.localdomain systemd[1]: Starting LSB: Jenkins Automation Server...
Feb 01 15:21:27 localhost.localdomain runuser[26110]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: Starting Jenkins Feb 01, 2020 3:21:27 PM Main verifyJavaVersion
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: SEVERE: Running with Java class version 56 which is not in the list of supported versions: [52, 55]. Run with the --enable-future-java flag to enable such be
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: java.lang.UnsupportedClassVersionError: 56.0
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: at Main.verifyJavaVersion(Main.java:174)
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: at Main.main(Main.java:142)
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: Jenkins requires Java versions [8, 11] but you are running with Java 12 from /usr/java/jdk-12.0.1
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: java.lang.UnsupportedClassVersionError: 56.0
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: at Main.verifyJavaVersion(Main.java:174)
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: at Main.main(Main.java:142)
Feb 01 15:21:28 localhost.localdomain runuser[26110]: pam_unix(runuser:session): session closed for user jenkins
Feb 01 15:21:28 localhost.localdomain jenkins[26102]: [  OK  ]
Feb 01 15:21:28 localhost.localdomain systemd[1]: Started LSB: Jenkins Automation Server.

基本上我是 运行 Java 12.0,其中 class 文件格式为 56,目前还不受支持。

这是截至 jenkins.noarch 0:2.204.2-1.1

$JENKINS_USER="jenkins" 应该在里面: vim /etc/sysconfig/jenkins

然后 运行:

chown -R jenkins:jenkins /var/log/jenkins
chown -R jenkins:jenkins /var/lib/jenkins
chown -R jenkins:jenkins /var/cache/jenkins

并重启詹金斯

只需先安装 java,然后再安装 jenkins...这使状态从退出变为 运行...顺序很重要,而不是以上建议如许可和 space... enter image description here

就我而言,我错误地删除了日志文件夹“/var/log/jenkins”。因此 jenkins 试图找到该文件夹​​但无法找到它,因此无法启动。

重新创建文件夹并将权限分配给 jenkins 用户解决了我的问题。

为 jenkins 用户分配权限的命令:

chown -R jenkins:jenkins /var/log/jenkins