相关疑难解决方法(0)

Bash:如何在不干扰“读取”的情况下在后台运行“sudo -n true”?

我有一个长时间运行的 Bash 脚本,我不想以 root 身份运行,但它需要在整个过程中定期进行 root 访问。我通过要求用户输入 root 密码解决了这个问题

sudo -v
Run Code Online (Sandbox Code Playgroud)

然后我背景了一个进程,该进程将使用循环并重置 sudo 计时器

sudo -n true
Run Code Online (Sandbox Code Playgroud)

然后我read在主进程中使用时开始遇到奇怪的问题。这是一个展示此问题的最小脚本。如果您运行它并且在sudo -n true运行之前不输入任何内容,则读取将获得read error: 0: Resource temporarily unavailable

#!/usr/bin/env bash

sudo -v  # ask user for password

sleep 1 && sudo -n true &  # background a process to reset sudo

printf "Reading text: "
read -n 1 TEXT
echo "Read text: $TEXT"
Run Code Online (Sandbox Code Playgroud)

除了sudo. 如何sudo -n true在不干扰的情况下在后台运行read

编辑:

我只在 Ubuntu 上遇到这个问题,而不是 macOS。

bash sudo read

7
推荐指数
1
解决办法
631
查看次数

标签 统计

bash ×1

read ×1

sudo ×1