天天看点

jenkins启动配置文件编写

root@debian45:/etc/init.d# cat jenkins

#!/bin/bash

# /etc/init.d/jenkins

# debian-compatible jenkins startup script.

# Amelia A Lewis 

#

### BEGIN INIT INFO

# Provides:          jenkins

# Required-Start:    $remote_fs $syslog $network

# Required-Stop:     $remote_fs $syslog $network

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Start Jenkins at boot time

# Description:       Controls Jenkins Automation Server

### END INIT INFO

PATH=/bin:/usr/bin:/sbin:/usr/sbin

DESC="Jenkins Automation Server"

NAME=jenkins

SCRIPTNAME=/etc/init.d/$NAME

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

#DAEMON=$JENKINS_SH

DAEMON=/usr/bin/daemon

DAEMON_ARGS="--name=$NAME --inherit --env=JENKINS_HOME=$JENKINS_HOME --output=$JENKINS_LOG --pidfile=$PIDFILE"

if [ -n "$UMASK" ]; then

    DAEMON_ARGS="$DAEMON_ARGS --umask=$UMASK"

fi

SU=/bin/su

# Exit if the package is not installed

if [ ! -x "$DAEMON" ]; then

    echo "daemon package not installed" >&2

    exit 1

# Exit if not supposed to run standalone

if [ "$RUN_STANDALONE" = "false" ]; then

    echo "Not configured to run standalone" >&2

# load environments

if [ -r /etc/default/locale ]; then

  . /etc/default/locale

  export LANG LANGUAGE

elif [ -r /etc/environment ]; then

  . /etc/environment

# Load the VERBOSE setting and other rcS variables

. /lib/init/vars.sh

# Define LSB log_* functions.

# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.

. /lib/lsb/init-functions

# Make sure we run as root, since setting the max open files through

# ulimit requires root access

if [ `id -u` -ne 0 ]; then

    echo "The $NAME init script can only be run as root"

check_tcp_port() {

    local service=$1

    local assigned=$2

    local default=$3

    local assigned_address=$4

    local default_address=$5

    if [ -n "$assigned" ]; then

        port=$assigned

    else

        port=$default

    fi

    if [ -n "$assigned_address" ]; then

        address=$assigned_address

        address=$default_address

    count=`netstat --listen --numeric-ports | grep $address\:$port[[:space:]] | grep -c . `

    if [ $count -ne 0 ]; then

        echo "The selected $service port ($port) on address $address seems to be in use by another program "

        echo "Please select another address/port combination to use for $NAME"

        return 1

}

# Function that starts the daemon/service

do_start()

{

    # the default location is /var/run/jenkins/jenkins.pid but the parent directory needs to be created

    mkdir `dirname $PIDFILE` > /dev/null 2>&1 || true

    chown $JENKINS_USER `dirname $PIDFILE`

    # Return

    #   0 if daemon has been started

    #   1 if daemon was already running

    #   2 if daemon could not be started

    $DAEMON $DAEMON_ARGS --running && return 1

    # Verify that the jenkins port is not already in use, winstone does not exit

    # even for BindException

    check_tcp_port "http" "$HTTP_PORT" "8080" "$HTTP_HOST" "0.0.0.0" || return 2

    # If the var MAXOPENFILES is enabled in /etc/default/jenkins then set the max open files to the

    # proper value

    if [ -n "$MAXOPENFILES" ]; then

        [ "$VERBOSE" != no ] && echo Setting up max open files limit to $MAXOPENFILES

        ulimit -n $MAXOPENFILES

    # notify of explicit umask

    if [ -n "$UMASK" ]; then

        [ "$VERBOSE" != no ] && echo Setting umask to $UMASK

    # --user in daemon doesn't prepare environment variables like HOME, USER, LOGNAME or USERNAME,

    # so we let su do so for us now

    $SU -l $JENKINS_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS   -Xms512m -Xmx1024m -XX:PermSize=128M -XX:PermSize=256M -jar $JENKINS_WAR $JENKINS_ARGS" || return 2

# Verify that all jenkins processes have been shutdown

# and if not, then do killall for them

get_running()

    return `ps -U $JENKINS_USER --no-headers -f | egrep -e '(java)' | grep -v defunct | grep -c . `

force_stop()

    get_running

    if [ $? -ne 0 ]; then

killall -u $JENKINS_USER java daemon || return 3

# Get the status of the daemon process

get_daemon_status()

    $DAEMON $DAEMON_ARGS --running || return 1

# Function that stops the daemon/service

do_stop()

    #   0 if daemon has been stopped

    #   1 if daemon was already stopped

    #   2 if daemon could not be stopped

    #   other if a failure occurred

    get_daemon_status

    case "$?" in

0)

   $DAEMON $DAEMON_ARGS --stop || return 2

        # wait for the process to really terminate

        for n in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do

            sleep 1

            $DAEMON $DAEMON_ARGS --running || break

        done

        if get_daemon_status; then

       force_stop || return 3

        fi

   ;;

*)

   force_stop || return 3

    esac

    # Many daemons don't delete their pidfiles when they exit.

    rm -f $PIDFILE

    return 0

# Verify the process did in fact start successfully and didn't just bomb out

do_check_started_ok() {

    sleep 1

    if [ "$1" -ne "0" ]; then return $1; fi

    if [ "$?" -eq "0" ]; then

        return 2

        return 0

case "$1" in

  start)

    log_daemon_msg "Starting $DESC" "$NAME"

    do_start

    START_STATUS="$?"

    do_check_started_ok "$START_STATUS"

        0|1) log_end_msg 0 ;;

        2) log_end_msg 1 ; exit 7 ;;

    ;;

  stop)

    log_daemon_msg "Stopping $DESC" "$NAME"

    do_stop

        2) log_end_msg 1 ; exit 100 ;;

  restart|force-reload)

    #

    # If the "reload" option is implemented then remove the

    # 'force-reload' alias

    log_daemon_msg "Restarting $DESC" "$NAME"

      0|1)

        do_start

        START_STATUS="$?"

        sleep 1

        do_check_started_ok "$START_STATUS"

        case "$?" in

          0) log_end_msg 0 ;;

          1) log_end_msg 1 ; exit 100 ;; # Old process is still running

          *) log_end_msg 1 ; exit 100 ;; # Failed to start

        esac

        ;;

      *)

  # Failed to stop

log_end_msg 1

;;

  status)

get_daemon_status

case "$?" in

echo "$DESC is running with the pid `cat $PIDFILE`"

rc=0

get_running

procs=$?

if [ $procs -eq 0 ]; then

echo -n "$DESC is not running"

if [ -f $PIDFILE ]; then

echo ", but the pidfile ($PIDFILE) still exists"

rc=1

else

echo

rc=3

echo "$procs instances of jenkins are running at the moment"

echo "but the pidfile $PIDFILE is missing"

exit $rc

esac

  *)

    echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2

    exit 3

exit 0

我这里是yum安装的配置,修改成和自己一直的即可

参考 http://pkg.jenkins-ci.org/