간단한 파이썬 스크립트 test.py
:init.d 스크립트가 실행 파일의 stdin stderr을 리디렉션하지 못하고 잘못된 프로세스 ID를 얻습니다.
그런 다음 ./test.py &> logfile.log & PID=$!
을 수행하려고 시도하는 init.d 스크립트가 있습니다. 그 이유는 PID가 잘못되었다는 것입니다. 리다이렉트 대신 쉘로 출력합니다. . 나는 스크립트를 /etc/init.d에두고 sudo service productcrawler-router start
을 실행하여 스크립트를 테스트하고있다. (실제 스크립트는 서버의 포트를 열 때마다 sudo를 사용하고있다.) init.d 스크립트의 관련 섹션.
case "$1" in
start)
if [ -f $PIDF ]
then
echo "$NAME is currently running. Killing running process..."
$IEXE stop
fi
cd $LDIR
if [ -f $LDIR/$NAME.log ] ; then
echo "File already exist."
fi
sudo python ./$EXEC &> $LDIR/$NAME.log & MYPID=$!
ls -l $LDIR | grep $NAME
echo $MYPID
ps aux | grep "router"
ps aux | grep $MYPID
echo "$NAME are now running."
;;
출력 :
#! /bin/sh
# chkconfig 345 85 60
# description: startup script for produtcrawler-router
# processname: producrawler-router
NAME=productcrawler-router
LDIR=/etc/productcrawler/services
EXEC=test.py
PIDF=/var/run/productcrawler.pid
IEXE=/etc/init.d/productcrawler-router
### BEGIN INIT INFO
# Provides: productcrawler-router
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 5
# Default-Stop: 0 1 2 3 6
# Description: Starts the productcrawler-router service
### END INIT INFO
if [ ! -f $LDIR/$EXEC ]
then
echo "$LDIR/$EXEC not found."
exit
fi
case "$1" in
start)
if [ -f $PIDF ]
then
echo "$NAME is currently running. Killing running process..."
$IEXE stop
fi
cd $LDIR
if [ -f $LDIR/$NAME.log ] ; then
echo "File already exist."
fi
sudo python ./$EXEC &> $LDIR/$NAME.log & MYPID=$!
ls -l $LDIR | grep $NAME
echo $MYPID
ps aux | grep "router"
ps aux | grep $MYPID
echo "$NAME are now running."
;;
stop)
if [ -f $PIDF ]
then
echo "Stopping $NAME."
PID_2=`cat $PIDF`
if [ ! -z "`ps -f -p $PID_2 | grep -v grep | grep '$NAME'`" ]
then
kill -9 $PID_2
fi
rm -f $PIDF
else
echo "$NAME is not running, cannot stop it."
fi
;;
force-reload|restart)
$0 stop
$0 start
;;
*)
echo "Use: /etc/init.d/$NAME {start|stop|restart|force-reload}"
exit 1
esac
내가 과거 2 시간 동안 이것에 벽에 내 머리를 두드리는 있었어요 :
-rw-r--r-- 1 root root 0 2011-04-25 13:57 productcrawler-router.log
11944
Why is it not redirecting?
root 11053 0.0 0.2 20364 5704 pts/2 Sl 13:45 0:00 python ./router.py
root 11933 2.0 0.0 1896 552 pts/2 S+ 13:57 0:00 /bin/sh /etc/init.d/productcrawler-router start
root 11948 0.0 0.0 4008 752 pts/2 S+ 13:57 0:00 grep router
root 11950 0.0 0.0 4008 756 pts/2 S+ 13:57 0:00 grep 11944
productcrawler-router are now running.
을 그리고 내가있는 init.d 스크립트가 있습니다. 누구든지 아이디어가있어?
나는 다른 SO 질문에서 대부분을 복사했는데, 인생을 훨씬 쉽게 만들어주는'start-stop-daemon'을 알려 주셔서 감사합니다. :) –