/etc/init.d/minecraft ?

Discussion in 'Bukkit Help' started by Apokalix, Feb 8, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    Apokalix

    Hello,

    I'm french.. How to change /etc/init.d/minecraft for to launch automatically bukkit and for restart /etc/init.d/minecraft restart ?

    I have but it's for minecraft server ..

    Code:
    #!/bin/bash
    # /etc/init.d/minecraft
    # version 0.3.2 2011-01-27 (YYYY-MM-DD)
    
      ### BEGIN INIT INFO
      # Provides:   minecraft
      # Required-Start: $local_fs $remote_fs
      # Required-Stop:  $local_fs $remote_fs
      # Should-Start:   $network
      # Should-Stop:    $network
      # Default-Start:  2 3 4 5
      # Default-Stop:   0 1 6
      # Short-Description:    Minecraft server
      # Description:    Starts the minecraft server
      ### END INIT INFO
    
    #Settings
    SERVICE='minecraft_server.jar'
    USERNAME="minecraft"
    MCPATH='/home/minecraft/minecraft'
    INVOCATION='java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui'
    BACKUPPATH='/media/remote.share/minecraft.backup'
    
    ME=`whoami`
    as_user() {
      if [ "$ME" == "$USERNAME" ] ; then
        bash -c "$1"
      else
        su - $USERNAME -c "$1"
      fi
    }
    
    mc_start() {
      if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
      then
        echo "Tried to start but $SERVICE was already running!"
      else
        echo "$SERVICE was not running... starting."
        cd $MCPATH
        as_user "cd $MCPATH && screen -dmS minecraft $INVOCATION"
        sleep 7
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
          echo "$SERVICE is now running."
        else
          echo "Could not start $SERVICE."
        fi
      fi
    }
    
    mc_saveoff() {
            if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
            echo "$SERVICE is running... suspending saves"
            as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
                    as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
                    as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
                    sync
            sleep 10
        else
                    echo "$SERVICE was not running. Not suspending saves."
        fi
    }
    
    mc_saveon() {
            if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
            echo "$SERVICE is running... re-enabling saves"
                    as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
                    as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
        else
                    echo "$SERVICE was not running. Not resuming saves."
        fi
    }
    
    mc_stop() {
            if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
            then
                    echo "$SERVICE is running... stopping."
                    as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
                    as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
                    sleep 10
                    as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
                    sleep 7
            else
                    echo "$SERVICE was not running."
            fi
            if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
            then
                    echo "$SERVICE could not be shut down... still running."
            else
                    echo "$SERVICE is shut down."
            fi
    }
     
    mc_update() {
      if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
      then
        echo "$SERVICE is running! Will not start update."
      else
        MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\</a\> | cut -d \" -f 2`
        as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
        if [ -f $MCPATH/minecraft_server.jar.update ]
        then
          as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar"
          echo "Minecraft successfully updated."
        else
          echo "Minecraft update could not be downloaded."
        fi
      fi
    }
    
    mc_backup() {
      if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
      then
    #    echo "$SERVICE is running! Will not start backup."
    #  else
        echo "Backing up minecraft data"
        if [ -d $BACKUPPATH/world_`date "+%m.%d.%Y"` ]
        then
          for i in 1 2 3 4 5 6
          do
            if [ -d $BACKUPPATH/world_`date "+%m.%d.%Y"`-$i ]
            then
              continue
            else
              as_user "cd $MCPATH && cp -r world $BACKUPPATH/world_`date "+%m.%d.%Y"`-$i"
              break
            fi
          done
        else
          as_user "cd $MCPATH && cp -r world $BACKUPPATH/world_`date "+%m.%d.%Y"`"
        fi
        echo "Backing up the minecraft server executable"
        if [ -f "$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`.jar" ]
        then
          for i in 1 2 3 4 5 6
          do
            if [ -f "$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`-$i.jar" ]
            then
              continue
            else
              as_user "cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`-$i.jar\""
              break
            fi
          done
        else
          as_user "cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`.jar\""
        fi
      fi
      echo "Backup complete"
    }
     
    #Start-Stop here
    case "$1" in
      start)
        mc_start
        ;;
      stop)
        mc_stop
        ;;
      restart)
        mc_stop
        mc_start
        ;;
      update)
        mc_stop
        mc_backup
        mc_update
        mc_start
        ;;
      backup)
        mc_saveoff
        mc_backup
        mc_saveon
        ;;
      status)
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
          echo "$SERVICE is running."
        else
          echo "$SERVICE is not running."
        fi
        ;;
    
      *)
      echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart}"
      exit 1
      ;;
    esac
    
    exit 0
    Please help !

    Apokalix.
     
  2. Offline

    Jacob Litewski

    First, I'm assuming your running Linux. If not, this script will not work.
    Secondly, Change the SERVICE variable to the name of the craftbukkit file (Craftbukkit-0.0.1-SNAPSHOT.jar or something)
    MCPATH should be the FOLDER that contains Craftbukkit
    INVOCATION should be java -Xmx1024M -Xms1024M -jar craftbukkit.jar nogui where craftbukkit.jar is the SAME as SERVICE
    BACKUPPATH should be the location/where/you/want/the/file.saved

    I would set USERNAME to your Linux login name.
     
  3. Offline

    feverdream

    Use full paths ?
     
Thread Status:
Not open for further replies.

Share This Page