かなり前にMacPortsでZabbix agentをインストールしました。
http://d.hatena.ne.jp/ksaito11/20100425
MacPortsでインストールしたZabbix agentに付属しているスクリプトは、startできますが、stopがエラーとなるのでstop/restartが動きません。
原因は、Macのawkのバージョンの違いなのでパッチを作成しました。
現象
stopやrestartをするとエラーになります。
$ sudo /opt/local/share/zabbix/zabbix_agentd.init restart Password: -n Shutting down zabbix_agentd usage: kill [-s signal_name] pid ... kill -l [exit_status] kill -signal_name pid ... kill -signal_number pid ... rm: /var/tmp/zabbix_agentd.pid: No such file or directory -n Starting zabbix_agentd $
パッチ
下記のようにawkのif文の記載をgrepで代替えしました。
echoコマンドの-nオプションもサポートされていないので削除しました。
pidファイルもzabbix_agentd.confのパスに合わせて修正しました。
$ diff -u /tmp/zabbix_agentd.init /opt/local/share/zabbix/zabbix_agentd.init --- /tmp/zabbix_agentd.init 2011-04-29 14:08:20.000000000 +0900 +++ /opt/local/share/zabbix/zabbix_agentd.init 2011-04-29 14:10:51.000000000 +0900 @@ -2,15 +2,15 @@ case "$1" in start) - echo -n "Starting zabbix_agentd " + echo "Starting zabbix_agentd " sudo -u zabbix /opt/local/sbin/zabbix/zabbix_agentd -c /opt/local/etc/zabbix/zabbix_agentd.conf ;; stop) - echo -n "Shutting down zabbix_agentd" - pid=`ps axc|awk "{if (\\$5==\"zabbix_agent\") print \\$1}"` + echo "Shutting down zabbix_agentd" + pid=`ps axc | grep zabbix_agent |awk "{print \\$1}"` /bin/kill $pid - rm /var/tmp/zabbix_agentd.pid + rm -rf /var/tmp/zabbix_agentd.pid ;; restart) $0 stop $
動作確認
ちゃんと動くようになりました。
$ sudo /opt/local/share/zabbix/zabbix_agentd.init restart Shutting down zabbix_agentd Starting zabbix_agentd $