最近在读了 Jesse Storimer 的 Working With Unix Processes,感觉非常有趣。
“《理解 Unix 进程》让我意识到 Unix 编程是多么简单而强大,而我对 Unix 编程的了解又是何其之少!在下一个版本的 Thin 的设计中,这本书无疑会对我有很大的启发。” ——Marc-André Cournoyer,创建了 Thin Web 服务器
“《理解 Unix 进程》这本书填补了当今许多开发人员的空白。掌握 Unix 的基本原理无需编写 C 代码。本书就说明了这一点。”
——David Bryant Copeland,著有 Build Awesome Command-Line Applications in Ruby
《理解 Unix 进程》教你如何游刃有余地利用系统编程技术。如果你是 Web 开发人员,你或许对 Unix 系统的基本原理知之甚少。本书可填补这一知识空白。本书将使读者利用数十年来久经考验的最优化技术,同时还将学到一些功能强大的小技巧,并学会自主编写并调试的高效服务器。 本书适合 Unix 程序员、Web 开发人员阅读。 本书所述概念和技术都十分实用,读者可据此编写出新软件,理解现有的复杂软件,甚至提升自我的职业生涯高度。本书的重点内容如下:
- 文件描述符及其运作机制
- 何时才需要守护进程
- 如何用 fork(2) 创建新进程
- 退出进程的 4 种不同的方式
- 对于生成 shell 命令的实际考量以及如何避免这种情况
- 从高级层面上讨论了创建进程所带来的开销及陷阱
- Resque 和 Unicorn 的内部工作原理 作者:Jesse Storimer,高级软件工程师与自出版作家,服务于美国电子商务方案提供商 Shopify。痴迷于编程,编程之余喜欢阅读、园艺以及徒步旅行等户外运动。
译者:门佳,UNIX/Linux shell、Perl、正则表达式爱好者。在 2001 年接触 Linux 后很快喜欢上该系统。对 UNIX/Linux 系统管理、Linux 内核、Web 技术研究颇多。工作之余,还喜欢探讨心理学,热衷出没于豆瓣和知乎。除此书外,他还译有《Linux Shell 脚本攻略》。
主要是讲用 Ruby 做 Unix 系统编程的,如果已经有 Unix 系统编程经验了的话可能觉得非常基础,但对于我这样非科班并且主要从事 web 开发的还是收获不少。
作为 Ruby 开发者,对理解多进程 server/worker/monitor 的运作原理以及优缺点有很大帮助。
比如,作者介绍 Resque 使用 fork + exit 来扬长避短,每个 job 过来之后 Resque fork 出一个新的进程来处理 job,处理结束后这个进程就退出,这样做来回避 Ruby GC 低效问题,用系统自身来清理内存,保持 Resque 的内存在一定范围内。
还有 Unicorn 的 preforking 机制如何比 mongrel 在启动速度快和占用内存少的。以及面临什么问题。当然还有优雅重启和日志切换这些有趣的话题。
顺便八卦一下,unicorn 的 gemspec 里 project 名还是 mongrel,邮件列表也是 mongrel-unicron: https://github.com/defunkt/unicorn/blob/master/unicorn.gemspec#L22-L29