Jenkins 的 agent 是运行在 slave 节点上的一个 java进程,用于接收 master 的指令,并执行动作。agent 一旦停止运行,Jenkins 上的所有指令都不能正常执行。所以会需要一个定时任务,检查 agent 是否存活。 crontab 写法 首先看看 crontab 内容,类似 这一节 中的例子 # crontab SHELL=/bin/bash PATH=/home/yourname/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 20 * * * * /home/yourname/monitor_agent.sh 上面这个 crontab 脚本指定了每小时的第20分钟,执行健康检查任务。需要注意的是: 脚本使用绝对路径 由于 这个原因 ,调用的脚本使用绝对路径 PATH 变量 Jenkins agent 是一个 java进程,需要事先指定 JDK 的路径。由于 这个原因 ,首先设置了运行时的 PATH 环境变量;后面添加的一连串路径是为了余下其他脚本中使用命令( ps 、grep 等)能正常执行。 监控脚本 上节 crontab 里调用了一个 monitor_agent.sh 脚本用于监控 agent 进程,内容如下: #!/bin/bash # monitor_agent.sh AGENT_PID=$(ps -ef | grep agent.jar | grep -v grep) if [ -z "${AGENT_PID}" ]; then /home/yourname/start_agent.sh fi 这个 monitor_agent.sh 脚本从进程列表中找出 agent.jar 的名字,如果不存在就执行启动 agent 的脚本。在执行前,需要为 monitor_agent.sh 增加可执行属性: $ chmod +x /home/yourname/monitor_agent.sh 启动脚本 上节 监控脚本 里调用的 start_agent.sh 则是 Jenkins 提供的启动命令,类似如下的命令: #!/bin/bash # start_agent.sh nohup java -jar agent.jar -jnlpUrl ....