使用 crontab 顺序运行两个命令

使用 crontab 顺序运行两个命令

我 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

相关内容