如何从shell启动和停止Python脚本

rik*_*ert 2 python shell

谢谢你的帮助!

我想从shell脚本启动和停止Python脚本.开始工作正常,但我想在10秒后停止/终止Python脚本.(这是一个不断计数的计数器).芽是不会停止....我认为它挂在第一行.

什么是开始等待10秒的正确方法?

Shell脚本:

python /home/pi/count1.py

sleep 10

kill /home/pi/count1.py
Run Code Online (Sandbox Code Playgroud)

它还没有工作.我明白在后台编写脚本.那工作!但在做完后,我从树莓树上得到另一条评论:

python /home/pi/count1.py & 

sleep 10; kill /home/pi/count1.py
Run Code Online (Sandbox Code Playgroud)

/home/pi/sebastiaan.sh:line 19:kill:/home/pi/count1.py:参数必须是进程或作业ID

它必须在:(但是什么?感谢您的帮助!)

sleep 10; kill /home/pi/count1.py
Run Code Online (Sandbox Code Playgroud)

agh*_*ast 9

你是对的,shell脚本在第一行"挂起",直到python脚本完成.如果没有,则shell脚本将不会继续.因此,您必须&在shell命令的末尾使用它在后台运行它.这样,python脚本启动,shell脚本继续.

kill命令不采用路径,它采用进程ID.毕竟,您可能会多次运行相同的程序,然后尝试杀死第一个或最后一个.

bash shell支持$!变量,它是最后一个后台进程的pid.

您当前的示例脚本是错误的,因为它不会并行运行python作业和睡眠作业.没有装饰,脚本将等待python作业完成,然后睡10秒,然后杀死.

你可能想要的是:

python myscript.py &     # <-- Note '&' to run in background

LASTPID=$!               # Save $! in case you do other background-y stuff

sleep 10; kill $LASTPID  # Sleep then kill to set timeout.
Run Code Online (Sandbox Code Playgroud)