2014-06-27 34 views
0

執行sudo的子命令我應該運行像這樣的腳本:如何在後臺

sudo command & 
othercommand 

我需要sudo來之前完成othercommand運行密碼提示,但上面的設置運行sudo在後臺,而不是command

IE,慶典做:(sudo command) &而我想sudo (command &)

竟被我d使用sudo -b,但這會使command從終端發出,並使其難以停止,因爲^Cjobs不會影響它。

我該怎麼做?

+0

我認爲你所需要做的就是使命令'sudo command && othercommand' – arbulgazar

+0

'command'需要在'othercommand'同時在後臺作爲root運行,並且能夠在同一時間輕鬆停止它終端(IE通過'fg''^C') –

+0

也許[this](http://ubuntuforums.org/showthread.php?t=1917089)主題可能會有所幫助。 我想你可能會嘗試像'sudo echo'hi'&&(sudo command othercommand)&'因爲第二個sudo不會要求輸入密碼。一種骯髒的解決方法。 :)) – arbulgazar

回答

1

爲了能夠當腳本退出例如Ctrl鍵停止後臺進程 - ç你可以使用一個陷阱:

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

,該腳本只能退出一次sudo命令完成它收到一個終止信號,此時它將在退出之前終止命令sudo

+0

聽起來很完美,謝謝! –