проблемы с pg_ctl

Стоп сервера работает нормально... но старт почему не возращаеться...

  try {
      String line;
      Process p = Runtime.getRuntime().exec
        ("C:\\PROGRA~1\\PostgreSQL\\9.0\\bin\\pg_ctl.exe -w restart -D \"C:/Program Files/PostgreSQL/9.0/data\"" );
     BufferedReader input =
        new BufferedReader
          (new InputStreamReader(p.getInputStream()));
    while ((line = input.readLine()) != NULL) {
     System.out.println(line + "  " + line.length());
    }
     input.close();
    }
    catch (Exception err) {
      err.printStackTrace();
    }

пишет: ожидание завершения работы сервера.... готово
сервер остановлен
ожидание запуска сервера... готово
сервер запущен

и не выходит с цикла.. хотя буфер пустой... но при стопе сервера таких проблем нету, только при старте

более того... проблема не в буфере.. а сам Process не завершается почему

__________________________________
То есть я создаю процесс в котором открываю pg_ctl передаю в него аргументы.. дальше он впихивает туда аргументы и перезапускает сервер... но почему-то не заканчивает работу, хотя сервер перезапустился.. и давно процесс закончил работу... данная проблема происходит на функции start. с stop нету проблем.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Уж сколько раз твердили миру:

Уж сколько раз твердили миру: читайте логи! Без логов можно строить предположения и догадки, не более того.
И ещё - руками-то зачем пускаете? Есть же "Службы" в Винде, если через них? Да если ещё от администратора?

в логах проблем

в логах проблем нету
2011-10-14 10:53:29 EEST LOG: database system was shut down at 2011-10-14 10:53:28 EEST
2011-10-14 10:53:29 EEST LOG: database system is ready to accept connections
2011-10-14 10:53:29 EEST LOG: autovacuum launcher started
2011-10-14 10:53:41 EEST LOG: received smart shutdown request
2011-10-14 10:53:41 EEST LOG: autovacuum launcher shutting down
2011-10-14 10:53:41 EEST LOG: shutting down
2011-10-14 10:53:41 EEST LOG: database system is shut down
2011-10-14 10:53:42 EEST LOG: database system was shut down at 2011-10-14 10:53:41 EEST
2011-10-14 10:53:42 EEST LOG: database system is ready to accept connections
2011-10-14 10:53:43 EEST LOG: autovacuum launcher started

руками запускаю именно потому, что я хочу уйти от виндовс служб, да и вообще от виндовс или другой ОС..

когда запускаю pg_ctl stop -d .. все работает хорошо, база останавливается процесс завершен
когда запускаю pg_ctl start -d .. все запускаеться норм, но процесс в котором я запускал не останавливается и не завершается

Через службы пускается

Через службы пускается нормально или нет? (спрашиваю, потому что запуск через службы делает это с определёнными правами от определённого пользователя). Если через службы не запускается, то посмотрите от какого пользователя выполняется запуск и попробуйте как тут:
http://postgresql.ru.net/docs/extented_FAQ.html#Q108

права есть

с правами все хорошо, через службы стартует нормально, я раньше и пользовался через службы, но теперь нужно уйти от этого варианта..
через cmd с той же командой, что и через процесс тоже все норм.. а вот через процесс не возвращает управление. ладно буду разбираться

а есть еще какие-то варианты перезапуска сервера?

Значит таки чего-то ему не

Значит таки чего-то ему не хватает для полного счастья при запуске.
А не пробовали воспользоваться командной строкой для запуска через службы? В виде:

net start имя_службы

почему же не пробовал,

почему же не пробовал, пробовал.. запускает все норм. (net start имя_службы)

может сам process не хочет корректно работать.. но как то странно.. pg_ctl stop то норм работает, а start похоже создает, какой-то еще процесс, который не завершается

так просто не хочет стартовать... хотя это прописано в стандартном сервесе
C:/PROGRA~1/PostgreSQL/9.0/bin/pg_ctl.exe runservice -N "postgresql-x64-9.0" -D "C:/Program Files/PostgreSQL/9.0/data" -w
error 1063

а из service manager стартует нормально, запускается служба

Похоже всё-таки какие-то

Похоже всё-таки какие-то виндозные заморочки. Может политики безопасности какие хитрые стоят. Может запускаете с правами пользователя не имеющего каких-либо прав. Может антивирус мешает. Леший его знает.

не в политике безопасности..

не в политике безопасности.. разберусь расскажу...

последний вопрос.
а pg_ctl start не запускает же службу? для этого нужен же runservice

pg_ctl это утилита управления

pg_ctl это утилита управления серверным процессом самого PostgreSQL. Она к windows не имеет никакого отношения и существует и в PostgreSQL для UNIX платформ. На мой взгляд это как раз Windows при запуске службы с помощью стандартного для windows механизма должен использовать pg_ctl (да так оно и есть я на 99.99% уверен)

ну это я понял, я читал код

ну это я понял, я читал код pg_ctl.

ну в общем проблема скорее всего в "процесс".. как разберусь напишу.

спасибо за ответы.

bat

@echo off
SET "PG_HOME=c:\PROGRA~1\PostgreSQL\9.0\"
set "PG_CTL=%PG_HOME%\bin\pg_ctl.exe"
%PG_CTL% -w restart -D "C:/Program Files/PostgreSQL/9.0/DATA"
exit

вот если запускать через этот бат, то сервер рестартиться.. а дальше бат не закрываеться... но если снять задачу бат, то и сам сервер падает..

считаю, что проблема в pg_ctl start.

попробуйте у себя через бат запустить сервер

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023