使用 crontab 依次运行两个命令

min*_*ini 4 startup shutdown cron

我 3 岁的女孩喜欢SuperTux。她不能控制鼠标,所以游戏应该在启动时自动运行。游戏结束后,计算机应自动关闭。

但是,当我将以下命令放入“ crontab -e ”时:

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

第一部分在启动时在旧 PC 上运行游戏。我希望命令的第二部分在我的女孩退出游戏时关闭计算机,但它不起作用。

链式命令A && B是不是意味着当 A 完成后,启动 B?

如何在游戏关闭时自动关闭计算机电源?

Dr.*_*wer 11

从技术上讲,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"
Run Code Online (Sandbox Code Playgroud)

最后,您可以创建一个 shell 脚本 /usr/games/supertux2.sh:

#!/bin/sh
/usr/games/supertux2
echo "PASSWORD" | sudo -S shutdown -h now
Run Code Online (Sandbox Code Playgroud)

然后在重启时调用它,而不是 /usr/games/supertux2