Ich habe ein lang laufendes Bash-Skript, das ich nicht als Root ausführen möchte, das jedoch regelmäßig Root-Zugriff benötigt. Ich habe dieses Problem gelöst, indem ich den Benutzer nach dem Root-Passwort gefragt habe
sudo -v
und dann habe ich einen Prozess hinterlegt, der den Sudo-Timer mit schleifen und zurücksetzen würde
sudo -n true
Ich bekam dann seltsame Probleme bei der Verwendung read
im Hauptprozess. Hier ist ein minimales Skript, das dieses Problem zeigt. Wenn Sie es ausführen und vor dem sudo -n true
Ausführen nichts eingeben, erhält der Lesevorgang einread 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"
Ich konnte dieses Verhalten mit keinem anderen Befehl außer replizieren sudo
. Wie kann ich sudo -n true
im Hintergrund laufen, ohne mich einzumischen read
?
Bearbeiten:
Ich bekomme dieses Problem nur unter Ubuntu, nicht unter MacOS.
sudo -v
erneut verwendensudo -n true
?