This is a static archive of our old OpenStreetMap Help Site. Please post any new questions and answers at community.osm.org.

overpass automatically set meta for dispatcher

0

Hello everyone;

I am trying to write a bash script to start and stop the dispatcher for overpass server to go with my guide for setting up overpass in a Linux Slackware machine. You can see my guide here:

My database was initialed with meta data enabled, somebody else using my guide may not use meta data. Can I use the following test to automatically set "meta"?

unset META

if [ -f ${DBDIR}/nodes_meta.bin ]; then
    META=--meta
fi

DBDIR is database directory. Is testing for "nodes_meta.bin" file enough to set meta when starting dispatcher?

The complete script is below:

#!/bin/bash

# script to start, stop and get status for overpass dispatcher daemon
# script is part of overpass slackbuild; it assumes installation into
# /usr/local directory and the creation of overpass user and group as
# indecated in the main README file included with the slackbuild script
#
# To use this script you need to set one varaible below:
# DBDIR : set it to your actual installation database directory.
#

DBDIR=/path/to/your/overpass/DBase
DSPTCHR=/usr/local/bin/dispatcher
SOCVER=v0.7.55
USER=overpass
unset META

if [ -f ${DBDIR}/nodes_meta.bin ]; then
    META=--meta
fi

if ! grep ^overpass: /etc/passwd 2>&1 > /dev/null; then

    echo "  You must have overpass user and group to run this script."
    echo "   Please see the main \"README\" file included with build script"
    exit 1
fi

# check dispatcher
if [ ! -x $DSPTCHR ]; then

    echo "  Could not find dispatcher executable file!"
    exit 2
fi

# test for database directory - directory can not be empty
if [ ! -d $DBDIR ]; then

    echo " Could not find database directory"
    exit 2
fi

# maybe nested if
if [ ! "$(ls -A $DBDIR)" ]; then

    echo "  Seems like database directory is empty!"
    echo "  Please see \"README.data\" file included with build script."
    exit 2
fi

case "$1" in

    "start")

    if (pgrep -f $DSPTCHR  2>&1 > /dev/null) ; then
        echo "dispatcher is already running!"
        exit 0

    else
        echo "dispatcher is NOT running"
        if [ -S ${DBDIR}/osm3s_${SOCVER}_osm_base ]; then
            echo "Found STALLED overpass socket file, removing."
            rm -f ${DBDIR}/osm3s_${SOCVER}_osm_base
        fi
    fi

    echo "Starting overpass dispatcher ..."
    sudo -u $USER $DSPTCHR --osm-base --db-dir=${DBDIR}/ ${META} &
    sleep 1s
    if (! pgrep -f $DSPTCHR  2>&1 > /dev/null) ; then
       echo "Error: dispatcher did not start !!!"
       exit 1
    else
        echo "dispatcher started"
    fi

    exit 0
;;

    "stop")

        if (! pgrep -f $DSPTCHR  2>&1 > /dev/null) ; then
            echo "Error: dispatcher is not running."
            exit 2
        else
            sudo -u $USER $DSPTCHR --terminate
            sleep 1
            if (pgrep -f $DSPTCHR  2>&1 > /dev/null) ; then
                echo "Error: could not stop dispatcher"
                exit 2
            else
                echo "dispatcher stopped"
            fi
        fi
        exit 0
;;

    "status")

        if (pgrep -f $DSPTCHR  2>&1 > /dev/null) ; then
            echo "dispatcher is running"
        else
            echo "dispatcher is stopped"
        fi
        echo ""
       sudo -u $USER $DSPTCHR --status
       exit 0
;;

    *)
        # something else - show usage
        echo ""
        echo "  Error: Unkown command."
        echo "  Usage: $0 ACTION"
        echo "  where ACTION is one of: { start, stop or status }"
        echo ""
        echo "  Please note they are all lower case letters!"
        echo ""
        exit 1
    ;;
esac

asked 23 Jun '21, 09:10

Wael's gravatar image

Wael
11336
accept rate: 0%

This has nothing to do with Overpass. You'd be better off asking on one of the Stack Exchange forums.

(24 Jun '21, 14:57) DaveF

Source code available on GitHub .