我正在尝试编写一个简单的shell
脚本来启动和停止我的python脚本。我这样做的原因是因为我想使用名为monit
的工具来监视进程,我还需要确保这个脚本正在运行。所以这是我的python脚本:
import time
for i in range(100):
time.sleep(1)
print 'a'*i
这是我的shell脚本:
#! /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 1>&2 output
;;
stop)
kill `cat ${PIDFILE}`
;;
*)
echo "Usage: wrapper {start|stop}"
;;
esac
exit 0
我想要的结果就是说我做tail -f output
我会看到工作人员来到文件中。我还尝试将1>&2
更改为>
,但这会创建文件,一旦我按Ctrl + C
,就会将所有数据都附加到文件中。
但是现在,我什么都没看到
答案 0 :(得分:4)
对于追加(您永远不想剪切文件),请使用>>
;要获得stderr,请使用2>& 1
exec /usr/bin/python /home/jhon/workspace/producer/test.py >> output 2>&1
和
import time
import sys
for i in range(100):
time.sleep(1)
sys.stdout.write('a'*i)
sys.stdout.flush()
答案 1 :(得分:3)
将1>&2 output
替换为> output 2>&1
:
exec /usr/bin/python /home/jhon/workspace/producer/test.py > output 2>&1