# IPCRM - remove certain IPC resources - man(1) - [phpMan]

> **TLDR:** Delete IPC (Inter-process Communication) resources.
>
- Delete a shared memory segment by ID:
  `ipcrm {{-m|--shmem-id}} {{shmem_id}}`
- Delete a shared memory segment by key:
  `ipcrm {{-M|--shmem-key}} {{shmem_key}}`
- Delete an IPC queue by ID:
  `ipcrm {{-q|--queue-id}} {{ipc_queue_id}}`
- Delete an IPC queue by key:
  `ipcrm {{-Q|--queue-key}} {{ipc_queue_key}}`
- Delete a semaphore by ID:
  `ipcrm {{-s|--semaphore-id}} {{semaphore_id}}`
- Delete a semaphore by key:
  `ipcrm {{-S|--semaphore-key}} {{semaphore_key}}`
- Delete all IPC resources:
  `ipcrm {{-a|--all}}`

*Source: tldr-pages*

---

[_IPCRM_(1)](https://www.chedong.com/phpMan.php/man/IPCRM/1/markdown)                                    User Commands                                   [_IPCRM_(1)](https://www.chedong.com/phpMan.php/man/IPCRM/1/markdown)

## NAME
       ipcrm - remove certain IPC resources

## SYNOPSIS
       **ipcrm **[options]

       **ipcrm **[**shm**|**msg**|**sem**] _ID_ ...

## DESCRIPTION
       **ipcrm **removes System V inter-process communication (IPC) objects and associated data
       structures from the system. In order to delete such objects, you must be superuser, or the
       creator or owner of the object.

       System V IPC objects are of three types: shared memory, message queues, and semaphores.
       Deletion of a message queue or semaphore object is immediate (regardless of whether any
       process still holds an IPC identifier for the object). A shared memory object is only removed
       after all currently attached processes have detached ([**shmdt**(2)](https://www.chedong.com/phpMan.php/man/shmdt/2/markdown)) the object from their virtual
       address space.

       Two syntax styles are supported. The old Linux historical syntax specifies a three-letter
       keyword indicating which class of object is to be deleted, followed by one or more IPC
       identifiers for objects of this type.

       The SUS-compliant syntax allows the specification of zero or more objects of all three types
       in a single command line, with objects specified either by key or by identifier (see below).
       Both keys and identifiers may be specified in decimal, hexadecimal (specified with an initial
       '0x' or '0X'), or octal (specified with an initial '0').

       The details of the removes are described in [**shmctl**(2)](https://www.chedong.com/phpMan.php/man/shmctl/2/markdown), [**msgctl**(2)](https://www.chedong.com/phpMan.php/man/msgctl/2/markdown), and [**semctl**(2)](https://www.chedong.com/phpMan.php/man/semctl/2/markdown). The
       identifiers and keys can be found by using [**ipcs**(1)](https://www.chedong.com/phpMan.php/man/ipcs/1/markdown).

## OPTIONS
### -a --all 
           Remove all resources. When an option argument is provided, the removal is performed only
           for the specified resource types.

           _Warning!_ Do not use **-a **if you are unsure how the software using the resources might react
           to missing objects. Some programs create these resources at startup and may not have any
           code to deal with an unexpected disappearance.

### -M --shmem-key _
           Remove the shared memory segment created with _shmkey_ after the last detach is performed.

### -m --shmem-id _
           Remove the shared memory segment identified by _shmid_ after the last detach is performed.

### -Q --queue-key _
           Remove the message queue created with _msgkey_.

### -q --queue-id _
           Remove the message queue identified by _msgid_.

### -S --semaphore-key _
           Remove the semaphore created with _semkey_.

### -s --semaphore-id _
           Remove the semaphore identified by _semid_.

### -h --help
           Display help text and exit.

### -V --version
           Print version and exit.

## NOTES
       In its first Linux implementation, **ipcrm **used the deprecated syntax shown in the second line
       of the **SYNOPSIS**. Functionality present in other *nix implementations of **ipcrm **has since been
       added, namely the ability to delete resources by key (not just identifier), and to respect
       the same command-line syntax. For backward compatibility the previous syntax is still
       supported.

## SEE ALSO
       [**ipcmk**(1)](https://www.chedong.com/phpMan.php/man/ipcmk/1/markdown), [**ipcs**(1)](https://www.chedong.com/phpMan.php/man/ipcs/1/markdown), [**msgctl**(2)](https://www.chedong.com/phpMan.php/man/msgctl/2/markdown), [**msgget**(2)](https://www.chedong.com/phpMan.php/man/msgget/2/markdown), [**semctl**(2)](https://www.chedong.com/phpMan.php/man/semctl/2/markdown), [**semget**(2)](https://www.chedong.com/phpMan.php/man/semget/2/markdown), [**shmctl**(2)](https://www.chedong.com/phpMan.php/man/shmctl/2/markdown), [**shmdt**(2)](https://www.chedong.com/phpMan.php/man/shmdt/2/markdown),
       [**shmget**(2)](https://www.chedong.com/phpMan.php/man/shmget/2/markdown), [**ftok**(3)](https://www.chedong.com/phpMan.php/man/ftok/3/markdown), [**sysvipc**(7)](https://www.chedong.com/phpMan.php/man/sysvipc/7/markdown)

## REPORTING BUGS
       For bug reports, use the issue tracker at <https://github.com/util-linux/util-linux/issues>.

## AVAILABILITY
       The **ipcrm **command is part of the util-linux package which can be downloaded from Linux Kernel
       Archive <<https://www.kernel.org/pub/linux/utils/util-linux/>>.

util-linux 2.39.3                            2023-10-23                                     [_IPCRM_(1)](https://www.chedong.com/phpMan.php/man/IPCRM/1/markdown)
