例如,当我尝试安装一个包时蛇,使用命令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 连接的计算机上安装大型软件包时执行此操作。
答案1
是的,当然。
执行你的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
放弃先前的作业并退出子shell。
答案2
我总是喜欢用屏幕在后台运行程序。
答案3
添加 & 符号&
即可运行任何程序运行时返回到提示符,例如
sudo apt-get -y install nsnake &
但是,您可能会定期在 shell 中弹出某些事件和通知。要隐藏这些事件,请将它们传输到 STDOUT
sudo apt-get -y install nsnake >/dev/null &
答案4
这是一种解决方法,但首先使用 sudo 运行任何程序,例如sudo ls
。您的 sudo 授权将被记住一段时间。然后您可以直接运行sudo apt-get -y install nsnake &
,并且不会再次要求您输入密码(除非已经过了一段时间并且授权已过期)。