#tomcat #jenkins #centos #init.d
#tomcat #дженкинс #centos #init.d
Вопрос:
Я использую следующий скрипт init.d, любезно предоставленный веб-сайтом jenkins ci https://wiki.jenkins-ci.org/display/JENKINS/JenkinsLinuxStartupScript
Он отлично работает, когда я запускаю и останавливаю jenkins, но когда я запрашиваю статус, он выдает ошибку. Как я могу заставить его правильно сообщать о состоянии?
[root@jenkins01 init.d]# service jenkins start
Starting Tomcat: Using CATALINA_BASE: /apps/tomcat/apache-tomcat-7.0.54
Using CATALINA_HOME: /apps/tomcat/apache-tomcat-7.0.54
Using CATALINA_TMPDIR: /apps/tomcat/apache-tomcat-7.0.54/temp
Using JRE_HOME: /usr/java/jdk1.7.0_13
Using CLASSPATH: /apps/tomcat/apache-tomcat-
7.0.54/bin/bootstrap.jar:/apps/tomcat/apache-tomcat-7.0.54/bin/tomcat-juli.jar
Using CATALINA_PID: /apps/tomcat/jenkins-tomcat.pid
Tomcat started.
[root@jenkins01 init.d]# service jenkins status
status: Unknown job: tomcat
[root@jenkins01 init.d]# cat /apps/tomcat/jenkins-tomcat.pid
8919
Вот сценарий в полном объеме, слегка адаптированный к моим настройкам:
#!/bin/sh
#
# Startup script for the Jenkins Continuous Integration server
# (via Jakarta Tomcat Java Servlets and JSP server)
#
# chkconfig: - 85 15
# description: Jakarta Tomcat Java Servlets and JSP server
# processname: tomcat
# pidfile: /var/run/tomcat.pid
# Set Tomcat environment.
JENKINS_USER=tomcat
LOCKFILE=/var/lock/jenkins
export PATH=/usr/local/bin:$PATH
export HOME=/apps/tomcat
export JAVA_HOME=/usr/java/jdk1.7.0_13
export JENKINS_BASEDIR=/apps/tomcat
export TOMCAT_HOME=/apps/tomcat/apache-tomcat-7.0.54
export CATALINA_PID=$JENKINS_BASEDIR/jenkins-tomcat.pid
export CATALINA_OPTS="-DJENKINS_HOME=$JENKINS_BASEDIR/jenkins-home -Xmx512m -Djava.awt.headless=true"
[ -f $TOMCAT_HOME/bin/catalina.sh ] || exit 0
export PATH=$PATH:/usr/bin:/usr/local/bin
# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n "Starting Tomcat: "
su -p -s /bin/sh $JENKINS_USER -c "$TOMCAT_HOME/bin/catalina.sh start"
RETVAL=$?
echo
[ $RETVAL = 0 ] amp;amp; touch $LOCKFILE
;;
stop)
# Stop daemons.
echo -n "Shutting down Tomcat: "
su -p -s /bin/sh $JENKINS_USER -c "$TOMCAT_HOME/bin/catalina.sh stop"
RETVAL=$?
echo
[ $RETVAL = 0 ] amp;amp; rm -f $LOCKFILE
;;
restart)
$0 stop
$0 start
;;
condrestart)
[ -e $LOCKFILE ] amp;amp; $0 restart
;;
status)
status tomcat
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
Ответ №1:
Я столкнулся с теми же проблемами, что и вы, скрипт на веб-сайте просто неправильный, я обновил его (я тестировал на Red Hat).
Ошибки были:
-
отсутствует исходный код библиотеки функций (без него команда status использовалась вместо функции status, определенной в библиотеке)
# Source function library.
. /etc/rc.d/init.d/functions -
неправильное имя процесса в описании (tomcat вместо jenkins)
-
неправильный pid-файл в описании
-
неправильный синтаксис статуса, правильный:
status -p $CATALINA_PID -l $(basename $LOCKFILE) jenkins