centos7:jenkins无法执行shell脚本问题
一、脚本:为了防止jenkins杀死子进程
#!/bin/bash
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=DONTKILLME
NAME="rabbitmq-server-0.0.1-SNAPSHOT.jar"
echo $NAME
cd /home/software/
mv $NAME $NAME.bak
#复制新编译的包
cp /var/lib/jenkins/workspace/jenkins-rabbitmq/target/rabbitmq-server-0.0.1-SNAPSHOT.jar /home/software/
ID=`ps -ef | grep "$NAME" | grep -v "grep" | awk '{print $2}'` #注意此shell脚本的名称,避免自杀
if [ -z "$ID" ];then
echo "process id is empty, process is not existed..."
echo "process will start..."
nohup java -Dhudson.util.ProcessTree.disable=true -jar $NAME &
echo "process has start..."
else
echo $ID
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "process will restart..."
nohup java -Dhudson.util.ProcessTree.disable=true -jar $NAME &
echo "process has restart..."
fi
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
二、执行任务,shell脚本无效(权限问题)
三、这时候我们需要修改jenkin的配置文件和目录文件权限(不建议直接给777权限)
vim /etc/sysconfig/kenkins
进去以后找到JENKINS_USER=“jenkins” 这一行,修改为jenkins用户为root用户,如下
JENKINS_USER=“root”
四、修改为jenkins配置文件后,再修改jenkins目录权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
systemctl restart jenkins