分享

Linux 命令 ipcs/ipcrm

 印度阿三17 2019-08-26

ipcs

1. 命令格式

  ipcs [resource-option] [output-format]
  ipcs [resource-option] -i id

2. 命令功能

  提供IPC设备的信息

3. 使用方法

 resource选项:

  ipcs -m  查看系统共享内存信息

  ipcs -q  查看系统消息队列信息

  ipcs -s  查看系统信号量信息

  ipcs [-a] 系统默认输出信息,显示系统内所有的IPC信息

复制代码
[martin@localhost data]$ ipcs -a------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 229376     martin     600        4194304    2          dest         
0x00000000 196609     martin     600        524288     2          dest         
0x00000000 327682     martin     600        393216     2          dest         
0x00000000 491525     martin     600        2097152    2          dest         

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
复制代码

?

 输出格式控制:

  ipcs -c  查看IPC的创建者和所有者

  ipcs -l  查看IPC资源的限制信息

  ipcs -p  查看IPC资源的创建者和使用的进程ID

  ipcs -t  查看最新调用IPC资源的详细时间

  ipcs -u  查看IPC资源状态汇总信息

复制代码
[martin@localhost data]$ ipcs -u --human------ Messages Status --------
allocated queues = 0
used headers = 0
used space = 0B

------ Shared Memory Status --------
segments allocated 4
pages allocated 1760
pages resident  339
pages swapped   0
Swap performance: 0 attempts     0 successes

------ Semaphore Status --------
used arrays = 0
allocated semaphores = 0
复制代码

?

 额外格式控制:

  ipcs -l --human

    以人类可以阅读的方式显示size

复制代码
[martin@localhost data]$ ipcs -l --human------ Messages Limits --------
max queues system wide = 3644
max size of message = 8K
default max size of queue = 16K

------ Shared Memory Limits --------
max number of segments = 4096
max seg size = 16E
max total shared memory = 16E
min seg size = 1B

------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 3276
复制代码

?

ipcrm

1. 命令功能

  通过指定ID删除删除IPC资源,同时将与IPC对象关联的数据一并删除,只有超级用户或IPC资源创建者能够删除

2. 使用方法

  ipcrm -M?shmkey

    移除用shmkey创建的共享内存段

  ipcrm -m shmid

    移除用shmid标识的共享内存段

  ipcrm -S semkey

    移除用semkey创建的信号量

  ipcrm -s semid

    移除用semid标识的信号量

  ipcrm -Q msgkey

    移除用msgkey创建的消息队列

  ipcrm -q?msgid

    移除用msgid标识的消息队列

? 查看共享内存
[app_usr@js2test01 shell]$ ipcs
------ Shared Memory Segments --------
key??????? shmid????? owner????? perms????? bytes????? nattch???? status?????
0x0122f9df 12419074?? app_usr?? 666??????? 70604918?? 0??????????????????????
0x0001b3ef 14450693?? app_usr?? 666??????? 70604278?? 0??????????????????????
0x0003d09a 14385158?? app_usr?? 666??????? 67732????? 1 //各字段含义:
第一列就是共享内存的key;
第二列是共享内存的编号shmid;
第三列就是创建的用户owner;
第四列就是权限perms;
第五列为创建的大小bytes;
第六列为连接到共享内存的进程数nattach;
第七列是共享内存的状态status。其中显示“dest”表示共享内存段已经被删除,但是还有用户在使用它,当该段内存的mode字段设置为SHM_DEST时就会显示“dest”。当用户调用shmctl的IPC_RMID时,内存先查看多少个进程与这个内存关联着,如果关联数为0,就会销毁这段共享内存,否者设置这段内存的mod的mode位为SHM_DEST,如果所有进程都不用则删除这段共享内存。
//删除共享内存
直接使用#ipcrm -m shmid可能不能直接删除掉还存在进程使用的共享内存。这时候可以用ps -ef对进程进行查看,kill掉多余的进程后,再使用ipcs查看。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多