我对守护进程和孤立进程感到困惑。从我所学到的:
守护进程:“这些是在后台运行的特殊进程。它们是与系统相关的进程,没有关联的终端。这些进程以root权限运行,通常为进程提供服务。通常父进程将终止,因此子进程将成为守护进程进程,因为它不会有任何终端。对于守护进程,init进程将成为父进程“
孤儿进程:“当父进程在子进程终止之前被杀死时,该进程将成为孤儿进程。在这种情况下,子进程将成为孤儿,然后被 init 进程接管。”
孤儿进程是守护进程吗,反之亦然?如果不是,它们之间的基本区别是什么?
我对守护进程和孤立进程感到困惑。从我所学到的:
守护进程:“这些是在后台运行的特殊进程。它们是与系统相关的进程,没有关联的终端。这些进程以root权限运行,通常为进程提供服务。通常父进程将终止,因此子进程将成为守护进程进程,因为它不会有任何终端。对于守护进程,init进程将成为父进程“
孤儿进程:“当父进程在子进程终止之前被杀死时,该进程将成为孤儿进程。在这种情况下,子进程将成为孤儿,然后被 init 进程接管。”
孤儿进程是守护进程吗,反之亦然?如果不是,它们之间的基本区别是什么?
一个并不严格暗示另一个:只要将守护进程视为有意孤立的进程。它们旨在在没有父母的情况下工作,但这并不适用于每个孤立的进程!
有时需要有意孤立一个进程,通常是为了让长时间运行的作业在没有用户进一步关注的情况下完成,或者启动一个无限期运行的服务或代理;这样的进程(没有关联的会话)被称为守护进程,特别是如果它们无限期运行
只需将守护进程视为从事肮脏工作的“奴隶”:您故意将它们放在视线之外,但并非所有超出视线的东西都是有意或特别想要的;)
我认为在这种情况下,维基百科足以满足您的困境:https ://en.wikipedia.org/wiki/Orphan_process
我同意碎片整理的回答。我只想提一下,守护进程不一定以 root 身份运行。事实上,出于安全原因,最好不要以 root 身份运行某些守护进程,例如 Web 服务器进程或数据库侦听器进程。如果守护程序存在安全问题,这会限制您的暴露。
此外,用户自己可以编写作为守护进程运行的程序。