ipcs 命令


原文鏈接

參考鏈接

unix/linux下的共享內存、信號量、隊列信息管理
在unix/linux下,經常有因為共享內存、信號量,隊列等共享信息沒有干凈地清楚而引起一些問題。
查看共享信息的內存的命令是ipcs [-m|-s|-q]。

默認會列出共享內存、信號量,隊列信息,-m列出共享內存,-s列出共享信號量,-q列出共享隊列
清除命令是ipcrm [-m|-s|-q] id。
-m 刪除共享內存,-s刪除共享信號量,-q刪除共享隊列。
[oracle@trade_as02 ~]$ ipcs -a
 
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x30024289 32768      futures   777        528384     1                       
0xca2fd414 491521     oracle    640        1730150400 16                      
 
------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x00028009 0          futures   666        1         
0x0002800c 32769      futures   666        1         
0x30024003 262146     futures   777        3         
0x3002428a 294915     futures   777        2         
0x3002428b 327684     futures   777        2         
0x3002428c 360453     futures   777        2         
0x3002428d 393222     futures   777        2         
0x3002428e 425991     futures   777        2         
0x52dff7d0 3964936    oracle    640        151       
0x52dff7d1 3997705    oracle    640        151       
0x52dff7d2 4030474    oracle    640        151       
0x52dff7d3 4063243    oracle    640        151       
0x52dff7d4 4096012    oracle    640        151       
 
------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
共享內存段有時不能馬上刪除,需使用這個內存段的所有進程向OS發送detach命令時才有釋放,此時可以考慮刪除進程使用的信號量,幫助釋放共享內存段
 
 
 
關鍵知識:信號量、資源釋放、 ipcs ipcrm
信號量又稱為信號燈,它是用來協調不同 進程 間的數據對象的,而最主要的應用是共享內存方式的 進程 間通信。本質 上,信號量是一個計數器,它用來記錄對某個資源(如共享內存)的存取狀況;共享內存是運行在同一台機器上的 間通信最快的方式,因為數據不需要在不同的 進程 間復制。通常由一個 進程 創建一塊共享內存區,其余 進程 對這塊 內存區進行讀寫。在 Linux 系統下   常用的方式是通過 shmXXX 函數族來實現利用共享內存進行存儲的。 Shmget ,類似於  malloc 函數
相關知識:
ipcs 可用來顯示當前 Linux 系統中的共享內存段、信號量集、消息隊列等的使用情況。
命令示例:
ipcs -a ipc  顯示當前系統中共享內存段、信號量集、消息隊列的使用情況;
ipcs -m  顯示共享內存段的使用情況;
ipcs -s  顯示信號量集的使用情況;
ipcs -q  顯示消息隊列的使用情況;
ipcrm 可用來刪除對應的共享內存段、信號量、消息隊列;
命令示例:
ipcrm -s semid  刪除對應的信號量集
ipcrm -m shmid  刪除對應的共享內存段
ipcrm -q msqid  刪除對應的消息隊列
ipcrm 本身只能實現單個資源的刪除,利用以下命令可實現批量刪除( zhangsj 版權所有,呵呵):
1.ipcs -s|grep  用戶名 |cut -d" " -f2|xargs -n1 ipcrm -s
2.ipcs -s|awk '/ 用戶名 /{print $2}'|xargs -n1 ipcrm -s
3.ipcs -s|awk '/ 用戶名 /{system("ipcrm -s "$2)}'
4.for i in echo `ipcs|grep  用戶名 |cut -d" " -f2`; do ipcrm -s $i; done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM