我 3 岁的女儿喜欢超级燕尾服。她无法控制鼠标,所以游戏应该在启动时自动运行。游戏结束后,计算机应该自动关闭。
但是当我把下面的命令输入“crontab -e“:
@reboot env DISPLAY=:0.0 /usr/games/supertux2 && echo "PASSWORD" | sudo -S shutdown -h now
第一部分在启动时在旧 PC 上运行游戏。我期望命令的第二部分在我女儿退出游戏时关闭计算机,但它不起作用。
链式命令不是A && B
意味着当 A 完成后,启动 B 吗?
如何在游戏关闭时自动关闭电脑?
答案1
从技术上讲,A && B
只有当 A 成功时(以 EXIT_SUCCESS 状态退出,即 0)才会执行 B。同样,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