パスワードを入力する以外に、対話をできるだけ少なくしながら、sudoが必要なタスクをバックグラウンドに配置する方法を探しています。
sudoは端末のパスワードを要求し、バックグラウンド操作は端末を中断します。
$ sudo sleep 10 &
[1] 32749
$ fg 1
sudo sleep 10
[sudo] password for t:
私の現在の解決策は上記のとおりです。パスワードを入力して再度bg 1
作業します。 3つのコマンドを対話的に実行する必要があります。
sudo は、シェル固有のコマンドではなく実行可能ファイルでのみ機能します。
$ sudo ( sleep 10 & )
bash: syntax error near unexpected token `sleep'
$ sudo { sleep 10 & }
bash: syntax error near unexpected token `}'
次のアプローチはバックグラウンドタスクをシェルから分離するが、これは望ましくない。
$ sudo bash -c "sleep 10 & "
[sudo] password for t:
$ jobs
$
集中もできますよsudo
。たとえば、sudoers から NOPASSWD コマンドを生成するか、実際のバックグラウンド sudo コマンドの前にダミー sudo コマンドを発行して、パスワードキャッシュを利用します。エレガントな方法なのかよくわかりません。その中に存在するものがあれば教えてください。
答え1
私はsudo -v
これを「実際のバックグラウンドsudoコマンドの前のダミーsudoコマンド」として使用します。sudo のマニュアルページこれを考慮すると:
-vオプションでsudoを実行すると、ユーザーはコマンドを実行せずにキャッシュされた資格情報を更新できます。
これには、ユーザーが「ダミー」sudoコマンドとして機能するために他のsudo許可コマンドは必要ありません。
答え2
私は最後の段落がこれを説明する方法だと思います。パスワード要件を無効にすることが適切な場合は、このコマンドを設定する必要がありますNOPASSWD
。そうでなく、sudo
資格情報のキャッシュを許可する場合(デフォルトで実行されている場合)、これを事前設定できます。
sudo -v
sudo sleep 10 &