このエントリーをはてなブックマークに追加


セマフォの使用状況確認・削除方法・ipcs,ipcrm

本資料はセマフォの使用状況の確認方法と削除方法の操作を以下に記します。


関連資料

セマフォの使用状況確認・ipcs

rootユーザーになり、以下のコマンドを実行するとセマフォの使用状況を確認をすることができます。
一般ユーザの場合は、現在使用しているユーザのみ表示されます。

ipcs -s

実際にCentOS5で実行したときの出力です。

[root@centos5 ~]# ipcs -s

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x0052e2c1 0          postgres  600        17        
0x0052e2c2 32769      postgres  600        17        
0x0052e2c3 65538      postgres  600        17        
0x0052e2c4 98307      postgres  600        17        
0x0052e2c5 131076     postgres  600        17        
0x0052e2c6 163845     postgres  600        17        
0x0052e2c7 196614     postgres  600        17        
0x00000000 629047303  apache    600        1         
0x036c6761 588447766  sakura    600        17        
0x036c6762 588480535  sakura    600        17        
0x036c6763 588513304  sakura    600        17        
0x036c6764 588546073  sakura    600        17        
0x036c6765 588578842  sakura    600        17        
<省略>

セマフォの削除・ipcrm

上記で確認したセマフォの使用状況からsemidを使用してセマフォを削除する場合は、以下のようなコマンドになります。
プロセスが異常終了して解放されていないセマフォを消すことができます。
作業はrootユーザーで行えば全てを操作することができます。
一般ユーザの場合は、現在使用しているユーザのみ対象となります。

ipcrm -s <semid>

上記のコマンドは-sオプションを指定することによりsemidを指定しセマフォを削除します。
以下にipcrmコマンドを使った例を記します。

  1. ipcs -s でセマフォを確認
    [root@centos5 ~]# ipcs -s | grep sakura
    0x036c6761 588447766  sakura 600        17        
    0x036c6762 588480535  sakura 600        17        
    0x036c6763 588513304  sakura 600        17        
    0x036c6764 588546073  sakura 600        17        
    0x036c6765 588578842  sakura 600        17        
  2. ipcrm -s <semid>で1つセマフォを削除してみる
    [root@centos5 ~]# ipcrm -s 588447766
  3. セマフォが削除されているかを確認(削除されました)
    [root@centos5 ~]# ipcs -s | grep sakura | grep 588447766
    [root@centos5 ~]# 


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:50