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

标签 python shell

感谢您的帮助!

我想从 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/

相关文章:

python - 使用 Django/Python : ModuleNotFoundError: No module named 'pages' 创建初学者应用程序

shell - 查看文件是否已更改

linux - 将 awk,sed 输出设置为 Bash 中的变量

javascript - 从 JavaScript 中使用 xgettext 提取译者评论(在 Python 模式下)

python - 我试图从 clrs 书中实现队列,但它没有按预期工作?我的代码有什么问题

python - Python 中两个列表列表的高效比较

python - Django session 意外丢失数据

bash - 使用带有 yt-download 和 ffmpeg 的 bash 脚本来提取或隐藏,具体取决于格式

bash - Git-Bash 运行命令的快捷方式

linux - 删除shell中一行的最后一个字