From cf21985ab59e0075704b0322f7ba84033bf7e16e Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Sat, 10 Feb 2001 00:50:18 +0000
Subject: [PATCH] Update section about how to start server from boot scripts.

---
 doc/src/sgml/runtime.sgml | 102 ++++++++++++++++++++++----------------
 1 file changed, 60 insertions(+), 42 deletions(-)

diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index cd624828b4b..4322a1f42e1 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.49 2001/02/09 20:38:15 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.50 2001/02/10 00:50:18 petere Exp $
 -->
 
 <Chapter Id="runtime">
@@ -164,6 +164,20 @@ NOTICE:  Initializing database with en_US collation order.
    must also specify the <option>-i</option> option.
   </para>
 
+  <para>
+   This shells syntax can get tedious quickly.  Therefore the shell
+   script wrapper <application>pg_ctl</application> is provided that
+   encapsulates some of the tasks.  E.g.,
+<programlisting>
+pg_ctl start -l logfile
+</programlisting>
+   will start the server in the background and put the output into the
+   named log file.  The <option>-D</option> option has the same
+   meaning as when invoking postmaster directly.
+   <application>pg_ctl</application> also implements a symmetric
+   <quote>stop</quote> operation.
+  </para>
+
   <para>
    Normally, you will want to start the database server when the
    computer boots up. This is not required; the
@@ -178,67 +192,78 @@ NOTICE:  Initializing database with en_US collation order.
    with them. Many systems have a file
    <filename>/etc/rc.local</filename> or
    <filename>/etc/rc.d/rc.local</filename> which is almost certainly
-   no bad place to put such a command. Whatever you do, postmaster
+   no bad place to put such a command. Whatever you do, the server
    must be run by the <productname>Postgres</productname> user account
    <emphasis>and not by root</emphasis> or any other user. Therefore
    you probably always want to form your command lines along the lines
    of <literal>su -c '...' postgres</literal>, for example:
 <programlisting>
-nohup su -c 'postmaster -D /usr/local/pgsql/data > server.log 2>&1' postgres &
+su -c 'pg_ctl -D /usr/local/pgsql/data -l serverlog' postgres
 </programlisting>
-   (using the program <application>nohup</application> to prevent the
-   server from dying when you log out).
   </para>
 
   <para>
-   Here are a few more operating system specific suggestions.
+   Here are a few more operating system specific suggestions.  (Always
+   replace the proper installation directory and the user name you
+   chose.)
 
    <itemizedlist>
     <listitem>
      <para>
-      Edit the file <filename>rc.local</filename> on
-      <productname>NetBSD</productname> or file
-      <filename>rc2.d</filename> on <productname>Solaris</productname> to contain the
-      following single line:
+      For <productname>FreeBSD</productname>, take a look at the file
+      <filename>contrib/start-scripts/freebsd</filename> in the
+      <productname>PostgreSQL</productname> source distribution.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      On <productname>OpenBSD</productname>, add the following lines
+      to the file <filename>/etc/rc.local</filename>:
 <programlisting>
-su postgres -c "/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data"
+if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postmaster ]; then
+    su - -c '/usr/local/pgsql/bin/pg_ctl start -l /var/postgresql/log -s' postgres
+    echo -n ' postgresql'
+fi
 </programlisting>
      </para>
     </listitem>
 
     <listitem>
      <para>
-      On <productname>FreeBSD</productname> edit
-      <filename>/usr/local/etc/rc.d/pgsql.sh</filename> to contain the
-      following lines and make it <literal>chmod 755</literal> and
-      <literal>chown root:bin</literal>.
+      On <productname>Linux</productname> systems either add
 <programlisting>
-#!/bin/sh
-[ -x /usr/local/pgsql/bin/postmaster ] && {
-    su -l pgsql -c 'exec /usr/local/pgsql/bin/postmaster
-        -D/usr/local/pgsql/data
-        -S -o -F > /usr/local/pgsql/errlog' &
-    echo -n ' pgsql'
-}
+/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data
 </programlisting>
-      You may put the line breaks as shown above. The shell is smart
-      enough to keep parsing beyond end-of-line if there is an
-      expression unfinished. The exec saves one layer of shell under
-      the postmaster process so the parent is init.
+      to <filename>/etc/rc.d/rc.local</filename> or look into the file
+      <filename>contrib/start-scripts/linux</filename> in the
+      <productname>PostgreSQL</productname> source distribution to
+      integrate the start and shutdown into the run level system.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      On <productname>RedHat Linux</productname> add a file
-      <filename>/etc/rc.d/init.d/postgres.init</filename> 
-       which is based on the example in <filename>contrib/linux/</filename>.
-       Then make a softlink to this file from
-       <filename>/etc/rc.d/rc5.d/S98postgres.init</filename>.
-      </para>
-     </listitem>
-    </itemizedlist>
-   </para>
+      On <productname>NetBSD</productname>, either use the
+      <productname>FreeBSD</productname> or
+      <productname>Linux</productname> start scripts, depending on
+      preference, as an example and place the file at
+      <filename>/usr/local/etc/rc.d/postgresql</filename>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      On <productname>Solaris</productname>, edit the file
+      <filename>rc2.d</filename> to contain the following single line:
+<programlisting>
+su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data"
+</programlisting>
+     </para>
+    </listitem>
+   </itemizedlist>
+
+  </para>
 
    <para>
     While the <application>postmaster</application> is running, it's
@@ -248,13 +273,6 @@ su postgres -c "/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data"
     shutting down the postmaster.
    </para>
 
-   <para>
-    The shell script wrapper <application>pg_ctl</application> that
-    comes with <productname>Postgres</productname> can also be used to
-    control starting (and stopping!) of the database server in
-    intelligent fashion.
-   </para>
-
    <sect2 id="postmaster-start-failures">
     <title>Server Start-up Failures</title>
 
-- 
GitLab