⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipcclean.sh

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 SH
字号:
#!/bin/sh## $PostgreSQL: pgsql/src/bin/ipcclean/ipcclean.sh,v 1.15.6.2 2006/03/03 21:52:47 momjian Exp $#CMDNAME=`basename $0`if [ "$1" = '-?' -o "$1" = "--help" ]; then    echo "$CMDNAME cleans up shared memory and semaphores from aborted PostgreSQL"    echo "backends."    echo    echo "Usage:"    echo "  $CMDNAME"    echo    echo "Note: Since the utilities underlying this script are very different"    echo "from platform to platform, chances are that it might not work on"    echo "yours. If that is the case, please write to <pgsql-bugs@postgresql.org>"    echo "so that your platform can be supported in the future."    exit 0fi# test for running as rootISROOT="N"if id -u >/dev/null 2>&1then	if [ `id -u` -eq 0 ]	then	ISROOT="Y"	fielif	# only check $LOGNAME if $USER is not set	[ "$USER" = 'root' -o \( ! "$USER" -a "$LOGNAME" = 'root' \) ]then	ISROOT="Y"fiif [ "$ISROOT" = "Y" ]then  (    echo "$CMDNAME: cannot be run as root" 1>&2    echo "Please log in (using, e.g., \"su\") as the (unprivileged) user that" 1>&2    echo "owned the server process." 1>&2  ) 1>&2    exit 1fiEffectiveUser=`id -n -u 2>/dev/null || whoami 2>/dev/null`#-----------------------------------# List of platform-specific hacks# Feel free to add yours here.#-----------------------------------## This is QNX 4.25#if [ `uname` = 'QNX' ]; then    if ps -eA  | grep -s '[p]ostmaster' >/dev/null 2>&1 ; then        echo "$CMDNAME: a postmaster is still running" 1>&2        exit 1    fi    rm -f /dev/shmem/PgS*    exit $?fi## This is based on RedHat 5.2.#if [ `uname` = 'Linux' ]; then    did_anything=    if ps x | grep -s '[p]ostmaster' >/dev/null 2>&1 ; then        echo "$CMDNAME: a postmaster is still running" 1>&2        exit 1    fi    # shared memory    for val in `ipcs -m -p | grep '^[0-9]' | awk '{printf "%s:%s:%s\n", $1, $3, $4}'`    do	save_IFS=$IFS	IFS=:	set X $val	shift	IFS=$save_IFS	ipcs_shmid=$1	ipcs_cpid=$2	ipcs_lpid=$3        # 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_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            did_anything=t        else            exit        fi    done    # semaphores    for val in `ipcs -s -c | grep '^[0-9]' | awk '{printf "%s\n", $1}'`; do        echo -n "Semaphore $val ... "        # try remove        ipcrm sem $val        if [ "$?" -eq 0 ]; then            did_anything=t        else            exit        fi    done    [ -z "$did_anything" ] && echo "$CMDNAME: nothing removed" && exit 1    exit 0fi # end Linux# This is the original implementation. It seems to work# on FreeBSD, SunOS/Solaris, HP-UX, IRIX, and probably# some others.ipcs | egrep '^m .*|^s .*' | egrep "$EffectiveUser" | \awk '{printf "ipcrm -%s %s\n", $1, $2}' '-' | sh

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -