如何在后台执行sudo子命令

时间:2014-06-27 11:03:03

标签: bash

我有一个应该运行的脚本:

sudo command &
othercommand

我需要在运行othercommand之前完成sudo的密码提示,但上面的设置在后台运行 sudo 而不是command

IE,bash正在执行:(sudo command) &而我喜欢sudo (command &)

我会使用sudo -b,但这会使command从终端分离,并且由于^Cjobs不会影响它,因此很难停止。< / p>

我该怎么做?

1 个答案:

答案 0 :(得分:1)

为了能够在脚本退出时停止后台进程,例如 Ctrl - c ,您可以使用陷阱:

trap 'kill $pids' EXIT
[...]
sudo command & pids="${pids+$pids }$!"
[...]
othercommand
[...]
wait

此脚本仅在sudo命令完成后退出它收到终止信号,此时它将在退出前终止sudo命令。