freebsd-dev/usr.bin/ipcrm/ipcrm.1
Edwin Groothuis 55e2cb41f2 Add the ability to clean up all shared memory segments which are
unused in one go.

From the original PR:

	I've observed that linux apps running under the linuxulator
	have a habit of leaving behind shared memory segments which
	are unused, but which eventually cause the system to run
	out of free segments and these apps will stop working.
	ipcrm(1) currently only allows removal of unused message
	queues, shared memory segments and semaphores on an individual
	basis, or those having a matching (non-zero) key. However
	it would often be convenient to just do a complete cleanup
	of everything, usually as root.

PR:		bin/118292
Submitted by:	Callum Gibson <callumgibson@optusnet.com.au>
Not reviewed by:	grog@
Approved by:	grog@
2007-12-25 00:52:24 +00:00

120 lines
3.6 KiB
Groff

.\" Copyright (c) 1994 Adam Glass
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. The name of the Author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY Adam Glass ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL Adam Glass BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\""
.Dd December 12, 2007
.Dt IPCRM 1
.Os
.Sh NAME
.Nm ipcrm
.Nd "remove the specified message queues, semaphore sets, and shared segments"
.Sh SYNOPSIS
.Nm
.Op Fl W
.Op Fl v
.Op Fl q Ar msqid
.Op Fl m Ar shmid
.Op Fl s Ar semid
.Op Fl Q Ar msgkey
.Op Fl M Ar shmkey
.Op Fl S Ar semkey
.Ar ...
.Sh DESCRIPTION
The
.Nm
utility removes the specified message queues, semaphores and shared memory
segments.
These System V IPC objects can be specified by their
creation ID or any associated key.
.Pp
The following options are generic:
.Bl -tag -width indent
.It Fl v
If specified once with -W or with -1 for an object, it will show
all removed objects.
If specified twice with -W or with -1 for an objects, it will show
all removed objects and all failed removals.
.It Fl W
Try to wipe all specified message queues, semaphores and shared
memory segments.
.It Fl y
Use the
.Xr kvm 3
interface instead of the
.Xr sysctl 3
interface to extract the required information.
If
.Nm
is to operate on the running system,
using
.Xr kvm 3
will require read privileges to
.Pa /dev/kmem .
.El
.Pp
The following options are used to specify which IPC objects will be removed.
Any number and combination of these options can be used:
.Bl -tag -width indent
.It Fl q Ar msqid
Remove the message queue associated with the ID
.Ar msqid
from the system.
.It Fl m Ar shmid
Mark the shared memory segment associated with ID
.Ar shmid
for removal.
This marked segment will be destroyed after the last detach.
.It Fl s Ar semid
Remove the semaphore set associated with ID
.Ar semid
from the system.
.It Fl Q Ar msgkey
Remove the message queue associated with key
.Ar msgkey
from the system.
.It Fl M Ar shmkey
Mark the shared memory segment associated with key
.Ar shmkey
for removal.
This marked segment will be destroyed after the last detach.
.It Fl S Ar semkey
Remove the semaphore set associated with key
.Ar semkey
from the system.
.El
.Pp
The identifiers and keys associated with these System V IPC objects can be
determined by using
.Xr ipcs 1 .
If the identifier or the key is -1, it will remove all these objects.
.Sh SEE ALSO
.Xr ipcs 1
.Sh HISTORY
The wiping of all System V IPC objects was first implemented in
.Fx 6.4 and 7.1.
.Sh AUTHORS
The original author was Adam Glass.
The wiping of all System V IPC objects was thought up by Callum
Gibson and extended and implemented by Edwin Groothuis.