我在 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...