Am 06.03.2011 02:25, schrieb Jake Moe:
> On 03/06/11 09:31, Florian Philipp wrote:
>> Am 05.03.2011 23:47, schrieb Jake Moe:
>>> I'm currently trying to write a simple initscript to run
>>> minecraft-server on one of my boxes.  I've looked at the ebuild provided
>>> via java-overlay, but it turns out it uses baselayout 2, and I'm not
>>> ready to go down that upgrade path on this particular box just yet.
>>>
>>> So far, I've managed to get a simple start() function written, which
>>> kinda-sorta "works"; it will start the server, but there are two problems:
>>>
>>> 1) The "server" was written to stay interactive on a console, so you can
>>> manage it from there.  As such, the process never exits, so the
>>> initscript gets stuck on "starting"
>>> 2) There is nowhere in the server config file to specify where it writes
>>> it's data files.  So when I run this from my initscript, it seems to
>>> default to the root directory, and I can't figure out how to tell it to
>>> use something else as a working directory.
>>>
>>> So far, I've got this:
>>>
>>> depend() {
>>>   need bootmisc localmount net
>>> }
>>>
>>> start() {
>>>   einfo "Starting Minecraft Server"
>>>   cd /usr/local/games/minecraft-server
>>>   start-stop-daemon --start --make-pidfile --pidfile
>>> /var/run/minecraft-server.pid \
>>>                     --exec /usr/bin/java -- -Xmx1024M -Xms1024M -jar
>>> /usr/local/games/minecraft-server/minecraft_server.jar nogui
>>>   eend $?
>>> }
>>>
>>> Do any of the experts here know a way out of my dilemma?
>>>
>>> Jake Moe
>>>
>>
>> You already know start-stop-daemon, good. Parameter --background will
>> force the program to detach. That solves your first problem.
>>
>> --chdir should solve your second problem. You should also consider
>> --user and --group to drop root privileges. It also sets $HOME in case
>> the server does not write to the working directory but the home directory.
>>
>> Hope this helps,
>> Florian Philipp
>>
> I've tried "--background", but then it just fails.  Adding "--verbose"
> as well gives the following:
> 
> jmoe@aus8617 /etc/init.d $ sudo /etc/init.d/minecraft-server start
>  * Starting Minecraft Server
> Starting /usr/bin/java...
> Detaching to start /usr/bin/java...done.   [ !! ]
> 
> Not the most helpful of messages.
>

Hmm, no clue what goes wrong. Joost already suggested it has something
to do with stdout and stderr. You can redirect them with -1 and -2 but I
don't think this solves your problem.

Maybe you should take a look at dev-java/java-service-wrapper. I've
never used it, though.

> For the second, of what is "--chdir" an argument?  If I read the man
> page for start-stop-daemon, it had "--chroot" and "--chuid", but no
> "--chdir".  I assume that "--chuid" can be used for changing the
> user:group of the resulting process, but did you mean chroot instead of
> chdir, or does that go with another command?
> 

In my man-page there is definitely a --chdir option. But I'm using
openrc so I guess it was introduced in baselayout-2. As a work-around,
you can wrap your daemon into a shell script that at first uses cd to
change the directory.

> Also, when I say "the root directory", I don't mean root's home
> directory (/root), I mean the root (/) directory.  So I wind up with
> config files in the root of my filesystem.  Not good.
> 

Well in that case it really seems to be the working directory, not the
home directory.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to