Estou procurando uma maneira de colocar um trabalho que requeira sudo como plano de fundo, com o mínimo de interação possível, exceto talvez digitar minha senha.
sudo requer senha do terminal, enquanto o job em background desiste do terminal:
$ sudo sleep 10 &
[1] 32749
$ fg 1
sudo sleep 10
[sudo] password for t:
Minha solução atual é como acima para digitar minha senha e, em seguida, bg 1
o trabalho novamente. Isso requer que eu execute interativamente três comandos
sudo só funciona com executáveis, não com comandos específicos do shell:
$ sudo ( sleep 10 & )
bash: syntax error near unexpected token 'sleep'
$ sudo { sleep 10 & }
bash: syntax error near unexpected token '}'
A maneira a seguir separará o trabalho de fundo do shell, indesejavelmente:
$ sudo bash -c "sleep 10 & "
[sudo] password for t:
$ jobs
$
Também posso me concentrar no sudo
. Por exemplo, faça o comando NOPASSWD em sudoers ou tire proveito do cache de senha executando um comando fictício sudo antes do comando background sudo real. Não tenho certeza se são formas elegantes. Deixe-me saber se algum deles é.