修改job的config.xm后不重启服务生效

本文介绍了一种在Jenkins中不重启服务即可使job配置生效的方法。通过直接修改job的config.xml文件,并利用jenkins内置命令reload,可以避免因频繁更改配置而重启服务器的繁琐步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:https://www.cnblogs.com/zndxall/p/8459846.html

任务一 修改job的config.xm后不重启服务生效

描述:有时候,我们的构建是带参数构建的,但是参数内容会经常有变化,就需要手动去修改参数,比如某一个模块的代码经常会迁分支,也会合入主线,每次有新的分支增加的时候就需要去界面配置,有分支合入的时候,又要去界面删除,这样很麻烦。

分析:既然界面的配置都会被保存在任务的$jenkins_path/jobs/$job/config.xml文件中,那么只要修改这个config.xml文件就可以了。

难点:发现,修改了这个文件以后,再去刷jenkins界面,修改并没有生效,查资料说,需要重启服务器才能生效,重启后果然生效了,但是这并不使用,有没什么方法不需要重启就能生效呢。

解决:使用jenkins的内置命令reload即可,命令为:curl -u admin:1234456 -X POST $jenkins_url/$job_name/reload 。

  这样,不需要重启就能生效。(admin:1234456 为jenkins网址的账号信息

前提:需要在系统管理 –> Configure Global Security中调整设置:

取消“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”的勾选。 




### 使用 `gunicorn_config.py` 配置 Gunicorn 定时自动重启 为了使 Gunicorn 能够定时自动重启,可以利用 Python 的内置模块如 `signal` 和 `os` 来编写自定义逻辑并将其集成到 `gunicorn_config.py` 文件中。然而更推荐的方式是借助外部工具比如 Supervisor 或者 Linux 的 cron 作业来定期发送信号给 Gunicorn 进程触发其平滑重启。 #### 方法一:通过修改 `gunicorn_config.py` 可以在 `gunicorn_config.py` 中加入一段代码用于监听特定时间间隔后执行重载操作: ```python import signal import time from threading import Timer def restart_on_timer(): """Restart worker processes after a set interval.""" def kill_worker(signum, frame): raise KeyboardInterrupt # Set the timer to trigger every hour (3600 seconds) t = Timer(3600.0, lambda: os.kill(os.getpid(), signal.SIGUSR1)) t.daemon = True t.start() ``` 这段脚本会在每个小时结束时向当前工作进程发送 SIGUSR1 信号从而引起一次优雅的重启[^1]。 需要注意的是这种方法可能并适用于所有的应用场景,并且可能会带来一些复杂度上的增加。因此建议考虑下面介绍的方法二作为替代方案。 #### 方法二:使用 Supervisord 实现定时重启 Supervisord 可以很方便地管理和监控多个守护程序,包括但限于 Gunicorn 应用实例。通过配置 supervisord.conf 文件中的 eventlistener 插件配合事件通知机制能够轻松达成目的: ```ini [eventlistener:autorestart] command=while true; do sleep 3600 && supervisorctl restart gunicorn_app_name ; done events=TICK_60 stdout_logfile=/var/log/supervisor/autorestart.log stderr_logfile=/var/log/supervisor/autorestart_err.log ``` 上述配置使得 Supervisord 每隔一个小时就会尝试重新启动名为 "gunicorn_app_name" 的应用程序[^3]。 此方式仅简单易懂而且稳定性更高,同时也便于维护人员理解和排查问题所在。 #### 方法三:利用 Cron Job 执行计划任务 对于那些希望引入额外依赖的服务来说,还可以直接创建一个简单的 shell script 并安排它按照预定的时间表运行: ```bash #!/bin/bash sudo systemctl restart gunicorn.service ``` 接着编辑 crontab (`crontab -e`) 添加如下条目让该脚本每天凌晨两点钟被执行: ``` 0 2 * * * /path/to/restart_gunicorn.sh >> /dev/null 2>&1 ``` 这种方式同样有但也存在局限性——即无法感知实际的工作负载状态就强制进行了重启动作[^4]。 综上所述,虽然可以通过调整 `gunicorn_config.py` 来实现这一功能,但从实践角度来看,采用 Supervisord 或 Crontab 等成熟解决方案往往更为合理可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值