如何在后台运行“apt-get install”?

kat*_*iel 17 apt

当我尝试使用命令安装软件包(例如nsnake)时 sudo apt-get install nsnake &,该过程会立即停止。我可以将它带到前台并输入我的 sudo 密码,暂停它(使用Ctrl- Z),然后再次将其发送回后台。但是外壳会立即暂停该过程,例如,

katriel@caseylaptop:~$ bg     
[2]+ sudo apt-get install nsnake &   
[2]+  Stopped                 sudo apt-get install nsnake
Run Code Online (Sandbox Code Playgroud)

是否可以在后台安装软件包?我可能想在通过 SSH 连接的计算机上安装大型软件包时执行此操作。

kir*_*iri 30

是的,当然。

它周围的奇特事物执行你的apt-get命令

sudo bash -c 'apt-get -y install guake >/dev/null 2>&1 & disown'
Run Code Online (Sandbox Code Playgroud)

部分说明:

  • sudo bash -c部件产生一个新bash进程,并apt-get -y install guake >/dev/null 2>&1 & disown在该新外壳内运行。

  • 然后在新的子 shell 中运行这些命令:

    • apt-get -y install guake:您要运行的主要 apt-get 命令。

      • >/dev/null 2>&1 管道 stdout 和 stderr 到 /dev/null。
    • & disown 否认之前的作业并退出子shell。


小智 17

我总是喜欢用screen在后台运行程序。

  • 虽然这在理论上可以回答这个问题,但 [最好](​​http://meta.stackexchange.com/q/8259) 在此处包含答案的基本部分,并提供链接以供参考。 (4认同)
  • +1 屏幕。它易于使用,非常适合您不时访问的后台程序,例如 irc 客户端或当您需要快速重复访问一组路径或文件时作为多个 ssh 连接的替代品 (2认同)

MDM*_*313 9

添加&符号&以运行任何程序并在程序运行时返回提示,例如

sudo apt-get -y install nsnake &
Run Code Online (Sandbox Code Playgroud)

但是,您可能会在 shell 中定期弹出某些事件和通知。要隐藏这些事件,请将它们通过管道传输到 STDOUT

sudo apt-get -y install nsnake >/dev/null &
Run Code Online (Sandbox Code Playgroud)