From: Peter Eisentraut Date: Sat, 10 Feb 2001 10:27:28 +0000 (+0000) Subject: Fix on Linux X-Git-Tag: REL7_1~496 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3f4d68cc7b7a4b4086758063a5317856453b3cbe;p=postgresql Fix on Linux --- diff --git a/src/bin/ipcclean/ipcclean.sh b/src/bin/ipcclean/ipcclean.sh index 6e989ea732..db3f003b0c 100644 --- a/src/bin/ipcclean/ipcclean.sh +++ b/src/bin/ipcclean/ipcclean.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# $Header: /cvsroot/pgsql/src/bin/ipcclean/Attic/ipcclean.sh,v 1.9 2001/02/10 06:12:15 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/ipcclean/Attic/ipcclean.sh,v 1.10 2001/02/10 10:27:28 petere Exp $ # CMDNAME=`basename $0` @@ -38,8 +38,6 @@ EffectiveUser=`id -n -u 2>/dev/null || whoami 2>/dev/null` # This is based on RedHat 5.2. # if [ `uname` = 'Linux' ]; then - ipcs_id= - ipcs_lpid= did_anything= if ps x | grep -s '[p]ostmaster' >/dev/null 2>&1 ; then @@ -48,34 +46,36 @@ if [ `uname` = 'Linux' ]; then fi # shared memory - for val in `ipcs -m -p | grep '^[0-9]' | awk '{printf "%s %s\n", $1, $3, $4}'` + for val in `ipcs -m -p | grep '^[0-9]' | awk '{printf "%s:%s:%s\n", $1, $3, $4}'` do - if [ -z "$ipcs_id" ]; then - ipcs_id=$val - # Note: We can do -n here, because we know the platform. - echo -n "Shared memory $ipcs_id ... " - continue - fi + save_IFS=$IFS + IFS=: + set X $val + shift + IFS=$save_IFS + ipcs_shmid=$1 + ipcs_cpid=$2 + ipcs_lpid=$3 - ipcs_lpid=$val + # Note: We can do -n here, because we know the platform. + echo -n "Shared memory $ipcs_shmid ... " # Don't do anything if process still running. # (This check is conceptually phony, but it's # useful anyway in practice.) - ps hj$ipcs_lpid >/dev/null 2>&1 + ps hj $ipcs_cpid $ipcs_lpid >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "skipped; process still exists (pid $ipcs_cpid or $ipcs_lpid)." + continue + fi + + # try remove + ipcrm shm $ipcs_shmid if [ $? -eq 0 ]; then - echo "skipped. Process still exists (pid $ipcs_lpid)." + did_anything=t else - # try remove - ipcrm shm $ipcs_id - if [ $? -eq 0 ]; then - did_anything=t - else - exit - fi + exit fi - ipcs_id= - ipcs_lpid= done # semaphores