我在bash中运行一个进程,附加了&,即以后台模式运行。该进程有一个while(1),即它将永远运行。我的巴什是父母,我的过程变成了孩子。我想了解当父级终止时,内核是如何处理子元素的。
exit命令),/lib/systemd/systemd --user将成为子进程的父进程kill),结果与上面相同闭幕式与杀戮/退出有何不同?
发布于 2021-10-13 05:41:57
在linux中有不同类型的信号.。当您使用exit终端时,发送的信号与通过单击x关闭终端时发送的信号不同。试着通过终止信号来了解关闭和退出终端是如何不同的。
发布于 2021-10-13 05:50:51
像这个./myprocess &一样启动的进程是终端程序打开的父bash进程的子进程。&标志不会帮助您在漫长的过程结束前关闭终端窗口。
您要寻找的是命令nohup
user@host:~$ nohup bash -c '/path/to/myprocess'更多信息:http://manpages.ubuntu.com/manpages/impish/en/man1/nohup.1.html
发布于 2021-10-15 08:46:35
我在ping窗口中使用了gnome-terminal,我可以确认您的观察结果。我认为这是有问题的,一个进程可以在没有任何地方进行通信的情况下运行。我将尝试解释我注意到的内容(但我并不认为我理解为什么,也许是允许在从nohup退出后,在终端窗口启动后,使用自己的图形用户界面的程序不使用bash )。
exit时,我退出了运行在终端窗口中的bash,ping继续运行,但是没有地方可以写。kill进程时,我会在终端窗口中杀死bash进程。我没有找到要杀死的显式gnome-terminal进程,因为进程/usr/lib/gnome-terminal/gnome-terminal-server运行所有这些进程。我不确定这是不是你在做的,但我猜是这样的。bash和ping)。这与前两种情况有明显的不同。当我使用xterm进行相应的练习时,将有一个名称为“xterm”的单独进程。
exit时,我退出了运行在终端窗口中的bash,ping继续运行,但是没有地方可以写。kill该进程时,我将终止终端窗口的xterm进程(这反过来迫使它的子进程停止,包括bash和ping)。bash和ping)。您已经知道,如果您希望在关闭启动子进程的终端窗口后继续子进程,则可以使用nohup (与&一起)。
编辑1:最后评论:
来自man bash
如果一个命令被控制操作符终止&,shell将在子shell的后台执行该命令。shell不等待命令完成,返回状态为0。
我们已经注意到,没有停止子there的信号,当bash退出时,进程在/从该子there中启动,至少在终端窗口中运行时是如此。但是呼叫终端窗口关闭了。我认为,在bash退出之后,终端窗口不再知道子subshell和进程是在/从该子subshell中启动的,因此它无法阻止它们。
编辑2:我在Unix & Linux -请阅读答案寻求帮助。
https://askubuntu.com/questions/1368957
复制相似问题