Skip to content

themanaworld/tmw-tools

Repository files navigation

There are 3 front-facing scripts for this new pidfile-based restart system.

All of them belong in ~/bin/, although one of them is not actually a script.
(it is source'd, which follows $PATH)

restart-all     Call this on first boot
                if REBUILD is not empty, it will first pull, build, and install
                from the tmw-eathena repository.
                In bash you can do this like: REBUILD=sure restart-all
restart-world   Call this if you only want to restart one server.
                The first argument is the directory, e.g. ~/tmwa-server-data/
                After that, you may pass --manual or --auto to not-pull or pull
                script updates. If neither is specified, the value of PULL is
                used.
                This does NOT use AUTO_WORLDS or MANUAL_WORLDS.
restart-config  Contains configuration settings.
                SERVER_SOURCE is the location of the tmw-eathena clone.
                LOGIN_WORLD is the location of the clone that contains the
                    account data. It does not necessarily have to correspond to
                    a world that actually starts, although it does in the
                    current configuration
                AUTO_WORLDS is an array (space separated, surrounded by
                    parentheses) of world directories that will have updates
                    pulled when calling restart-all.
                MANUAL_WORLDS is an array of world directories that will not
                    have updates pulled when calling restart-all
                VERBOSE controls whether the servers will print their output
                    to the tty or have it redirected to /dev/null. Use if if
                    you have any problems. It is inspected by the low-level
                    command restart-pid.
                REBUILD controls whether the server sources will be rebuilt
                    during restart-all.
                PULL controls whether updates should be pulled by
                    restart-world. It is ignored if --auto or --manual
                    is specified, which is the case during restart-all.
                All of these variables (except probably the arrays) can be
                specified in the environment, but the values in restart-config
                override them. However, since restart-config is a bash script,
                you could conditionally set the variables by using if test ...

There are also two commands you'll probably never have to call yourself:
restart-login   is self-explanatory and is usually called only by restart-all
restart-pid     is the low-level command that maintains the PID file and kills
                the old servers. In order for the server to be killed, three
                things must match: the PID, and name, and the user.
                This will keep errors to a minimum in case PID files continue
                to exist after the processes have died and new processes have
                taken their IDs.

                There's a theoretical case in which the replacing process will
                be a new instance of the same process by the same user in a
                different world directory. The odds of this happening are
                theoretically 1 in 32767-ish, but in practice might be a bit
                more common than that. If you find your newly-spawned children
                did not survive, try running restart-all again.