crontabを使用して2つのコマンドを連続して実行する

crontabを使用して2つのコマンドを連続して実行する

私の3歳の娘はスーパータックス彼女はマウスを操作できないので、起動時にゲームが自動的に実行されるはずです。ゲーム終了後、コンピューターは自動的にシャットダウンするはずです。

しかし、以下のコマンドを「crontab -e「:」

@reboot env DISPLAY=:0.0 /usr/games/supertux2 && echo "PASSWORD" | sudo -S shutdown -h now

最初の部分は、起動時に古い PC でゲームを実行します。コマンドの 2 番目の部分は、娘がゲームを終了したときにコンピューターの電源をオフにすることを期待していましたが、機能しません。

チェーンコマンドはA && B、A が終了したら B を開始するという意味ではないのですか?

ゲームが終了したときにコンピューターの電源を自動的にオフにするにはどうすればよいでしょうか?

答え1

技術的には、A && BA が成功した場合 (EXIT_SUCCESS ステータス、つまり 0 で終了した場合) のみ B を実行します。同様に、A || BA が失敗した場合のみ B を実行します。別のオプションとしては、A; BA の終了ステータスに関係なく B を実行しますが、A が完了するまでは実行しないというものがあります。ゲームが現在どのように終了しているかはわかりませんが、EXIT_SUCCESS ステータスで終了しない場合は、B は実行されません。

これをテストするには、次のコマンドを実行して、どのコマンドが文字列を生成するかを確認します。

perl -e 'exit 0' && echo "exit was successful"
perl -e 'exit 0' || echo "exit was successful"
perl -e 'exit 0'; echo "exit was successful"
perl -e 'exit 1' && echo "exit was failure"
perl -e 'exit 1' || echo "exit was failure"
perl -e 'exit 1'; echo "exit was failure"

最後に、シェル スクリプト /usr/games/supertux2.sh を作成します。

#!/bin/sh
/usr/games/supertux2
echo "PASSWORD" | sudo -S shutdown -h now

そして、再起動時に/usr/games/supertux2ではなくこれを呼び出します。

関連情報