感谢您的帮助!
我想从 shell 脚本启动和停止 Python 脚本。开始工作正常,但我想在 10 秒后停止/终止 Python 脚本。 (这是一个不断计数的计数器)。 bud is won't stop....我认为它卡在第一行。
开始等待 10 秒和停止的正确方法是什么?
shell 脚本:
python /home/pi/count1.py
sleep 10
kill /home/pi/count1.py
它还没有工作。我得到了在后台执行脚本的意义。那行得通!但是我在做完之后从我的树莓中得到了另一个评论:
python /home/pi/count1.py &
sleep 10; kill /home/pi/count1.py
/home/pi/sebastiaan.sh: 第 19 行:kill:/home/pi/count1.py: arguments must be process or job IDs
它必须在:(但是什么?感谢您的帮助!)
sleep 10; kill /home/pi/count1.py
最佳答案
没错,shell 脚本在第一行“挂起”,直到 python 脚本完成。如果没有,shell 脚本将不会继续。因此,您必须在 shell 命令末尾使用 &
才能在后台运行它。这样,python 脚本启动,shell 脚本继续。
kill
命令不采用路径,它采用进程 ID。毕竟,您可能会多次运行同一个程序,然后尝试终止第一个或最后一个。
bash shell 支持$!
变量,它是最后一个后台进程的pid。
您当前的示例脚本是错误的,因为它没有并行运行 python 作业和 sleep 作业。没有修饰,脚本将等待 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.
关于python - 如何从 shell 启动和停止 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37511265/