geekdoc-linux-zh/docs/udstd-linux-proc
wizardforcel 5c0f9695dd 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
..
img 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
README.md 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
SUMMARY.md 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
udstd-linux-proc_1.md 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
udstd-linux-proc_2.md 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
udstd-linux-proc_3.md 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
udstd-linux-proc_4.md 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
udstd-linux-proc_5.md 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00
udstd-linux-proc_6.md 2025-10-02 17:17:14 2025-10-02 17:17:14 +08:00

README.md

理解 Linux 进程

关于这本书

本书受理解 Unix 进程启发而作,用极简的篇幅深入学习进程知识。

理解 Linux 进程用 Go 重写了所有示例程序,通过循序渐进的方法介绍 Linux 进程的工作原理和一切你所需要知道的概念。

本书适合所有 Linux 程序员阅读。在线阅读PDF 下载

三位好朋友

阅读前介绍三位即将与大家打交道的小伙伴Linux、Go 和 Docker。

Linux 是我们主要的研究对象,书中所有概念与程序都基于 Linux这同样适用于所有 Unix-like 系统。

Go 是本书所有示例程序的实现语言,当然进程的概念与原理是相通的,你也可以使用其他编程语言实现。

Docker 为我们创造可重复的实验环境,使用 Docker 容器你可以轻易地模拟与本书一模一样的运行环境。

致谢

Thanks Wawa LeungOtherwise the book would be released two years ago

概述

本书概述

进程的概念大家都很熟悉,但你是否能准确说出僵尸进程的含义呢?还有 COW(Copy On Write)、Flock(File Lock)、Epoll 和 Namespace 的概念又是否了解过呢?

本书汇集了进程方方面面的基础知识,加上编程实例,保证阅读后能自如地回答以上问题,在项目开发中对进程的优化也有更深的理解。

本书架构

本书按循序渐进的方式介绍进程的基础概念和拓展知识,主要涵盖以下几个方面。

  • 进程的基础知识介绍
  • 进程相关的编程实例
  • 进程的进阶知识详解
  • 项目 Run 的进程管理
  • 使用进程的注意事项

其中项目Run是 Go 实现的脚本管理工具,通过研究 Run 的源码能够加深对进程管理的理解。

关于勘误

本书所有内容都托管到GitHub,如果纰漏或错误请提Issue

使用代码

示例程序

本书所有示例程序都基于 Go 编写,代码托管到GitHub

每章的示例都是可直接运行的 Go 源文件,例如第一章的 Hellow World 程序可以通过go run hello_world.go来运行并查看运行结果。

# go run hello_world.go
Hello World 

接下来介绍使用 Docker 来运行本书的示例程序。

使用 Docker

Docker 简介

Docker是一个容器运行平台,你可以将程序及其依赖打包成容器,在不同机器上运行可得到一致的运行效果。因为不同的系统环境或 Go 版本可能影响程序的运行结果,为了得到可预测、可重复的实验环境,我们引入了 Docker 容器技术。

Docker 使用

我们不仅开源了示例代码,还创建了官方Docker 镜像

只要执行命令docker run -i -t tobegit3hub/understand_linux_process_examp,就可以马上创建本书的实验环境。进入容器后可以轻易地运行示例程序。

root@6a8e36a53495:/go/src# go run hello_world.go
Hello World 

当然你也可以在本地运行自己的 Go 示例,或者使用官方 Go 镜像docker run -i -t golang:1.4 /bin/bash