<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/ipcclean.sgml,v 1.13 2006/09/16 00:30:18 momjian Exp $
PostgreSQL documentation
-->

<refentry id="APP-IPCCLEAN">
 <refmeta>
  <refentrytitle id="APP-IPCCLEAN-TITLE"><application>ipcclean</application></refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo>Application</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>ipcclean</refname>
  <refpurpose>remove shared memory and semaphores from a failed <productname>PostgreSQL</productname> server</refpurpose>
 </refnamediv>

 <indexterm zone="app-ipcclean">
  <primary>ipcclean</primary>
 </indexterm>

 <refsynopsisdiv>
  <cmdsynopsis>
   <command>ipcclean</command>
  </cmdsynopsis>
 </refsynopsisdiv>

 <refsect1 id="R1-APP-IPCCLEAN-1">
  <title>Description</title>
  <para>
   <command>ipcclean</command> removes all shared memory segments and
   semaphore sets owned by the current user.  It is intended to be
   used for cleaning up after a crashed
   <productname>PostgreSQL</productname> server (<xref
   linkend="app-postgres">).  Note that immediately restarting the
   server will also clean up shared memory and semaphores, so this
   command is of little real utility.
  </para>

  <para>
   Only the database administrator should execute this program as it
   can cause bizarre behavior (i.e., crashes) if run during multiuser
   execution.  If this command is executed while a server is running,
   the shared memory and semaphores allocated by that server will be
   deleted, which would have rather severe consequences for that
   server.
  </para>
 </refsect1>

 <refsect1>
  <title>Notes</title>

  <para>
   This script is a hack, but in the many years since it was written,
   no one has come up with an equally effective and portable solution.
   Since <command>postgres</command> can now clean up by
   itself, it is unlikely that <command>ipcclean</command> will be
   improved upon in the future.
  </para>

  <para>
   The script makes assumptions about the output format of the
   <command>ipcs</command>
   utility which may not be true across different operating systems.
   Therefore, it may not work on your particular OS.  It's wise to
   look at the script before trying it.
  </para>
 </refsect1>

</refentry>
