Script to restart mango
Is there a way to restart the mango server from a script (like a RuntimeManager.restartInstance command)? I've been playing around with Mango (2.8.6 version) on a raspberry pi 3 and after a while, memory goes down. Once the JVM shows around 160MB free memory left, it will occasionally crash requiring a hard reboot. Is there a cheap and easy fix for now to just do a server restart? Not the ideal or finish solution, but will work for the time being..
ThomasEinasto last edited by
I did it by looking the PID of java, as Mango is a java application in the linux env.
I made a bash program like that:
#!/bin/bash if pgrep "java" > /dev/null then exit 0 else sh /opt/mango/bin/ma.sh start > /dev/null exit 1 fi
And put this into a crontab like every x minutes which will check if the java application has crashed or not. If it has then it restarts the mango instance. You can put a reboot command after else so that it will reboot instead of relaunching the application.
phildunlap last edited by
One of the easiest ways to ensure Mango restarts on crash is to
touch /path/to/mango/RESTARTwhich will cause the
ma-start.batscript to start Mango again when the currently running Mango finishes. Scripts in Mango/bin/ext-enabled are called with the first argument 'restart'
To your question, yes it is possible to schedule a restart from within a Mango script, but there aren't any wrapper hooks, so you have to do it the same way the modules page would,
com.serotonin.m2m2.web.dwr.ModulesDwr.scheduleRestart(); //Schedule restart for ten seconds from now.
or you can get whatever delay you want,
var timeout = com.serotonin.m2m2.Common.getMillis(com.serotonin.m2m2.Common.TimePeriods.MINUTES, 17); var lifecycle = com.serotonin.provider.Providers.get(com.serotonin.m2m2.IMangoLifecycle.class); lifecycle.scheduleShutdown( timeout, true /* restart */, null);