2 # /etc/init.d/minecraft 
   3 # version 0.3.2 2011-01-27 (YYYY-MM-DD) 
   7 # Required-Start: $local_fs $remote_fs 
   8 # Required-Stop:  $local_fs $remote_fs 
   9 # Should-Start:   $network 
  10 # Should-Stop:    $network 
  11 # Default-Start:  2 3 4 5 
  13 # Short-Description:    Minecraft server 
  14 # Description:    Starts the minecraft server 
  18 SERVICE
='minecraft_server.jar' 
  20 MCPATH
='/home/minecraft/minecraft' 
  22 INVOCATION
="java -Xmx1024M -Xms1024M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar minecraft_server.jar nogui" 
  23 BACKUPPATH
='/home/minecraft/minecraft/minecraft.backup' 
  27   if [ $ME == $USERNAME ] ; then 
  30     su 
- $USERNAME -c "$1" 
  35   if ps ax 
| grep -v grep | grep -v -i SCREEN 
| grep $SERVICE > /dev
/null
 
  37     echo "Tried to start but $SERVICE was already running!" 
  39     echo "$SERVICE was not running... starting." 
  41     as_user 
"cd $MCPATH && screen -dmS minecraft $INVOCATION" 
  43     if ps ax 
| grep -v grep | grep -v -i SCREEN 
| grep $SERVICE > /dev
/null
 
  45       echo "$SERVICE is now running." 
  47       echo "Could not start $SERVICE." 
  53         if ps ax 
| grep -v grep | grep -v -i SCREEN 
| grep $SERVICE > /dev
/null
 
  55                 echo "$SERVICE is running... suspending saves" 
  56                 as_user 
"screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'" 
  57                 as_user 
"screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'" 
  58                 as_user 
"screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'" 
  62                 echo "$SERVICE was not running. Not suspending saves." 
  67         if ps ax 
| grep -v grep | grep -v -i SCREEN 
| grep $SERVICE > /dev
/null
 
  69                 echo "$SERVICE is running... re-enabling saves" 
  70                 as_user 
"screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'" 
  71                 as_user 
"screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'" 
  73                 echo "$SERVICE was not running. Not resuming saves." 
  78         if ps ax 
| grep -v grep | grep -v -i SCREEN 
| grep $SERVICE > /dev
/null
 
  80                 echo "$SERVICE is running... stopping." 
  81                 as_user 
"screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'" 
  82                 as_user 
"screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'" 
  84                 as_user 
"screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'" 
  87                 echo "$SERVICE was not running." 
  89         if ps ax 
| grep -v grep | grep -v -i SCREEN 
| grep $SERVICE > /dev
/null
 
  91                 echo "$SERVICE could not be shut down... still running." 
  93                 echo "$SERVICE is shut down." 
  99   if ps ax 
| grep -v grep | grep -v -i SCREEN 
| grep $SERVICE > /dev
/null
 
 101     echo "$SERVICE is running! Will not start update." 
 103 #    MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\</a\> | cut -d \" -f 2` 
 104     MC_SERVER_URL
="https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar?" 
 105     as_user 
"cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL" 
 106     if [ -f $MCPATH/minecraft_server.jar.update 
] 
 108       if `diff $MCPATH/minecraft_server.jar $MCPATH/minecraft_server.jar.update >/dev/null` 
 110           echo "You are already running the latest version of $SERVICE." 
 112           as_user 
"mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar" 
 113           echo "Minecraft successfully updated." 
 116       echo "Minecraft update could not be downloaded." 
 122    echo "Backing up minecraft world" 
 123    if [ -d $BACKUPPATH/`date "+%Y.%m.%d"`_world 
] 
 127        if [ -d $BACKUPPATH/`date "+%Y.%m.%d"`-${i}_world 
] 
 131          as_user 
"cd $MCPATH && cp -r world $BACKUPPATH/`date "+%Y.
%m.
%d
"`-${i}_world" 
 136      as_user 
"cd $MCPATH && cp -r world $BACKUPPATH/`date "+%Y.
%m.
%d
"`_world" 
 137      echo "Backed up world" 
 139    echo "Backing up the minecraft server executable" 
 140    if [ -f "$BACKUPPATH/`date "+%Y.
%m.
%d
"`_minecraft_server.jar" ] 
 144        if [ -f "$BACKUPPATH/`date "+%Y.
%m.
%d
"`-${i}_minecraft_server.jar" ] 
 148          as_user 
"cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/`date "+%Y.
%m.
%d
"`-${i}_minecraft_server.jar\"" 
 153      as_user 
"cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/`date "+%Y.
%m.
%d
"`_minecraft_server.jar\"" 
 155    echo "Backup complete" 
 183     if ps ax 
| grep -v grep | grep -v -i SCREEN 
| grep $SERVICE > /dev
/null
 
 185       echo "$SERVICE is running." 
 187       echo "$SERVICE is not running." 
 192   echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart}"