10個IPCS命令示例
IPC 代表進程間通信,這種技術允許進程相互通信。
既然每個進程都有自己的地址空間和唯一的用戶空間,那么進程之間如何通信呢?
答案是內核,它是 Linux 操作系統的核心,可以訪問整個內存。因此我們可以請求內核分配可用于進程間通信的空間。
該進程還可以通過讓兩個進程都可以訪問的文件來進行通信。進程可以打開和讀取/寫入文件,這需要大量的 I/O 操作,耗費時間。
不同類型的 IPCS
有各種 IPC 允許一個進程與另一個進程進行通信,無論是在同一臺計算機中還是在同一網絡中的不同計算機中。
管道——為進程提供一種通過交換消息相互通信的方式。命名管道為運行在不同計算機系統上的進程提供了一種通過網絡進行通信的方式。
共享內存——進程可以在共享內存中交換值。一個進程將創建其他進程可以訪問的一部分內存。
消息隊列——它是一個結構化和有序的內存段列表,進程在其中存儲或檢索數據。
信號量——為訪問相同資源的進程提供同步機制。沒有數據通過信號量傳遞;它只是協調對共享資源的訪問。
10 IPCS 命令示例
ipcs 是一個 UNIX/Linux 命令,用于列出有關進程間通信的信息 ipcs 命令提供關于 System V IPCS(消息隊列、信號量和共享內存)的報告。
IPCS 示例 1:列出所有 IPC 設施
帶有 -a 選項的 ipcs 命令列出了對當前進程具有讀取訪問權限的所有 IPC 設施。它提供了有關消息隊列、信號量和共享內存的詳細信息。
# ipcs -a ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2 ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204 ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
所有 IPC 設施都有唯一的密鑰和標識符,用于標識 IPC 設施。
IPCS 示例 2:列出所有消息隊列
帶有選項 -q 的 ipcs 僅列出當前進程具有讀取權限的消息隊列。
$ ipcs -q ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
IPCS 示例 3. 列出所有信號量
ipcs -s 選項用于列出可訪問的信號量。
# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204
IPCS 示例 4. 列出所有共享內存
ipcs -m 選項與 ipcs 命令列出共享內存。
# ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2
IPCS 示例 5. IPC 設施的詳細信息
ipcs -i 選項提供有關 ipc 設施的詳細信息。
# ipcs -q -i 32768 Message Queue msqid=32768 uid=0 gid=0 cuid=0 cgid=0 mode=0644 cbytes=0 qbytes=65536 qnum=0 lspid=0 lrpid=0 send_time=Not set rcv_time=Not set change_time=Thu Aug 5 13:30:22 2010
選項 -i 和 -q 提供有關特定消息隊列的信息。選項 -i 和 -s 提供信號量詳細信息。選項 -i 和 -m 提供有關共享內存的詳細信息。
IPCS 示例 6. 列出 IPC 設施的限制
ipcs -l 選項給出每個 ipc 設施的系統限制。
# ipcs -m -l ------ Shared Memory Limits -------- max number of segments = 4096 max seg size (kbytes) = 67108864 max total shared memory (kbytes) = 17179869184 min seg size (bytes) = 1
上面的命令給出了共享內存的限制。-l 可以與 -q 和 -s 組合以分別查看消息隊列和信號量的限制。
單個選項 -l 給出了所有三個 IPC 設施的限制。
# ipcs -l
IPCS 示例 7. 列出 IPC 設施的創建者和所有者詳細信息
ipcs -c 選項列出創建者用戶標識和組標識以及所有者用戶標識和組標識。此選項可以與 -m、-s 和 -q 結合使用,以查看特定 IPC 設施的創建者詳細信息。
# ipcs -m -c ------ Shared Memory Segment Creators/Owners -------- shmid perms cuid cgid uid gid 1056800768 660 oracle oinstall oracle oinstall 323158020 664 root root root root 325713925 666 root root root root
IPCS 示例 8. 最近訪問 IPC 設施的進程 ID
ipcs -p 選項顯示創建者 ID,以及最近訪問相應 ipc 設施的進程 ID。
# ipcs -m -p ------ Shared Memory Creator/Last-op -------- shmid owner cpid lpid 1056800768 oracle 16764 5389 323158020 root 2354 2354 325713925 root 20666 20668
-p 也可以與 -m、-s 或 -q 組合使用。
IPCS 示例 9. 上次訪問時間
ipcs -t 選項顯示每個 ipc 設施的最后操作時間。此選項也可以與 -m、-s 或 -q 結合使用以打印特定類型的 ipc 設施。對于消息隊列,-t 選項顯示上次發送和接收時間,對于共享內存,它顯示上次附加(內存部分)和分離時間戳,對于信號量,它顯示上次操作和更改時間詳細信息。
# ipcs -s -t ------ Semaphore Operation/Change Times -------- semid owner last-op last-changed 0 root Thu Aug 5 12:46:52 2010 Tue Jul 13 10:39:41 2010 32769 root Thu Aug 5 11:59:10 2010 Tue Jul 13 10:39:41 2010 1094844418 oracle Thu Aug 5 13:52:59 2010 Thu Aug 5 13:52:59 2010
IPCS 示例 10. 當前使用狀態
帶有 -u 命令的 ipcs 顯示所有 IPC 設施的當前使用情況。此選項可以與特定選項結合使用,以顯示特定 IPC 設施的狀態。
# ipcs -u ------ Shared Memory Status -------- segments allocated 30 pages allocated 102 pages resident 77 pages swapped 0 Swap performance: 0 attempts 0 successes ------ Semaphore Status -------- used arrays = 49 allocated semaphores = 252 ------ Messages: Status -------- allocated queues = 1 used headers = 0 used space = 0 bytes
任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。