2

Pythonプログラムを実行し、プログラムの完了後にシャットダウンするシェルスクリプトを実行したいと思います。これが私が書いたものです

#!/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 に答える