ksaitoの日記

日々試したことの覚え書き

zabbix agentの停止スクリプトの不具合修正

移転しました。

自動的にリダイレクトします。

かなり前にMacPortsでZabbix agentをインストールしました。
http://d.hatena.ne.jp/ksaito11/20100425
MacPortsでインストールしたZabbix agentに付属しているスクリプトは、startできますが、stopがエラーとなるのでstop/restartが動きません。
原因は、Macawkのバージョンの違いなのでパッチを作成しました。

現象

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
$