首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >退出终端机与关闭终端机

退出终端机与关闭终端机
EN

Ask Ubuntu用户
提问于 2021-10-13 04:37:06
回答 3查看 1.7K关注 0票数 3

上下文:-

我在bash中运行一个进程,附加了&,即以后台模式运行。该进程有一个while(1),即它将永远运行。我的巴什是父母,我的过程变成了孩子。我想了解当父级终止时,内核是如何处理子元素的。

Observations:-

  1. 如果我退出终端(使用终端上的exit命令),/lib/systemd/systemd --user将成为子进程的父进程
  2. 如果我从另一个终端终止终端进程(使用kill),结果与上面相同
  3. 如果我使用交叉图标关闭终端,子进程也会终止。

问题:-

闭幕式与杀戮/退出有何不同?

EN

回答 3

Ask Ubuntu用户

发布于 2021-10-13 05:41:57

在linux中有不同类型的信号.。当您使用exit终端时,发送的信号与通过单击x关闭终端时发送的信号不同。试着通过终止信号来了解关闭和退出终端是如何不同的。

票数 1
EN

Ask Ubuntu用户

发布于 2021-10-13 05:50:51

像这个./myprocess &一样启动的进程是终端程序打开的父bash进程的子进程。&标志不会帮助您在漫长的过程结束前关闭终端窗口。

您要寻找的是命令nohup

代码语言:javascript
复制
user@host:~$ nohup bash -c '/path/to/myprocess'

更多信息:http://manpages.ubuntu.com/manpages/impish/en/man1/nohup.1.html

一些例子:https://linuxhint.com/nohup_命令_linux/

票数 0
EN

Ask Ubuntu用户

发布于 2021-10-15 08:46:35

我在ping窗口中使用了gnome-terminal,我可以确认您的观察结果。我认为这是有问题的,一个进程可以在没有任何地方进行通信的情况下运行。我将尝试解释我注意到的内容(但我并不认为我理解为什么,也许是允许在从nohup退出后,在终端窗口启动后,使用自己的图形用户界面的程序不使用bash )。

  • 当我exit时,我退出了运行在终端窗口中的bashping继续运行,但是没有地方可以写。
  • 当我kill进程时,我会在终端窗口中杀死bash进程。我没有找到要杀死的显式gnome-terminal进程,因为进程/usr/lib/gnome-terminal/gnome-terminal-server运行所有这些进程。我不确定这是不是你在做的,但我猜是这样的。
  • 当我关闭窗口(用x按钮)时,我退出窗口进程(这反过来迫使它的子进程停止,包括bashping)。这与前两种情况有明显的不同。

当我使用xterm进行相应的练习时,将有一个名称为“xterm”的单独进程。

  • 当我exit时,我退出了运行在终端窗口中的bashping继续运行,但是没有地方可以写。
  • 当我kill该进程时,我将终止终端窗口的xterm进程(这反过来迫使它的子进程停止,包括bashping)。
  • 当我关闭窗口(使用x按钮)时,我退出窗口进程(这反过来迫使它的子进程停止,包括bashping)。

您已经知道,如果您希望在关闭启动子进程的终端窗口后继续子进程,则可以使用nohup (与&一起)。

编辑1:最后评论:

来自man bash

如果一个命令被控制操作符终止&,shell将在子shell的后台执行该命令。shell不等待命令完成,返回状态为0。

我们已经注意到,没有停止子there的信号,当bash退出时,进程在/从该子there中启动,至少在终端窗口中运行时是如此。但是呼叫终端窗口关闭了。我认为,在bash退出之后,终端窗口不再知道子subshell和进程是在/从该子subshell中启动的,因此它无法阻止它们。

编辑2:我在Unix & Linux -请阅读答案寻求帮助。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1368957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档