From 418a8caadc1d7b2eeae94735e708a1c4ca18ccd8 Mon Sep 17 00:00:00 2001 From: Igor Socec Date: Thu, 20 Mar 2014 19:42:28 +0100 Subject: [PATCH] introducing moxanix script for controling servers --- .gitignore | 2 ++ moxanix.sh | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ moxerver.c | 6 ++---- 3 files changed, 59 insertions(+), 4 deletions(-) create mode 100755 moxanix.sh diff --git a/.gitignore b/.gitignore index 8d7596b..7a09233 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ moxerver # object files *.o +# logs directory during development +logs diff --git a/moxanix.sh b/moxanix.sh new file mode 100755 index 0000000..6f15db3 --- /dev/null +++ b/moxanix.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Main script for controlling servers. + + +usage () +{ +echo "Usage: ./$(basename $0) COMMAND ID" +echo " COMMAND: start, stop" +echo " ID: 1-7" +} + +########## + +# check parameter count +if [ $# != 2 ]; then + usage + exit +fi + +# grab parameters +COMMAND=$1 +ID=$2 + +# set variables +TCP_PORT=$((4000 + $ID)) +TTY_PATH="/dev/ttyS$ID" + +LOGDIR="./logs" +LOGFILE="$LOGDIR/moxerver$ID.log" + +# execute commands +if [ "$COMMAND" = "start" ]; then + # create log directory if it doesn't exist + if [ ! -d $LOGDIR ]; then + mkdir -p $LOGDIR + fi + # start moxerver, redirect stdout and stderr to logfile + # nohup keeps it running when the script ends + nohup ./moxerver -p $TCP_PORT -t $TTY_PATH > $LOGFILE 2>&1 & + +elif [ "$COMMAND" = "stop" ]; then + # ps axf -> list all processes with PID as first field + # grep [m]oxerver... -> [] trick eliminates the actual grep process from results + # awk '{print $1}' -> print the first field from the line, in this case PID + pid=$(ps axf | grep "[m]oxerver -p $TCP_PORT" | awk '{print $1}') + if [ $pid = "" ]; then + echo "nothing to kill" + fi + kill -s SIGTERM $pid + +else + # unsupported command + usage +fi diff --git a/moxerver.c b/moxerver.c index 25253c0..8f78577 100644 --- a/moxerver.c +++ b/moxerver.c @@ -60,7 +60,7 @@ int main(int argc, char *argv[]) { pthread_t tty_thread; - /* catch and handle some quit signals, SIGKILL can't be caught */ + /* enable catching and handling some quit signals, SIGKILL can't be caught */ signal(SIGTERM, quit_handler); signal(SIGQUIT, quit_handler); signal(SIGINT, quit_handler); @@ -105,10 +105,8 @@ int main(int argc, char *argv[]) { } } - /* introduction message */ - fprintf(stderr, "[%s] === MoxaNix ===\n", NAME); - /* initialize */ + fprintf(stderr, "[%s] TCP port: %d, TTY device path: %s\n", NAME, tcp_port, tty_dev.path); if (server_setup(&server, tcp_port) < 0) return -1; client.socket = -1; tty_dev.fd = -1;