Назад | Перейти на главную страницу

PostgreSQL не имеет имени службы в CentOS

Я установил PostgreSQL на CentOS 5.5 довольно стандартным способом:

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

Итак, как мне дать ему имя, чтобы мне не приходилось каждый раз вводить весь путь к сценарию инициализации?

Имя сервиса - это просто имя скрипта, т.е. postgresql-90.

Однако я только что установил postgres, следуя вашим командам над сценарием инициализации, который на самом деле называется 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...