How to check if process is running?

To me this script looks fine.

Can somebody please assist me in finding what the problem is.

Thank you

Code:
 
#!/bin/bash
#---------------------------------------------------------------------------------------------------------------------- 
#This script allows the user to import a dsx file 
#
# Usage:
#./import.sh -s -d -r -f
#
#-----------------------------------------------------------------------------------------------------------------------
dbname="$dbname"
dsn="$dsn"
dsxfile="$dsxfile"
rangechk="$rangechk"
verbose=""
reverb=""
module=`basename $0`
DSXLOG_MODULE=$module 
export DSXLOG_MODULE
dsxdir="/var/local/dsx/import"
dsximp="/usr/local/bin/dsximp.exe"
dsxpids="/var/run"
function rm_pidfile
{ 
rm -f $dsxpids/$module.pid 
} 
function is_running 
{ 
# File does not exist, we can run 
[ -f $dsxpids/$module.pid ] || return 1 
# Read PID from file 
read PID < -f $dsxpids/$module.pid 
# File exists but process does not. 
[ -d /proc/${PID} ] || return 1 return 0 
} 
#------------------------------------------------------------------------#
# This guarantees other scripts will wait for each other 
# before checking the pidfile. otherwise one might create the PID 
# file while we're not looking. 
#------------------------------------------------------------------------#
while ! mkfifo -f $dsxpids/$module.lock 2> /dev/null 
do sleep 1 done 
#------------------------------------------------------------------------#
# beyond this point, /var/run/import.sh.lock exists and belongs to us. 
# Other instances of the script will loop. 
#------------------------------------------------------------------------#
if is_running then echo "An instance(PID ${PID}) is already running"
rm -f $dsxpids/$module.lock 
exit 1
fi
echo "$$" > -f $dsxpids/$module.pid
trap "rm_pidfile" EXIT
rm -f $dsxpids/$module.lock
while true do sleep 1 done
function displayHelp()
{
echo ""
echo " Usage: ./import.sh [ -s -d -r -f ]"
echo ""
echo " -s, --dsn identified by the Data Source Name "
echo " -d, --dbname identified by the Database Name "
echo " -r, --rangechk specify range checking option " 
echo " -f, --dsxfile identified by the file in dsx format "
echo " -h, --help identified by the help menu "
echo ""

}
while getopts " s: d: r: f: e h " option
do
case $option in

f ) dsxfile="$OPTARG";;
d ) dbname="$OPTARG";;
s ) dsn="$OPTARG";;
r ) rangechk="$OPTARG";;
e ) verbose="--verbose"
reverb="--echo";;
h | ? | * ) displayHelp;exit;;

esac;
done
if [[ $# -eq 0 ]]; then
displayHelp
exit 1
fi

Tags: , , , , , , , , , , , , , ,