Скрипт Init.d не может выполнить скрипт Python

В настоящее время я столкнулся с проблемой со скриптом init.d, который должен выполнять скрипт Python. Я проверил права доступа к файлу Python, а также к сценарию инициализации. Сценарий инициализации работает нормально, если я заменяю исполняемую строку Python только на echo "test" > /tmp/test.txt.

Файл 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

Есть ли что-то, что мне не хватает, или мне нужны какие-либо модификации, чтобы этот скрипт инициализации работал?


person Momooo    schedule 21.09.2017    source источник
comment
В чем проблема? Сообщение об ошибке?   -  person dlmeetei    schedule 21.09.2017
comment
Сценарий Python не выполняется, но я вижу процесс, который вызывается из сценария инициализации. Сценарий Python: время импорта f = open(/hfapp/frontend/initest.txt,w+) для i в диапазоне (1000): f.write(Это строка %d\r\n % (i+1)) время. sleep(5) f.close() Этот скрипт должен записывать в текстовый файл, но он не добавляется в соответствии со скриптом   -  person Momooo    schedule 21.09.2017
comment
Как долго вы ждете? Если он зацикливается 1000 раз и каждый раз спит по 5 секунд, потребуется некоторое время, чтобы закончить и записать файл.   -  person lxop    schedule 25.09.2017
comment
Также вы не используете переменную PYTHON, которую вы определили   -  person lxop    schedule 25.09.2017
comment
lxop, я раньше тоже использовал переменную PYTHON, но это не сработало. Посмотрите на ответ, который я разместил.   -  person Momooo    schedule 26.09.2017


Ответы (1)


Проблема решена, я выполнил код Python между обратными кавычками, чтобы он сначала выполнялся, а затем записывал идентификатор процесса в файл в /var/run, а также записывал вывод в файл Give согласно скрипту Python. .

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

person Momooo    schedule 25.09.2017