![软件关闭后关闭](https://linux22.com/image/162899/%E8%BD%AF%E4%BB%B6%E5%85%B3%E9%97%AD%E5%90%8E%E5%85%B3%E9%97%AD.png)
我想仅使用 Rpi3b 将 steamlink 连接到我的电视,并找到了一个教程,该教程还展示了如何设置 steamlink 在启动时运行( sudo nano.bash_aliases
和 insert steamlink
)。
我想在关闭 steamlink 时自动关闭 raspbian(这样我就可以在没有键盘/鼠标的情况下安全地拔出插头)。我找到了这个答案:
sudo -s
someprogram && shutdown now
这是否意味着我可以编辑.bash_aliases
to steamlink && shutdown now
?仅适用于简单命令吗?
答案1
按照您的建议进行尝试是值得的。以下是一些提示,以防它无法按预期工作:
.bash_aliases 的使用
通常,.bash_aliases
不应是自动运行文件。 “干净”的方法是添加一个 systemd 单元,但我知道这对于当前的问题来说可能太复杂了。
你说你“关闭”streamlink - 为了建议一种更好的自动启动它的方法,与streamlink的交互(例如关闭它)到底是如何工作的可能很有趣?
用于 &&
Shell 脚本语法的&&
意思是:如果第一个命令成功退出,则运行第二个命令。如果您使用 CTRL-C 等常用快捷键来停止 Streamlink,这可能意味着它实际上会退出并显示故障代码。在这种情况下,符号;
可能会更好(关闭与返回代码无关):
someprogram; shutdown now
关闭使用权限
还有另一个需要考虑的警告:在 UNIX 系统上,关闭通常被认为是只能由系统管理员执行的操作。在最近的 Linux 系统上,有各种机制来确保在没有其他用户登录的情况下 shutdown 也可以作为普通用户工作。我建议检查(在将其添加到自动启动之前)该shutdown now
命令是否按预期工作。如果它不起作用,可能需要设置 sudo 以允许用户运行关机。
替代解决方案
最后,按照本问题所述,在要运行的程序之后直接添加关闭通常效果很好。如果应用程序更复杂(例如启动其他进程并在所有进程退出之前终止),则通过单独的脚本监视进程的存在并在进程不存在时触发关闭可能会很有趣。