共享記憶體相關(ipcs/ipcrm)
在Linux程式通訊中,共享記憶體的應用是比較普遍,把自己學習過的資料作一個小結吧!
共享記憶體是系統出於多個程式之間通訊的考慮,而預留的的一塊記憶體區。在/proc/sys/kernel/目錄下,記錄著共享記憶體的一些限制,如一個共享記憶體區的最大位元組數shmmax,系統範圍內最大共享記憶體區識別符號數shmmni等,可以手工對其調整,但不推薦這樣做。
注意:在使用共享記憶體,結束程式退出後。如果你沒在程式中用shmctl()刪除共享記憶體的話,一定要在命令列下用ipcrm命令刪除這塊共享記憶體。你要是不管的話,它就一直在那兒放著了。
簡單解釋一下ipcs命令和ipcrm命令。
取得ipc資訊:
ipcs [-m|-q|-s]
-m 輸出有關共享記憶體(shared memory)的資訊
-q 輸出有關資訊佇列(message queue)的資訊
-s 輸出有關“遮斷器”(semaphore)的資訊
%ipcs -m
刪除ipc
ipcrm -m|-q|-s shm_id
%ipcrm -m 105
---------------------------------
共享記憶體是一種非常重要且常用的程式間通訊方式,相對於其它IPC機制,因其速度最快、效率最高,被廣泛應用於各類軟體產品及應用開發中。System V IPC 為UNIX平臺上的共享記憶體應用制定了統一的API標準,從而為在UNIX/Linux平臺上進行跨平臺開發提供了極大的便利;開發人員基於一套基本相同的原始碼,便可開發出同時支援AIX、Solaris、HP-UX、Linux等平臺的產品。
$ ipcs -ma
IPC status from /dev/mem as of Thu Jul 17 08:48:39 BEIST 2014
T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME
Shared Memory:
m 0 0x5800120c --rw-rw-rw- root system root system 1 134217728 19838 32766 14:08:54 14:08:54 14:08:54
m 131073 0x16fd87e8 --rw-r----- oracle dba oracle dba 9 218415104 49796 64370 8:48:29 8:48:29 14:10:02
m 131074 0x78054448 --rw-r----- oracle dba oracle dba 6 106184704 46206 82892 1:40:19 1:40:19 14:09:54
m 131075 0xffffffff --rw-rw---- root system root system 1 4096 43874 43874 8:48:22 8:48:22 14:09:52
m 4 0x6953e7d8 --rw-r----- oracle dba oracle dba 9 303316992 54184 64436 1:37:49 1:37:49 14:10:08
m 5 0x47f35784 --rw-r----- oracle dba oracle dba 9 504643584 59096 78314 1:35:18 1:35:18 14:10:22
m 6 0xffffffff --rw------- root system root system 0 268435456 62182 62182 14:10:31 9:01:06 14:10:31
m 262151 0xffffffff --rw------- root system root system 1 268435456 79010 79010 9:01:47 no-entry 9:01:47
m 8 0x0d0004da --rw-rw-rw- root system root system 1 1440 45784 62354 8:45:31 8:45:31 14:34:43
$
ipcrm:manually deallocate shared memory on a system
ipcs [-m|-q|-s]
-m 輸出有關共享記憶體(shared memory)的資訊
-q 輸出有關資訊佇列(message queue)的資訊
-s 輸出有關“遮斷器”(semaphore)的資訊
IPC status from
T ID KEY MODE OWNER GROUP
Shared Memory:
m 0 0x50000d43 --rw-r--r-- root root
m 501 0x1e90c97c --rw-r----- oracle dba
刪除ipc(清除共享記憶體資訊)
ipcrm -m|-q|-s shm_id
do
ipcrm -m $i
ipcrm -s $i
done
ps -ef|egrep "ora_|asm_"|grep -v grep |grep -v crs|awk '{print $2}' |xargs kill -9
取得ipc資訊:
ipcs [-m|-q|-s]
-m 輸出有關共享記憶體(shared memory)的資訊
-q 輸出有關資訊佇列(message queue)的資訊
-s 輸出有關“遮斷器”(semaphore)的資訊
# ipcs -m
IPC status from
T ID KEY MODE OWNER GROUP
Shared Memory:
m 0 0x50000d43 --rw-r--r-- root root
m 501 0x1e90c97c --rw-r----- oracle dba
#ipcs |grep oracle|awk '{print $2}
刪除ipc(清除共享記憶體資訊)
ipcrm -m|-q|-s shm_id
%ipcrm -m 501
do
ipcrm -m $i
ipcrm -s $i
done
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-1220947/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ipcs命令和ipcrm命令
- ORA-27102 IPCRM無法清除共享記憶體記憶體
- ipcs、ipcrm、sysresv、kernel.shmmaxHMM
- 【故障解決】IPCS和IPCRM使用
- IPCS ipcrm刪除訊號量
- [20190104]ipcs檢視共享記憶體段.txt記憶體
- 記憶體優化相關記憶體優化
- iOS記憶體管理相關iOS記憶體
- 共享記憶體記憶體
- SGA與共享記憶體的關係記憶體
- oracle記憶體調整相關Oracle記憶體
- Golang 共享記憶體Golang記憶體
- POSIX共享記憶體記憶體
- oracle 共享記憶體Oracle記憶體
- iOS 記憶體管理相關面試題iOS記憶體面試題
- golang的記憶體相關內容Golang記憶體
- [android]記憶體分析相關文件Android記憶體
- [20191220]關於共享記憶體段相關問題.txt記憶體
- nginx共享記憶體分析Nginx記憶體
- QT之共享記憶體QT記憶體
- 共享記憶體函式記憶體函式
- shmget() -- 建立共享記憶體記憶體
- SGA與共享記憶體記憶體
- linux共享記憶體Linux記憶體
- 惡意軟體開發——記憶體相關API記憶體API
- Win10系統GPU共享記憶體怎麼關閉?Win10系統GPU共享記憶體的關閉方法Win10GPU記憶體
- [20191223]關於共享記憶體段相關問題3.txt記憶體
- project中的堆疊記憶體,記憶體地址引用,gc相關問題Project記憶體GC
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- Qt共享記憶體QSharedMemoryQT記憶體
- Linux共享記憶體(二)Linux記憶體
- 修改/dev/shm共享記憶體dev記憶體
- 共享記憶體分段問題記憶體
- SGA與共享記憶體2記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- nginx中共享記憶體的使用Nginx記憶體
- 程式間通訊---共享記憶體記憶體
- Linux共享記憶體的管理Linux記憶體