我正在尝试编写一个简单的 bash 函数,该函数睡眠 X 分钟,然后运行系统睡眠命令(对我来说,这是sudo pm-suspend
因为我在 Ubuntu 上)现在该函数如下所示:
function sleepin {
sleep $(bc <<< $1*60); sudo pm-suspend
}
Run Code Online (Sandbox Code Playgroud)
第一个参数是在睡眠应该发生多少分钟之后。问题是睡眠后脚本提示我输入 sudo 密码。
(我试过打电话,sudo sleepin 30
但它仍然提示我输入密码。请注意,如果睡眠调用足够小,bash 不会提示输入密码,但如果睡眠时间更长,它会......)
将 sleep 放入 sudo 命令中。
seconds=$(($1 * 60))
sudo sh -c "sleep $seconds; pm-suspend"
Run Code Online (Sandbox Code Playgroud)
正如 Mat 所建议的,您可以允许用户在没有密码的情况下运行 pm-suspend。
跑步sudo visudo
添加youruser ALL=(root) NOPASSWD: /path/to/pm-suspend