The most common way of having items restart is by using systemD. Unfortunately, when running mono processes inside a Tmux shell, this didn’t work satisfactorily.
Initially, the intention was to restart services using systemD. Unfortunately, that approach was not successful and an alternative required. My solution is to use keep-alive bash scripts for Robust and each simulator group. A corn job then runs these scripts at regular intervals.
The scripts use the same basis as the previous startup and shut down scripts. Additionally, there are minor changes to the initial startup and shutdown scripts; to allow them to work well with the keep-alive scripts. The actual bash scripts are available to see on the here. Minor changes to the original bash scripts make it more convenient to keep them together.
Opensimulator while much stabler than previous versions is still not a full release piece of software. Crashes do happen, so crash detection And recovery are essential. Since I am the central administration for the service, this is not practical, I work and study full time. It is an essential step in both the stability of the grid and my ability to manage it alongside my other commitments.
Crash Detection And Recovery – what about systemD?
I set SystemD as follows.
- SystemD launches a bash script.
- The Bash script passes keystrokes into a Tmux window.
- Opensimulator launches inside the Tmux window and writes a PID file.
- Waits for the PID file before finishing.
- Remain after exit is set.
- SystemD set to always restart the service.
Despite the steps described above the only time SystemD actually restarts the services is when the service stops. Neither a clean shut down executed with the opensimulator interface or crashes result in restarts.