Skip to content
Snippets Groups Projects
Commit 3f4d68cc authored by Peter Eisentraut's avatar Peter Eisentraut
Browse files

Fix on Linux

parent a25a785f
No related branches found
No related tags found
No related merge requests found
#!/bin/sh #!/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` CMDNAME=`basename $0`
...@@ -38,8 +38,6 @@ EffectiveUser=`id -n -u 2>/dev/null || whoami 2>/dev/null` ...@@ -38,8 +38,6 @@ EffectiveUser=`id -n -u 2>/dev/null || whoami 2>/dev/null`
# This is based on RedHat 5.2. # This is based on RedHat 5.2.
# #
if [ `uname` = 'Linux' ]; then if [ `uname` = 'Linux' ]; then
ipcs_id=
ipcs_lpid=
did_anything= did_anything=
if ps x | grep -s '[p]ostmaster' >/dev/null 2>&1 ; then if ps x | grep -s '[p]ostmaster' >/dev/null 2>&1 ; then
...@@ -48,34 +46,36 @@ if [ `uname` = 'Linux' ]; then ...@@ -48,34 +46,36 @@ if [ `uname` = 'Linux' ]; then
fi fi
# shared memory # 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 do
if [ -z "$ipcs_id" ]; then save_IFS=$IFS
ipcs_id=$val IFS=:
# Note: We can do -n here, because we know the platform. set X $val
echo -n "Shared memory $ipcs_id ... " shift
continue IFS=$save_IFS
fi 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. # Don't do anything if process still running.
# (This check is conceptually phony, but it's # (This check is conceptually phony, but it's
# useful anyway in practice.) # 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 if [ $? -eq 0 ]; then
echo "skipped. Process still exists (pid $ipcs_lpid)." did_anything=t
else else
# try remove exit
ipcrm shm $ipcs_id
if [ $? -eq 0 ]; then
did_anything=t
else
exit
fi
fi fi
ipcs_id=
ipcs_lpid=
done done
# semaphores # semaphores
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment