|
楼主 |
发表于 2008-1-14 15:09:19
|
显示全部楼层
目前的摸索结果表名,在切换到该服务“off”的运行级别时,脚本不会执行,“stop”段仅仅是为手动操作准备的,而操作系统有另外一套机制来停止服务。
原始短消息: 关于你的脚本 ~~
原始短消息: 关于你的脚本 ~~
我感觉 ,在 3 ,5 下面, 脚本 的 START ,STOP , 应该可以执行的, 不然,你 应该在 12345 下都 设为 ON
这样当在级别切换时 rc*.d 下面的 S,K 两个文件 才会执行吧
目前只是 通过你的 信件 或是帖子来 推断你在可能作什么 ,但还是不太确定,能给我点详细 的资料吗,你要做的东西,也许,除了 用 rc*.d, 还可能会有别的什么 方法。 把要实现的目的 再详细 一点。
========================================
当前状况:
我的计算机上装有PostgreSQL,是自己下载编译安装的。
========================================
预期目标:
在运行级别为3和5时PostgreSQL运行,而在其他级别不运行。
========================================
已经做过的尝试:
--------------------
修改模板脚本$PG_BUILD_DIR/contrib/start-scripts/linux,用实际安装路径、实际数据库路径、实际日志文件路径和实际DBA帐号替换预设值,并将此脚本复制为/etc/rc.d/init.d/tfw_pgsq。
模板脚本/home/typhoon/123/tmp/pg8/postgresql-8.1.4/contrib/start-scripts/linux:
#! /bin/sh
# chkconfig: 35 98 02
# description: PostgreSQL RDBMS
# This is an example of a start/stop script for SysV-style init, such
# as is used on Linux systems. You should edit some of the variables
# and maybe the 'echo' commands.
#
# Place this file at /etc/init.d/postgresql (or
# /etc/rc.d/init.d/postgresql) and make symlinks to
# /etc/rc.d/rc0.d/K02postgresql
# /etc/rc.d/rc1.d/K02postgresql
# /etc/rc.d/rc2.d/K02postgresql
# /etc/rc.d/rc3.d/S98postgresql
# /etc/rc.d/rc4.d/S98postgresql
# /etc/rc.d/rc5.d/S98postgresql
# Or, if you have chkconfig, simply:
# chkconfig --add postgresql
#
# Proper init scripts on Linux systems normally require setting lock
# and pid files under /var/run as well as reacting to network
# settings, so you should treat this with care.
# Original author: Ryan Kirkpatrick <[email protected]>
# $PostgreSQL: pgsql/contrib/start-scripts/linux,v 1.7 2004/10/01 18:30:21 tgl Exp $
## EDIT FROM HERE
# Installation prefix
prefix=/opt/prog/m/PostgreSQL.MagicLinux-2.0
# Data directory
PGDATA="/opt/database/PostgreSQL-Database"
# Who to run the postmaster as, usually "postgres". (NOT "root")
PGUSER=dba
# Where to keep a log file
PGLOG="$PGDATA/server.log"
## STOP EDITING HERE
# Check for echo -n vs echo \c
if echo '\c' | grep -s c >/dev/null 2>&1 ; then
ECHO_N="echo -n"
ECHO_C=""
else
ECHO_N="echo"
ECHO_C='\c'
fi
# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$prefix/bin
# What to use to start up the postmaster (we do NOT use pg_ctl for this,
# as it adds no value and can cause the postmaster to misrecognize a stale
# lock file)
DAEMON="$prefix/bin/postmaster"
# What to use to shut down the postmaster
PGCTL="$prefix/bin/pg_ctl"
set -e
# Only start if we can find the postmaster.
test -x $DAEMON || exit 0
# Parse command line parameters.
case $1 in
start)
$ECHO_N "Starting PostgreSQL: "$ECHO_C
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
stop)
echo -n "Stopping PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
echo "ok"
;;
restart)
echo -n "Restarting PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
reload)
echo -n "Reload PostgreSQL: "
su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
echo "ok"
;;
status)
su - $PGUSER -c "$PGCTL status -D '$PGDATA'"
;;
*)
# Print help
echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
exit 1
;;
esac
exit 0
配置:
[root@xz_server init.d]# chkconfig --list tfw_pgsql
tfw_pgsql 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
[root@xz_server init.d]#
结果:
切换向运行级别3时,tfw_pgsql的start被运行,PostgreSQL启动;
切换出运行级别3时,tfw_pgsql的stop[color]没被运行(应该echo的东西没显示),且PostgreSQL仍在运行(由ps得知);
手工运行tfw_pgsql能正常控制PostgreSQL启停。
[ 本帖最后由 自由狼-台风 于 2008-1-14 16:59 编辑 ] |
|