为了关闭终端而不终止脚本/命令,我们&
在调用命令时最后使用运算符。喜欢:
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
建议使用命令。
最后我用screen
了nohup
我的最终命令变为:
gnome-terminal -e 'screen nohup gedit'
gnome-terminal -x bash -c 'screen nohup gedit'
通过使用上述任一命令我得到:命令在新的终端窗口中启动,启动命令后,新打开的终端关闭,而不会终止正在运行的命令。