1. 程式人生 > >jenkins自動殺掉衍生程序怎麼解決

jenkins自動殺掉衍生程序怎麼解決

解決辦法:

  1. 啟動 Jenkins 的時候:加上 -Dhudson.util.ProcessTree.disable=true,也就是 java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war 或者 修改/etc/sysconfig/jenkins配置,在JENKINS_JAVA_OPTIONS中加入-Dhudson.util.ProcessTree.disable=true。需要重啟jenkins生效
  2. 在後臺程序前加上 BUILD_ID=dontKillMe,也就是 BUILD_ID=dontKillMe nohup npm start >/var/app/nohup.out 2>&1 & 或者在 execute shell輸入框中加入BUILD_ID=DONTKILLME,即可防止jenkins殺死啟動的程序

用了上面二個方法後,就解決jenkins自動殺npm程序的問題了.

shell例項:

#!/bin/bash

# 環境
ACTIVE=daily

# jar包本地maven倉庫路徑
JAR_PATH='/root/.m2/repository/com/test/0.0.1-SNAPSHOT/'

# 程序名
PNAME='test-0.0.1-SNAPSHOT.jar'

# 查詢程序id並且殺掉
#ps -ef | grep $PNAME | grep -v grep | awk '{print $2}'  | xargs kill -9
PID=$(ps -ef | grep $PNAME | grep -v grep | awk '{print $2}')

echo "start pid: $PID"

kill -9 $PID

# 啟動jar包
BUILD_ID=dontKillMe nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/$PNAME --spring.profiles.active=$ACTIVE &

NEW_PID=$(ps -ef | grep $PNAME | grep -v grep | awk '{print $2}')

echo "start success,new pid: $NEW_PID"


echo "------------- end ---------------"