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}"