私の3歳の女の子は SuperTux が大好きです。彼女はマウスを制御できないため、起動時にゲームが自動的に実行されます。ゲーム終了後、コンピューターは自動的にシャットダウンします。
ただし、「crontab -e」に次のコマンドを入力すると:
@reboot env DISPLAY=:0.0 /usr/games/supertux2 && echo "PASSWORD" | Sudo -S shutdown -h now
最初の部分は、ブート時に古いPCでゲームを実行します。私の女の子がゲームを終了したときにコマンドの2番目の部分がコンピューターの電源を切ると思っていましたが、機能していません。
チェーンコマンドA && B
は、Aが終了したときにBを開始するという意味ではありませんか?
ゲームが終了したときにコンピューターの電源を切ることを自動化するにはどうすればよいですか?
技術的には、A && B
はAが成功した場合にのみBを実行します(ステータスがEXIT_SUCCESS、つまり0で終了します)。同様に、A || B
は、Aが失敗した場合にのみBを実行します。別のオプションはA; B
で、Aの終了ステータスに関係なく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ではなく、再起動時にそれを呼び出します