Bash 如何在后台执行sudo子命令
我有一个脚本,它应该运行如下内容:Bash 如何在后台执行sudo子命令,bash,Bash,我有一个脚本,它应该运行如下内容: sudo command & othercommand 在运行othercommand之前,我需要sudo的密码提示才能完成,但是上面的安装程序在后台运行sudo,而不是command 例如,bash正在做:(sudo命令)&,而我想要sudo(命令&) 我会使用sudo-b,但这会使命令从终端退出,并且很难停止,因为^C和作业不会影响它 如何执行此操作?要在脚本退出(例如Ctrl-c)时停止后台进程,可以使用陷阱: trap 'kill $pids
sudo command &
othercommand
在运行othercommand之前,我需要sudo的密码提示才能完成,但是上面的安装程序在后台运行sudo
,而不是command
例如,bash正在做:(sudo命令)&
,而我想要sudo(命令&)
我会使用sudo-b
,但这会使命令从终端退出,并且很难停止,因为^C
和作业
不会影响它
如何执行此操作?要在脚本退出(例如Ctrl-c)时停止后台进程,可以使用陷阱:
trap 'kill $pids' EXIT
[...]
sudo command & pids="${pids+$pids }$!"
[...]
othercommand
[...]
wait
只有在sudo
命令完成或收到终止信号后,此脚本才会退出,在这一点上,它将在退出之前终止sudo
命令。我认为您所需要的就是使它sudo命令和&othercommand
命令在后台与othercommand
同时以root用户身份运行,并且能够在同一终端中轻松停止它(即通过fg
^C
)也许这个主题会有点帮助。我想你可以尝试做一些类似sudo-echo'hi'&&(sudo-command-othercommand)&
的事情,因为第二个sudo不会要求密码。这是一种肮脏的解决方法。:)是的,sudo-true&&sudo-command&
有效,但由于某些原因,我仍然无法从终端停止command