aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/config.sgml30
-rw-r--r--src/backend/postmaster/postmaster.c113
-rw-r--r--src/backend/utils/misc/guc.c10
-rw-r--r--src/backend/utils/misc/postgresql.conf.sample5
4 files changed, 1 insertions, 157 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 3f6986fc1be..bce9520a650 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -3201,36 +3201,6 @@ local0.* /var/log/postgresql
</listitem>
</varlistentry>
- <varlistentry id="guc-silent-mode" xreflabel="silent_mode">
- <term><varname>silent_mode</varname> (<type>boolean</type>)</term>
- <indexterm>
- <primary><varname>silent_mode</> configuration parameter</primary>
- </indexterm>
- <listitem>
- <para>
- Runs the server silently. If this parameter is set, the server
- will automatically run in background and disassociate from the
- controlling terminal.
- This parameter can only be set at server start.
- </para>
-
- <caution>
- <para>
- When this parameter is set,
- the server's standard output and standard error are redirected
- to the file <filename>postmaster.log</> within the data directory.
- There is no provision for rotating this file, so it will grow
- indefinitely unless server log output is redirected elsewhere
- by other settings. It is recommended that <varname>log_destination</>
- be set to <literal>syslog</> or that <varname>logging_collector</> be
- enabled when using this option. Even with those measures, errors
- reported early during startup may appear in
- <filename>postmaster.log</> rather than the normal log destination.
- </para>
- </caution>
- </listitem>
- </varlistentry>
-
</variablelist>
</sect2>
<sect2 id="runtime-config-logging-when">
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 6572292a40f..b9bd50c6713 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -58,8 +58,7 @@
* Error Reporting:
* Use write_stderr() only for reporting "interactive" errors
* (essentially, bogus arguments on the command line). Once the
- * postmaster is launched, use ereport(). In particular, don't use
- * write_stderr() for anything that occurs after pmdaemonize.
+ * postmaster is launched, use ereport().
*
*-------------------------------------------------------------------------
*/
@@ -192,7 +191,6 @@ static int SendStop = false;
/* still more option variables */
bool EnableSSL = false;
-bool SilentMode = false; /* silent_mode */
int PreAuthDelay = 0;
int AuthenticationTimeout = 60;
@@ -326,7 +324,6 @@ static DNSServiceRef bonjour_sdref = NULL;
*/
static void getInstallationPaths(const char *argv0);
static void checkDataDir(void);
-static void pmdaemonize(void);
static Port *ConnCreate(int serverFd);
static void ConnFree(Port *port);
static void reset_shared(int port);
@@ -778,15 +775,6 @@ PostmasterMain(int argc, char *argv[])
}
/*
- * Fork away from controlling terminal, if silent_mode specified.
- *
- * Must do this before we grab any interlock files, else the interlocks
- * will show the wrong PID.
- */
- if (SilentMode)
- pmdaemonize();
-
- /*
* Create lockfile for data directory.
*
* We want to do this before we try to grab the input sockets, because the
@@ -1270,105 +1258,6 @@ checkDataDir(void)
FreeFile(fp);
}
-
-/*
- * Fork away from the controlling terminal (silent_mode option)
- *
- * Since this requires disconnecting from stdin/stdout/stderr (in case they're
- * linked to the terminal), we re-point stdin to /dev/null and stdout/stderr
- * to "postmaster.log" in the data directory, where we're already chdir'd.
- */
-static void
-pmdaemonize(void)
-{
-#ifndef WIN32
- const char *pmlogname = "postmaster.log";
- int dvnull;
- int pmlog;
- pid_t pid;
- int res;
-
- /*
- * Make sure we can open the files we're going to redirect to. If this
- * fails, we want to complain before disconnecting. Mention the full path
- * of the logfile in the error message, even though we address it by
- * relative path.
- */
- dvnull = open(DEVNULL, O_RDONLY, 0);
- if (dvnull < 0)
- {
- write_stderr("%s: could not open file \"%s\": %s\n",
- progname, DEVNULL, strerror(errno));
- ExitPostmaster(1);
- }
- pmlog = open(pmlogname, O_CREAT | O_WRONLY | O_APPEND, S_IRUSR | S_IWUSR);
- if (pmlog < 0)
- {
- write_stderr("%s: could not open log file \"%s/%s\": %s\n",
- progname, DataDir, pmlogname, strerror(errno));
- ExitPostmaster(1);
- }
-
- /*
- * Okay to fork.
- */
- pid = fork_process();
- if (pid == (pid_t) -1)
- {
- write_stderr("%s: could not fork background process: %s\n",
- progname, strerror(errno));
- ExitPostmaster(1);
- }
- else if (pid)
- { /* parent */
- /* Parent should just exit, without doing any atexit cleanup */
- _exit(0);
- }
-
- MyProcPid = PostmasterPid = getpid(); /* reset PID vars to child */
-
- MyStartTime = time(NULL);
-
- /*
- * Some systems use setsid() to dissociate from the TTY's process group,
- * while on others it depends on stdin/stdout/stderr. Do both if
- * possible.
- */
-#ifdef HAVE_SETSID
- if (setsid() < 0)
- {
- write_stderr("%s: could not dissociate from controlling TTY: %s\n",
- progname, strerror(errno));
- ExitPostmaster(1);
- }
-#endif
-
- /*
- * Reassociate stdin/stdout/stderr. fork_process() cleared any pending
- * output, so this should be safe. The only plausible error is EINTR,
- * which just means we should retry.
- */
- do
- {
- res = dup2(dvnull, 0);
- } while (res < 0 && errno == EINTR);
- close(dvnull);
- do
- {
- res = dup2(pmlog, 1);
- } while (res < 0 && errno == EINTR);
- do
- {
- res = dup2(pmlog, 2);
- } while (res < 0 && errno == EINTR);
- close(pmlog);
-#else /* WIN32 */
- /* not supported */
- elog(FATAL, "silent_mode is not supported under Windows");
-#endif /* WIN32 */
-}
-
-
/*
* Main idle loop of postmaster
*/
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 6e85cb53357..c5782e2de2f 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -825,16 +825,6 @@ static struct config_bool ConfigureNamesBool[] =
NULL, NULL, NULL
},
{
- {"silent_mode", PGC_POSTMASTER, LOGGING_WHERE,
- gettext_noop("Runs the server silently."),
- gettext_noop("If this parameter is set, the server will automatically run in the "
- "background and any controlling terminals are dissociated.")
- },
- &SilentMode,
- false,
- NULL, NULL, NULL
- },
- {
{"log_checkpoints", PGC_SIGHUP, LOGGING_WHAT,
gettext_noop("Logs each checkpoint."),
NULL
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 655dad42c71..229d0e86a9b 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -300,11 +300,6 @@
#syslog_facility = 'LOCAL0'
#syslog_ident = 'postgres'
-#silent_mode = off # Run server silently.
- # DO NOT USE without syslog or
- # logging_collector
- # (change requires restart)
-
# - When to Log -