在另一个终端中执行命令并关闭它而不杀死命令

在另一个终端中执行命令并关闭它而不杀死命令

为了关闭终端而不终止脚本/命令,我们&在调用命令时最后使用运算符。喜欢:

gedit &

这里我使用gedit作为示例命令

我想在另一个终端(从当前终端)上做同样的事情。我正在使用以下命令在另一个终端上运行脚本/命令:

  • gnome-terminal -e 'gedit'
  • gnome-terminal -x bash -c 'gedit'

但如果我关闭这里新开放的航站楼,然后运行的脚本/程序[command]也被杀死。所以我尝试使用&如下:

  • gnome-terminal -e 'gedit' &
  • gnome-terminal -x bash -c 'gedit' &

但以上都不起作用。

那么,我怎样才能实现这一点:从当前开始gnome-terminal,在另一个终端中执行命令gnome-terminal,并在启动命令后关闭该(新打开的)终端而不杀死正在运行的终端command

答案1

您可以使用nohup命令 - 它会断开进程与终端的连接,因此即使您关闭 gnome-terminal 窗口,它也会继续运行。

例子:gnome-terminal -e "nohup bash gedit"

答案2

您可以使用屏幕实用程序。 Screen 是一个全屏窗口管理器,它在多个进程(通常是交互式 shell - 有关更多详细信息,请执行man screen.

一旦您在 shell 中执行 screen 命令,就会创建一个包含 shell 的新窗口。您可以执行您想要的任何命令/脚本/守护程序。您可以使用快捷键 Ctrl+A+D 轻松地从窗口中分离。

要列出您已启动的所有会话,您可以使用screen -list。您可以使用附加到最后分离的会话screen -r,或者如果您想附加到特定会话,请使用screen -r <host.tty>

例子:

[root@dns-ldap ~]# screen -list
There are screens on:
        5708.pts-0.dns-ldap     (Detached)
        5648.pts-0.dns-ldap     (Detached)
        5725.pts-0.dns-ldap     (Detached)
3 Sockets in /var/run/screen/S-root.

[root@dns-ldap ~]# screen -r 5708.pts-0.dns-ldap #this will attach you to terminal 5708.pts-0.dns-lda. I have detached from the terminal usinc Ctrl+A+D
[detached]
[root@dns-ldap ~]# screen -r 5648.pts-0.dns-ldap
[detached]
[root@dns-ldap ~]#

答案3

组合nohup&screen,最后我实现了我想要的。

经过基里尔-agnome-terminal -e "nohup bash gedit",建议使用命令: 。

但是,通过使用上面的命令,我可以运行命令并可以关闭新打开的gnome-terminal而无需终止正在运行的命令,我必须手动关闭新打开的gnome-terminal窗口。我希望它在启动命令后自动关闭。

经过迪米塔·季米特洛夫 screen建议使用命令。

最后我用screennohup我的最终命令变为:

  • gnome-terminal -e 'screen nohup gedit'

  • gnome-terminal -x bash -c 'screen nohup gedit'

通过使用上述任一命令我得到:命令在新的终端窗口中启动,启动命令后,新打开的终端关闭,而不会终止正在运行的命令。

相关内容