我试图找出如何在后台运行命令,然后稍后将其带到前台。我厌倦了人们说它很简单的教程和答案,只需将其附加&到命令的末尾即可使其在后台运行。它仅在单个终端窗口中工作。我想在一个终端中将命令置于后台,并在重新打开终端后将其恢复到前台
例子:
$ grunt &
$ jobs
$ [1]+ Running grunt &
Run Code Online (Sandbox Code Playgroud)
当然在关闭终端后没有找到任何工作。
下一个例子:
$ grunt & disown #the same behavior has: $ setsid grunt &
$ jobs
$ [nothing] #but ps shows that grunt is working
after close terminal, grunt doesn't work
Run Code Online (Sandbox Code Playgroud)
我做错了什么?任何人都可以解释我如何在后台运行命令并将其返回到前台。
fal*_*ner 17
安装screen:
sudo apt-get install screen
Run Code Online (Sandbox Code Playgroud)开始screen:
screen -S session_name
Run Code Online (Sandbox Code Playgroud)执行您需要的命令。
screen从终端分离(您的命令仍将运行):
按CTRL+ a+d
关闭终端
打开另一个终端并重新连接上一个screen会话:
screen -r
Run Code Online (Sandbox Code Playgroud)欲了解更多信息和额外的选项screen神情man screen。
sgx*_*gx1 11
你想要的方式是不可能的。
让我们回顾一些基本概念:
如果关闭终端,则会话中的所有进程都已死,除了那些(守护进程)重新指向 init 进程的进程。并且没有办法再次给他们一个控制终端。
总之,进程重父在 POSIX 系统中受到高度限制(守护进程是一个例外),无法满足您的要求。
您是否尝试过:byobu或tmux哪些是终端多路复用器。不完全是你正在寻找的,但它有类似的行为。
byobu-screen
Run Code Online (Sandbox Code Playgroud)
然后运行您的命令,以分离:
byobu-screen -d
Run Code Online (Sandbox Code Playgroud)
恢复:
byobu-screen -r
Run Code Online (Sandbox Code Playgroud)
请参阅https://help.ubuntu.com/community/Screen