Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
mxstartup/mxservicectl
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
executable file
150 lines (109 sloc)
2.71 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
CMD_IP="/sbin/ip" | |
CMD_MXS2MXSRV="/usr/sbin/mxstartup2mxconfig" | |
RUNDIR="/run/mariux" | |
# expands *-pattern in pathnames to null if no matching files are found.. | |
shopt -s nullglob | |
# exit on any error | |
set -e | |
function mxsrv_start_one() { | |
local cfg=$1 | |
local -i i mip mfwd | |
echo "starting ${cfg} .." | |
. ${cfg} | |
test "$MX_SRV_USER" = "-" && MX_SRV_USER="root" | |
case "${MX_SRV_SCRIPT}" in | |
*.service) | |
systemctl start "${MX_SRV_SCRIPT}" || true | |
;; | |
*) | |
su - ${MX_SRV_USER} -c "${MX_SRV_SCRIPT} start" & | |
;; | |
esac | |
mv ${cfg}{,.r} | |
unset -v MX_SRV_USER MX_SRV_SCRIPT | |
} | |
function mxsrv_stop_one() { | |
local cfg=$1 | |
local -i i mip mfwd | |
echo "stopping ${cfg} .." | |
. ${cfg} | |
test "$MX_SRV_USER" = "-" && MX_SRV_USER="root" | |
case "${MX_SRV_SCRIPT}" in | |
*.service) | |
systemctl stop "${MX_SRV_SCRIPT}" || true | |
;; | |
*) | |
su - ${MX_SRV_USER} -c "${MX_SRV_SCRIPT} stop" & | |
;; | |
esac | |
rm ${cfg} | |
unset -v MX_SRV_USER MX_SRV_SCRIPT | |
} | |
function mxsrv_start() { | |
local cfg | |
local pattern=$1 | |
: ${pattern:=*} | |
for cfg in ${RUNDIR}/mxservice.${pattern}.cfg ; do | |
if [ -e ${cfg}.r ] ; then | |
echo >&2 "skipping $cfg: already running.." | |
continue | |
fi | |
if [ ! -r ${cfg} ] ; then | |
echo >&2 "skipping $cfg: can't read file" | |
continue | |
fi | |
if [ ! -O ${cfg} ] ; then | |
echo >&2 "skipping $cfg: possible hack attempt?" | |
continue | |
fi | |
mxsrv_start_one ${cfg} | |
done | |
} | |
function mxsrv_stop() { | |
local cfg | |
local pattern=$1 | |
: ${pattern:=*} | |
for cfg in ${RUNDIR}/mxservice.${pattern}.cfg.r ; do | |
if [ ! -r ${cfg} ] ; then | |
echo >&2 "skipping $cfg: can't read file" | |
continue | |
fi | |
if [ ! -O ${cfg} ] ; then | |
echo >&2 "skipping $cfg: possible hack attempt?" | |
continue | |
fi | |
mxsrv_stop_one ${cfg} | |
done | |
} | |
function create_run_dir_if_not_exists() { | |
if [ ! -d ${RUNDIR} ] ; then | |
mkdir -m 0700 ${RUNDIR} | |
fi | |
if [ ! -O ${RUNDIR} ] ; then | |
echo >&2 "${RUNDIR}: wrong owner: possible hack attempt? exiting.." | |
exit 1 | |
fi | |
} | |
function create_mxservice() { | |
${CMD_MXS2MXSRV} ${RUNDIR} >/dev/null | |
} | |
############################################################################## | |
create_run_dir_if_not_exists | |
case "${1}" in | |
start) | |
create_mxservice | |
mxsrv_start $2 | |
;; | |
stop) | |
mxsrv_stop $2 | |
;; | |
restart) | |
mxsrv_stop $2 | |
create_mxservice | |
mxsrv_start $2 | |
;; | |
*) | |
echo >&2 "$0 start|stop" | |
;; | |
esac | |