Skip to content

Instantly share code, notes, and snippets.

@achimnol
Created March 15, 2013 11:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save achimnol/5169375 to your computer and use it in GitHub Desktop.
Save achimnol/5169375 to your computer and use it in GitHub Desktop.
An upstart configuration for Minecraft and mcbot (https://github.com/achimnol/mcbot) daemonization
description "Minecraft Chatting Bot Daemon"
start on started minecraft
stop on stopping minecraft
chdir /home/daybreaker/minecraft/bin/mcbot
console log
pre-start script
sleep 1
end script
exec python bot.py <YOUR-IRC-SERVER> <YOUR-IRC-PORT> <BOT-NICK> "#<YOUR-CHANNEL>" ipc:///home/daybreaker/minecraft/mc_server.stdout.sock ipc:///home/daybreaker/minecraft/mc_server.stdin.sock
# vim: ft=upstart
description "Minecraft Daemon"
start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]
chdir /home/daybreaker/minecraft
env MCPATH=/home/daybreaker/minecraft
env ZMQ=/home/daybreaker/minecraft/bin/0proxy
console log
pre-start script
rm -f stdin.fifo
rm -f stdout.fifo
mkfifo stdin.fifo
mkfifo stdout.fifo
chmod 600 *.fifo
$ZMQ -i ipc://$MCPATH/mc_server.stdin.sock > stdin.fifo &
stdin_0proxy_pid=$!
echo $stdin_0proxy_pid > 0proxy.stdin.pid
$ZMQ -o ipc://$MCPATH/mc_server.stdout.sock < stdout.fifo &
stdout_0proxy_pid=$!
echo $stdout_0proxy_pid > 0proxy.stdout.pid
sleep 1
end script
script
exec 2>stdout.fifo
exec >stdout.fifo
exec java -Xms1024M -Xmx1536M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=2 -XX:+AggressiveOpts -Djava.net.preferIPv4Stack=true -Dfile.encoding=1208 -jar minecraft_server.jar nogui < stdin.fifo
end script
pre-stop script
echo 'save-all' > stdin.fifo
sleep 1
end script
post-stop script
{
stdin_0proxy_pid=`cat 0proxy.stdin.pid`
stdout_0proxy_pid=`cat 0proxy.stdout.pid`
kill $stdin_0proxy_pid
kill $stdout_0proxy_pid
} &
sleep 2
rm -f *.pid
rm -f *.fifo
end script
# vim: ft=upstart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment