启动Jenkins时持续抛出异常的技术求助
每当我运行命令
java -jar jenkins.war --ajp13Port=-1 --httpPort=8080时都会抛出异常。最初Jenkins以守护进程模式启动,进程会自动重启,之后我尝试手动启动,但仍遇到相同错误。我甚至尝试使用旧版本的Jenkins,问题依旧。Jenkins版本:2.107.2,运行路径:/Applications/Jenkins/jenkins.war,webroot:$user.home/.jenkins,2018年4月25日 下午2:54:55,Main deleteWinstoneTempContents警告:无法删除相关临时内容...
针对你遇到的Jenkins启动问题,我结合自己运维Jenkins的经验,整理了几个经测试有效的解决方向:
1. 优先解决Winstone临时目录权限问题
那个deleteWinstoneTempContents警告是关键线索——Jenkins依赖的Winstone服务器无法清理临时文件,大概率是临时目录权限不足或被占用:
- 默认临时目录在
/tmp/winstone(macOS/Linux),直接手动删除该目录:rm -rf /tmp/winstone - 重启Jenkins时,它会自动重建这个目录并配置正确权限,就能解决无法删除临时内容的警告
2. 修复Jenkins主目录权限混乱
你的webroot是$user.home/.jenkins,如果之前用不同用户(比如root)启动过Jenkins,会导致这个目录的所有者和权限不匹配:
- 执行命令修改目录所有者:
chown -R 你的用户名:你的用户名 ~/.jenkins(替换成实际启动Jenkins的用户) - 同步调整目录权限:
chmod -R 755 ~/.jenkins,确保当前用户有完整的读写权限
3. 排查8080端口占用情况
虽然你指定了--httpPort=8080,但这个端口可能被其他进程占用,导致Jenkins启动失败后自动重启:
- macOS下用
lsof -i :8080找到占用端口的进程PID,再用kill -9 [PID]强制杀掉 - Linux下可以用
ss -tulpn | grep 8080排查占用进程,清理后再重启Jenkins
4. 调整JVM内存参数避免启动异常
有时候JVM内存不足会导致Jenkins启动失败或自动重启,给启动命令加内存参数试试:
java -Xms512m -Xmx1024m -jar jenkins.war --ajp13Port=-1 --httpPort=8080
-Xms是初始堆内存,-Xmx是最大堆内存,可根据你的机器配置调整数值(比如1G/2G)
5. 清理Jenkins缓存和旧war文件
如果上述方法都无效,试试清理缓存和解压的war包:
- 删除
~/.jenkins/caches下的所有内容,清除旧缓存 - 删除
~/.jenkins/war目录,这个是Jenkins启动时解压的war包内容,重启会自动重新解压
如果还是有问题,建议查看~/.jenkins/logs/jenkins.log日志文件,里面会有更详细的异常堆栈信息,能帮你定位具体问题。
内容的提问来源于stack exchange,提问作者KUSH SHAH

