У меня есть простой скрипт на Python test.py
:
#!/user/bin/python
print "Why is it not redirecting?"
Затем у меня есть сценарий init.d, в котором я пытаюсь выполнить ./test.py &> logfile.log & PID=$!
, за исключением того, что происходит, если 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."
;;
Выходы:
-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:
#! /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
Я бился головой об стену об этом последние два часа. У кого-нибудь есть идеи?