尝试在启动CentOS时运行python脚本。我的/etc/init.d/example-script看起来像这样:
case $1 in
start)
$(python /etc/bin/example-script.py &)
;;
stop)
echo "filler text"
;;
当我尝试service example-script start
时,它会运行脚本,但不会在后台执行。 example-script.py
有一个while(True)
循环,所以也许这就是原因?
但是当我在终端中输入python /etc/bin/example-script.py &
时,它确实在后台执行。只有当这个命令在bash脚本中时它才会失败。
答案 0 :(得分:1)
那是因为您通过将命令置于命令替换语法($()
)中来生成子shell,即命令替换在子shell中运行命令;并且你在子shell中处理命令,而不是原始脚本的shell。
此外,你没有对STDOUT做任何事情,所以邀请另一个子shell似乎毫无意义。删除命令替换:
python /etc/bin/example-script.py &