問題1:
zabbix_agentd [16428]: cannot recreate Zabbix semaphores for IPC key 0x7a026869 Semaphore ID 4294967295: [22] Invalid argument
檢視KEY為0x7a026869的信号隊列:
[[email protected] zabbix]# ipcs 0x7a026869
--------- 消息隊列 -----------
鍵 msqid 擁有者 權限 已用位元組數 消息
------------ 共享記憶體段 --------------
鍵 shmid 擁有者 權限 位元組 nattch 狀态
0x6c026869 98304 admin 600 657056 6
--------- 信号量數組 -----------
鍵 semid 擁有者 權限 nsems
0x7a026869 196608 admin 600 13
原因:
我這裡zabbix_agentd啟動的時候配置的屬主屬組是zabbix,而之前估計是啟動的時候用了admin身份,導緻這裡的信号量數組和共享記憶體段的屬主都是admin,可能是因為某種原因非正常關閉了zabbix_agentd,導緻這裡的内容沒有關閉,但是每個程序啟動的時候其key值是固定的,是以當我修改了zabbix_agentd啟動屬主屬組的時候,它沒有權限删除和重新建立信号量數組,進而出現了無法啟動的問題;
解決辦法(兩種方法都已驗證):
方法1:删除信号量數組
ipcrm -S 0x7a026869
然後啟動zabbix agentd就可以了。
方法2:直接修改zabbix_agentd的啟動屬主為admin即可正常啟動。
下圖為zabbix_agentd以zabbix屬主身份啟動之後檢視相關信号隊列和共享記憶體段的資訊:

[[email protected] admin]# ipcs 0x7a026869
--------- 消息隊列 -----------
鍵 msqid 擁有者 權限 已用位元組數 消息
------------ 共享記憶體段 --------------
鍵 shmid 擁有者 權限 位元組 nattch 狀态
0x6c026869 98304 zabbix 600 657056 6
--------- 信号量數組 -----------
鍵 semid 擁有者 權限 nsems
0x7a026869 196608 zabbix 600 13
問題2:
zabbix_agentd [19609]: cannot attach to existing shared memory: [13] Permission denied
19609:20170714:101213.480 cannot allocate shared memory for collector
檢視共享記憶體段:
[[email protected] zabbix]# ipcs -m
------------ 共享記憶體段 --------------
鍵 shmid 擁有者 權限 位元組 nattch 狀态
0x6c026869 0 admin 600 657056 0
[[email protected] zabbix]# ipcrm -m 0x6c026869
ipcrm: 解析參數失敗: '0x6c026869'
删除共享記憶體(注意,這裡對共享記憶體段的操作要使用shmid值):
[[email protected] zabbix]# ipcrm -m 0