1

テストしようとしていますmonit。アイデアは、テキストを出力する python スクリプトと、開始/停止スクリプトとして機能するシェル スクリプトがあることです。このシェル スクリプトは、出力を というファイルにリダイレクトしますfetch_output

私がやりたいのはmonit、そのファイルのタイムスタンプを確認し、直前に変更されていない場合はスクリプトを再起動することです。

ここに私のpythonスクリプトがあります:

test.py

 import time
 import sys

 for i in range(100):
     time.sleep(1)
     sys.stdout.write('a'*i)
     sys.stdout.flush()

wrapper_test

 #! /bin/bash

 PIDFILE=/home/jhon/workspace/producer/wrapper_test.pid

 case $1 in
   start)
     echo $$ > ${PIDFILE};
     exec /usr/bin/python /home/jhon/workspace/producer/test.py >> fetch_output.txt 2>&1
     ;;
   stop)
     kill `cat ${PIDFILE}`
     ;;
   *)
     echo "Usage: wrapper {start|stop}" 
     ;;

 esac
 exit 0

/etc/monit/conf.d/test

 check process wrapper_test with pidfile /home/jhon/workspace/producer/wrapper_test.pid
   start program = "/home/jhon/workspace/producer/wrapper_test start"
   stop program = "/home/jhon/workspace/producer/wrapper_test stop"
   depends on fetch_output

 check file fetch_output with path /home/jhon/workspace/producer
   if timestamp > 1 minutes then
       exec "/usr/bin/monit restart wrapper_test"

問題は、このスクリプトが出力をファイルに書き込まないことです。しかし、私はできる

ps aux | grep test
root     18333  0.0  0.0  31108  4612 ?        S    14:39   0:00 /usr/bin/python /home/jhon/workspace/producer/test.py

だから私はそれが機能していることを見ることができますが、私を混乱させる別のことは、私がmonit statusfetch_output ステータスパラメータを実行するときInvalid Typeです。それが何を意味するのかわかりませんが、何かが明らかに間違っています。

Process 'wrapper_test'
  status                            Initializing
  monitoring status                 Initializing
  data collected                    Fri, 23 Aug 2013 14:32:17

File 'fetch_output'
  status                            Invalid type
  monitoring status                 Monitored
  permission                        0
  uid                               0
  gid                               0
  timestamp                         Wed, 31 Dec 1969 19:00:00
  size                              0 B
  data collected                    Fri, 23 Aug 2013 14:42:14
4

0 に答える 0