无法在终端中隐藏正在运行的进程

时间:2009-04-27 14:34:39

标签: unix process terminal

我昨天升级了MacPorts的应用程序,显然大约需要4个小时。 在终端的一个标签中看到安装过程是令人恼火的。

问题:在终端中隐藏正在运行的进程,以免在我的工作区域占用空间

我今天发现Bash 4中有一个新命令coproc:

  

coprocess以异步方式执行   在子shell中,就像命令一样          在执行的shell和协同进程之间建立

我不确定您是否可以使用它来解决问题。我没有设法使用它。

如何隐藏正在运行的进程,使其在终端中不可见,但会继续运行?

3 个答案:

答案 0 :(得分:4)

您是否考虑Ctrl + Z暂停流程,然后bg在后​​台运行此流程?

要从终端分离您的流程,您可以输入disown。您现在可以关闭终端,甚至是会话。

这里的问题是输出无论如何都会出现在bash中。

您也可以在screen中启动您的计划。此命令提供了一种简单的方法来启动程序,关闭控制台并在以后检索它。

答案 1 :(得分:2)

我怀疑你正在寻找nohup

nohup LongRunningNoisyProgram &

将运行该程序,将输出记录到文件中,因此您没有看到它,将程序推入后台,如果稍后在终端运行时退出终端,则不会取消该程序。

答案 2 :(得分:0)

其他回复者至少有一件事没有涉及:如何管理隐藏进程

假设您使用“nohup find /&”创建了100个后台进程。您想要退出它们以真正了解后台进程的工作方式。请使用命令:

ps -ej | awk '! /grep/ && /find/ {print $2}' | xargs kill -9

然后,您可能想知道如何控制键来隐藏进程。您可以将其更改为p,其中susp代表CTRL + z(^ Z):

  

stty susp p

你可以在这里看到钥匙:

  

stty -a

请比较更改前后的标准。该命令特别有用,因为它有助于记住其他命令,例如^ W(删除单词)。

杰罗姆对屏幕提出了很好的建议。我强烈建议继续这个方向:

  

http://www.commandlinefu.com/commands/matching/screen/c2NyZWVu/sort-by-votes