我在 SSH shell 上有一个正在运行的程序。我想暂停它并在我回来时能够取消暂停它的执行。
我想到的一种方法是将其所有权转移到屏幕外壳,从而使其在那里运行。
是否有不同的方式进行?
在bash我有一些工作在后台运行。他们总是产生随机的不相关的错误消息,污染终端。我并不总是那么迅速地用2>&1 > /dev/null重定向来启动它们。当它们已经运行时如何重定向输出?
假设这种情况
wget http://file
Run Code Online (Sandbox Code Playgroud)
wget 开始下载文件。
我把它放在了后台。
^Z
bg
Run Code Online (Sandbox Code Playgroud)
该命令进入后台。
但它的输出仍然在控制台上——如果控制台仍然打开。
是否可以停止命令的输出?
wget 只是一个例子;考虑一个写入大量输出的命令。
在控制台上,我知道可以执行bg然后关闭终端并打开另一个终端,但是如果我只有一个终端可用并且没有伪终端怎么办?
当我从与窗口系统相关的终端(例如 gnome 或 kde)启动应用程序时,这些应用程序通常会在我的终端中发送各种垃圾消息。如何让这些应用程序关闭?
例如,如果我输入:
okular somepdf.pdf &
Run Code Online (Sandbox Code Playgroud)
弹出一个显示 pdf 文件的窗口,我可以在终端旁边阅读 pdf,完成后我关闭。
下面是一个典型的例子:
:~$ cd Documents
:~/Documents$ okular equi.dvi &
[1] 5823
Run Code Online (Sandbox Code Playgroud)
当我关闭时,它会将这些垃圾发送到终端:
:~/Documents$ okular(5823)/kdeui (kdelibs) KXMLGUIClient::~KXMLGUIClient: 0x2322528 deleted without having been removed from the factory first. This will leak standalone popupmenus and could lead to crashes.
d
d: command not found
[1]+ Done okular equi.dvi
[1]+ Done okular equi.dvi
:~/Documents$
Run Code Online (Sandbox Code Playgroud)
我唯一想看到的是:
:~$ cd Documents
:~/Documents$ okular equi.dvi &
:~/Documents$
Run Code Online (Sandbox Code Playgroud)
也许那条消息是一些错误,我不在乎,也不想知道。
是否可以抑制这些消息?
有些人将此问题标记为“如何抑制输出”问题的重复,但这只是我想要的部分内容:
我想自动抑制某些应用程序的所有输出。例如 okular 是一个图形应用程序,所以我永远不会关心它在我的终端中说什么。
所以就像我上面说的,我希望行为是:
:~$ …Run Code Online (Sandbox Code Playgroud)