2017-09-21 22 views
0

現在、Pythonスクリプトを実行するinit.dスクリプトに問題があります。私は、Pythonファイルとinitスクリプトのパーミッションについて確かめました。 Initスクリプトは、Pythonの実行可能な行をちょうどecho "test" > /tmp/test.txtに置き換えるとうまくいきます。Init.dスクリプトがPythonスクリプトを実行できません

Pythonファイルは行を出力し、1000回ループします。

#!/bin/sh 
# 
# /etc/init.d/incapsula-loggrabber 
# init script for Incapsula. 
# generated by 'myself'. 
# 
# chkconfig: 345 93 63 
# description: Incapsula Logging Script 
# 

. /etc/init.d/functions 

NAME=incapsula-loggrabber 
DESC="Incapsula Script to Push logs to Splunk" 
PYTHON="/bin/python" 
PIDFILE="/var/run/incapsula-loggrabber.pid" 
PYTHON_FILE="/root/inittest.py" 

do_start() { 
    echo Starting Incapsula Script... 
    echo $PIDFILE is the file where pid resides 
    sudo python $PYTHON_FILE & 
    RETVAL=`echo $?` 
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$NAME 
} 

do_stop() { 
    echo $PIDFILE is removed 
    kill `cat $PIDFILE` 
    RETVAL=`echo $?` 
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$NAME 
} 

do_status() { 
     if [ -e $PIDFILE ]; then 
     echo $NAME is running, pid=`cat $PIDFILE` 
     else 
     echo $NAME is NOT running 
     exit 1 
     fi 
} 

case "$1" in 
    start) 
     do_start 
     ;; 
    stop) 
     do_stop 
     ;; 
    restart) 
     do_stop 
     do_start 
     ;; 
    status) 
     do_status 
     ;; 
    *) 
     echo "Usage: $0 {start|stop|status|restart}" 
esac 

exit 0 

このinitスクリプトを動作させるには何か不足している、または修正が必要なことはありますか?

+0

実際の問題とは何ですか?エラーメッセージ? – dlmeetei

+0

Pythonスクリプトは実行されていませんが、私はinitスクリプトから呼び出されたプロセスを見ることができます。 Pythonスクリプト: インポート時間 F =オープン( "/ hfapp /フロントエンド/ initest.txt"、 "W +") Iの範囲は(1000)で: f.write( "これは、行%dとtime.sleep(5) f.close() このスクリプトはテキストファイルに書き込む必要がありますが、スクリプトごとに追加されません。 – Momooo

+0

どのくらいの時間待っていますか? 1000回ループして5秒ごとにスリープしている場合は、ファイルを終了して書き出すのに少し時間がかかります – lxop

答えて

0

問題は解決されました。最初に実行された後、プロセスIDを/ var/runの下のファイルに書き込むように、バックティックの間にPythonコードを実行しました。 Pythonスクリプトごとに。

echo `/bin/python /root/inittest.py ` & echo $! > $PIDFILE

関連する問題