PostgreSQL 在 CentOS 上没有服务名称

PostgreSQL 在 CentOS 上没有服务名称

我在 CentOS 5.5 上以非常标准的方式安装了 PostgreSQL:

rpm -ivh http://yum.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-2.noarch.rpm
yum install postgresql90-server postgresql90-contrib
chkconfig postgresql-90 on
/etc/init.d/postgresql-90 initdb

但由于某种原因,我无法将它与service命令一起使用,因为它没有名字,例如,如果我这样做,service --status-all我会得到以下内容:

master (pid 3095) is running...
 (pid 3009) is running...
rdisc is stopped

或者甚至只是/etc/init.d/postgresql-90 status

 (pid 3009) is running...

那么我该如何给它命名,以便不必每次都输入整个初始化脚本路径?

答案1

服务名称只是脚本的名称,即postgresql-90

但是,我只是按照上面的命令安装了 postgres,init 脚本实际上是被调用的postgresql-9.0,而不是postgresql-90

$ sudo /sbin/service postgresql-9.0 status
 (pid  16670) is running...

我肯定你很想知道为什么它不告诉你服务的名称,不是吗?这是因为/etc/rc.d/init.d/postgresql-9.0没有status正确调用该函数:

status -p /var/run/postmaster-${PGMAJORVERSION}.${PGPORT}.pid

/etc/rc.d/init.d/functions

status() {
        local base pid pid_file=

        # Test syntax.
        if [ "$#" = 0 ] ; then
                echo $"Usage: status [-p pidfile] {program}"
                return 1
        fi
        ...

因此/etc/rc.d/init.d/postgresql-9.0应该

status -p /var/run/postmaster-${PGMAJORVERSION}.${PGPORT}.pid $0

并且输出是正确的:

$ sudo /sbin/service postgresql-9.0 status
postgresql-9.0 (pid  16670) is running...

相关内容