2

我想运行一个运行 python 程序并在程序完成后关闭的 shell 脚本。这是我写的

#!/bin/bash
python program
sudo shutdown -h now

这只是关闭系统而无需等待程序完成。是否有不同的命令可以等待程序完成?

4

3 回答 3

3

您在示例中所拥有的内容实际上应该只在 python 命令完成后关闭,除非 python 程序提前分叉或背景。

运行它的另一种方法是使关闭以第一个命令的成功为条件

python command && sudo shutdown -h now

当然,如果 python 程序执行诸如分叉或守护进程之类的操作,这仍然无济于事。只需尝试单独运行 python 脚本并注意控制是否立即返回到控制台。

于 2012-08-29T05:30:40.067 回答
0

您可以运行命令halt来停止您的系统:

   #!/bin/sh
   python program
   sudo halt

首先python program运行,并halt在完成后运行(您可以测试 python 程序的退出代码)。如果它的行为不像预期的那样,请尝试了解原因。您可以在系统日志中写入内容之前添加一个记录器命令。halt

于 2012-08-29T05:36:56.087 回答
0

或者,您可以command substitution像这样使用:

$(command to run your program)

脚本一直等到包装的命令完成,然后再移动到下一个!

#!/bin/sh
$(python program.py)
sudo shutdown -P 0
于 2021-10-05T18:21:11.950 回答