使用 crontab 順序執行兩個命令

使用 crontab 順序執行兩個命令

我三歲的女兒很喜歡超級燕尾服。她無法控制滑鼠,因此遊戲應該在啟動時自動運行。遊戲結束後,電腦應自動關閉。

但是,當我將以下命令放入“crontab -e」:

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

第一部分在舊電腦啟動時運行遊戲。我預計命令的第二部分會在我的女孩退出遊戲時關閉計算機,但它不起作用。

鍊式指令不是A && B意味著當A完成後,啟動B嗎?

如何在遊戲關閉時自動關閉電腦電源?

答案1

從技術上講,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"

最後,您可以建立一個 shell 腳本 /usr/games/supertux2.sh:

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

然後在重新啟動時呼叫它,而不是 /usr/games/supertux2

相關內容