一文解析 Linux 系统启动和进程管理

开始使用 Linux 操作系统时,有必要检查一下当前的操作系统环境,以了解当前系统中运行了什么服务/进程?而哪些是必要的?哪些又是需要被禁用的?!!这就涉及到 Linux 系统中的服务/进程管理了,这对于之后熟练掌握 Linux 系统环境配置至关重要。

更多相关系列博文请参考:

一文解析 Linux 操作系统引导启动全流程

一文解析 Linux 系统启动和进程管理


Linux 中的程序 & 进程 & 服务

这一小节来轻松搞懂 Linux 中程序、进程、服务的区别:

程序(Program)

这里的程序,主要是指应用程序(各种软件),事实上它就是存储于硬盘上的编写好的一段可执行代码。


进程(Process)

操作系统中,最核心的概念就是进程。

简单来说,程序是静态的,进程是动态的,Linux 进程就是操作系统处于运行中程序的实例。每个进程都有自己的内存空间和执行环境,它们彼此隔离,以确保安全性和稳定性。

Linux 中的每个用户均可同时运行多个程序,为了区分每一个运行的程序,Linux 为每个进程都分配了进程号(Process ID),操作系统中进程号(PID)是唯一的。

同时,Linux 会给每个进程都打上了运行者的标志(哪个用户启动的进程),用户可以随时控制自己进程的关闭或启动。进程也会从执行它的用户处继承 UID && GID,从而决定对文件系统的存取和访问。

进程启动之后,会在 /proc 目录下创建一个以 PID 为名称的目录,其中包含了进程相关的资源信息:

1
2
# 例如查看进程文件描述符信息:
$ ls -l /proc/xxxx/fd

进程类型

Linux 中的进程可以分为三类:

  • 交互进程:由 Shell 启动的进程,既可以在前台运行,也可以在后台运行;
  • 批处理进程:不与终端相关联,提交到等待队列中顺序执行的进程;
  • 守护进程(Daemon):在后台运行的特殊进程 >>> 很多守护进程在系统启动时初始化,并且一直运行直到系统关闭;有些只在需要的时候才启动,完成任务后就自动结束。

| ================================================== Split Line =============================================== |

👇👇👇 关于进程的 前台 和 后台 运行 👇👇👇

↓↓↓↓↓↓ 前台进程 ↓↓↓↓↓↓

是指 >>> 一个程序控制着标准输入/输出,当程序运行时,Shell 会被暂时挂起,等待程序运行结束后才退回 Shell。

其特点是 >>>> 继承当前 Session 的标准输入、输出和标准错误,独占 Shell。>程序运行运行期间(Shell 挂起),用户不能再执行其它程序。

↓↓↓↓↓↓ 后台进程 ↓↓↓↓↓↓

运行后台进程的方法:是在执行程序的命令行的最后加上 & 符号。

其特点 >>>>

  • 继承当前 Session 的标准输出(Stdout)和标准错误(Stderr):后台进程的所有输出依然会同步地在 Shell 下显示;
  • 不再继承当前 Session 的标准输入(stdin):无法向这个进程输入指令了;如果它试图读取标准输入,就会暂停执行(halt)

可以看到 >>> “后台进程” 与 “前台进程” 的本质区别只有一个:是否继承标准输入?!!用户 在执行后台进程的同时,就可以执行其它程序。

| ================================================== Split Line =============================================== |

👇👇👇 关于作业(Job)的概念 👇👇👇

一个作业或任务中至少包含一个进程,可以有多个进程。

Linux/Windows 不可能在一个 CPU 上同时处理多个任务/作业(Job)请求(至少包含一个进程),而是 采用 “分时” 技术 来处理这些任务请求(多个任务共享 CPU 时间)。


进程管理

Linux 中提供了用于很多可用于进行进程管理的命令:

1
2
3
4
5
6
7
ps                             >>>> 查看进程状态信息
top >>>> 查看实时刷新的系统进程信息

nohup >>>> 注销后继续运行进程
kill pid >>>> 杀死进程
jobs/bg/fg/&
...

关于上述进程管理命令的详细使用说明,请参见【Linux Instruction Usage Guide】博文中关于【System Resource Monitoring】&&【Process Management】的描述,这里由于篇幅原因不再进行赘述。


服务(Service)


系统启动后的第一个进程是init,它的PID是1。init是唯一一个由系统内核直接运行的进程。除了init之外,每个进程都有父进程(PPID标识)

守护进程

Author

Waldeinsamkeit

Posted on

2015-02-03

Updated on

2024-03-17

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.