#!/bin/bash if [ "$1" == "-l" ]; then PIDDIR="${2}" shift 2 else if [ -z "${USER}" ]; then if [ -n "${LOGNAME}" ]; then USER="${LOGNAME}" else echo "\$USER is not set!" exit -2 fi fi PIDDIR=/tmp/${USER} mkdir -p ${PIDDIR} ERR=$? chmod 700 ${PIDDIR} ERR=$((${ERR}+$?)) if [ "${ERR}" -gt 0 ]; then echo "Some error in creating the PIDDIR!" exit -3 fi fi if [ -z "$1" ]; then echo "Error! You need to specify a command to run!" exit -1 fi MYPID=$$ MYNAME=`basename $0`-`basename $1` PIDFILE=${PIDDIR}/${MYNAME}.pid if [ -f "${PIDFILE}" ]; then OLDPID=$(< ${PIDFILE}) INUSE=`ps -ef | grep $OLDPID | grep -v "grep $OLDPID" | xargs | cut -d' ' -f2` if [ -z "${INUSE}" ]; then #echo "Stale pidfile detected. Removing" rm ${PIDFILE} else #echo "ERROR! Running already!" echo "Warning! '$MYNAME' is running already!" exit 0 fi fi #echo "Not running already, putting PID in pidfile" echo ${MYPID} >${PIDFILE} CMD="$*" #echo "Doing something (${CMD})" eval ${CMD} #echo "Cleaning up ${PIDFILE}" rm ${PIDFILE}