如何使 /etc/rc.local 按预期工作

如何使 /etc/rc.local 按预期工作

我的问题与这个问题

我想在启动时停用蓝牙,不幸的是建议的解决方案添加:

rfkill block bluetooth

之前在我的 Acer aspire 1810TZ 上运行 Ubuntu 13.10 并配备英特尔高级 wifilink N-6235 时无法工作/etc/rc.localexit 0

针对 Thinkpad 笔记本电脑建议的解决方案也不行。

有效的方法是添加:

/etc/init.d/bluetooth stop

/etc/rc.local,但这会禁用蓝牙小程序,当我想使用蓝牙时,我需要轻松启用蓝牙。

所以问题是为什么不起作用rfkill block bluetooth以及如何使其再次起作用?

谢谢!

答案1

如何使 /etc/rc.local 按预期工作

由于 upstart 异步启动其服务,因此在启动 /etc/rc.local 时并非所有服务都已准备就绪的情况很常见。因此您需要sleep 3在脚本开头添加(或其他数字,您需要自己找出)。

您必须注意不要让返回错误的程序中断脚本。例如:我可以在笔记本电脑上的两个显卡之间切换(混合显卡之前),并且根据打开的显卡,我必须使用不同的文件/sys/class/backlight/...来设置其亮度。最简单的方法是同时设置两者。但为了确保不存在的脚本不会中断脚本,我在每个命令的末尾/etc/rc.local附加了脚本。|| true

所以这就是我的rc.local脚本现在的样子(不包括开头的注释):

sleep 3

echo 2 > /sys/class/backlight/sony/brightness || true
echo 2 > /sys/class/backlight/nv_backlight/brightness || true
rfkill block bluetooth

exit 0

相关内容