您可以在启动时仅以 sudo 形式运行部分脚本吗?

您可以在启动时仅以 sudo 形式运行部分脚本吗?

我有一台联想 Yoga 7i,当前内核中其声卡存在已知问题,无法通过扬声器输出声音。

然而,有一个黑客解决方案被描述这里设置完成后,运行此脚本,音频就可以正常工作

#!/bin/bash
sudo rtcwake -m mem -s 1
while true
do
  echo -n -e '\x00' | padsp tee /dev/audio
  sleep 5
done

此脚本的问题在于,要运行rtcwake,您似乎需要将其作为 运行sudo,这意味着您需要输入密码,这使得它作为启动脚本毫无用处。但root从头开始运行脚本意味着 while 循环会tee: /dev/audio: Connection refused一遍又一遍地输出错误。

我怎样才能在任何用户启动时运行这个只使用其部分内容作为 sudo 的脚本?

答案1

可行的方法是拆分脚本:rtcwake -m mem -s 1在启动时以 root 身份运行。如今,crontab 可能是执行此操作最方便的方法(除非您喜欢编写 systemd 服务):

sudo crontab -e

打开并编辑根 crontab 文件,并添加:

@reboot rtcwake -m mem -s 1

然后,您可以运行在用户登录时自动启动的另一个脚本的下一部分。

相关内容