孤儿进程、僵尸进程与 Docker
前言(Intro)
我们知道当子进程还在运行时,其直接父进程被 kill 掉以后,这个子进程会变成孤儿进程(orphaned process),然后它会被 init 进程接管。
在 docker 容器中运行的进程,一般是没有 init 进程的。你可以进入容器使用 ps
查看,会发现 pid 为 1 的进程并不是 init,而是容器的主进程。
那么问题来了,如果容器中产生了孤儿进程,谁来接管这个进程?
我们知道当子进程还在运行时,其直接父进程被 kill 掉以后,这个子进程会变成孤儿进程(orphaned process),然后它会被 init 进程接管。
在 docker 容器中运行的进程,一般是没有 init 进程的。你可以进入容器使用 ps
查看,会发现 pid 为 1 的进程并不是 init,而是容器的主进程。
那么问题来了,如果容器中产生了孤儿进程,谁来接管这个进程?
在这里分享一下关于我处理问题时的一点经验,希望能对那些面对 BUG 或者其他问题而常常手足无措的人有所帮助。
这些经验谈不仅限于解决技术问题,其他生活或者工作中的问题也可以遵循这一套思路。
总结在前头,主要是五个步骤和四点要素。
时间荏苒,如白驹过隙。
本文主要介绍 Apache License 2.0 的使用,不涉及其他许可证,也不解释其具体内容。
http://choosealicense.com/ 告诉了你如何选择开源许可证,然而并没有解释如何在自己的项目中正确地使用它。
无论是 stackoverflow、quora、知乎、google,都鲜有提到这个许可证的实际使用细节。我最终在 PETER J. FARRELL 的《How to Apply the Apache 2.0 License to Your Project》看到了我所需的信息,这篇文章介绍了使用 Apache License 2.0 时的具体步骤和注意点。非常有用。
以下内容是这篇文章的中文翻译:
我觉得它应该至少包含以下几点:
本文节选翻译自《Introducing the Famous Framework》的“Meet BEST”部分
本文翻译自 DigitalOcean 的《Apache vs Nginx: Practical Considerations》。
这是一份随时更新的列表,列出了一些常用的命令组合,供自己日常使用查阅,欢迎交流。
本文内容整合在我的命令速查表 中,可以使用 chrisallenlane/cheat 来快速查询命令。