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


17

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

katriel@caseylaptop:~$ bg     
[2]+ sudo apt-get install nsnake &   
[2]+  Stopped                 sudo apt-get install nsnake

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

Answers:


30

是的,当然。

花哨的东西执行apt-get命令

sudo bash -c 'apt-get -y install guake >/dev/null 2>&1 & disown'

零件说明:

  • 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 放弃先前的工作并退出子外壳。

是“是|” 使用-y开关时需要?
user31389 2014年

@ user31389:不严格,但是如果软件包在安装过程中有进一步的提示,则可能会有所帮助。
kiri

很高兴理解为什么它起作用(以及为什么有必要)。
katriel 2014年

@katriel:解释起来并不容易。不过,我在回答中尝试了一种解释。
kiri 2014年

1
@katriel:这是因为Ctrl + Z 暂停了该命令,这意味着它已暂停(暂时停止)。
kiri

17

我一直喜欢使用屏幕在后台运行程序。


2
屏幕+1。它易于使用,非常适合您要不时访问的后台程序,例如irc客户端或当您需要快速重复访问一组路径或文件时替代多个ssh连接
Pichan 2014年

4
虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
blade19899 2014年

1
我更喜欢tmux屏幕。
迈克尔

9

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

sudo apt-get -y install nsnake &

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

sudo apt-get -y install nsnake >/dev/null &

1
事件是问题所在。解决方案似乎是将它们通过管道传输到STDOUT。
katriel 2014年

-1

这是一种解决方法,但是首先使用sudo运行任何东西,例如sudo ls。您的sudo授权将被记住一段时间。然后,您可以运行,sudo apt-get -y install nsnake &并且不会再次要求您输入密码(除非经过了一段时间并且授权已过期)。


您仍然需要在提示符下键入y,命令不会让您这样做。
kiri

@ minerz029哦,对。固定。
user31389 2014年

我很确定sudo授权和“ Y / n”提示都不会干扰,因为如果我把工作放在前台就不必这样做。
katriel 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.