一文解析 Linux 系统启动和进程管理
开始使用 Linux 操作系统时,有必要检查一下当前的操作系统环境,以了解当前系统中运行了什么服务/进程?而哪些是必要的?哪些又是需要被禁用的?!!这就涉及到 Linux 系统中的服务/进程管理了,这对于之后熟练掌握 Linux 系统环境配置至关重要。
更多相关系列博文请参考:
Linux 中的程序 & 进程 & 服务
这一小节来轻松搞懂 Linux 中程序、进程、服务的区别:
程序(Program)
这里的程序,主要是指应用程序(各种软件),事实上它就是存储于硬盘上的编写好的一段可执行代码。
进程(Process)
操作系统中,最核心的概念就是进程。
简单来说,程序是静态的,进程是动态的,Linux 进程就是操作系统处于运行中程序的实例。每个进程都有自己的内存空间和执行环境,它们彼此隔离,以确保安全性和稳定性。
Linux 中的每个用户均可同时运行多个程序,为了区分每一个运行的程序,Linux 为每个进程都分配了进程号(Process ID),操作系统中进程号(PID)是唯一的。
同时,Linux 会给每个进程都打上了运行者的标志(哪个用户启动的进程),用户可以随时控制自己进程的关闭或启动。进程也会从执行它的用户处继承 UID && GID,从而决定对文件系统的存取和访问。
进程启动之后,会在 /proc 目录下创建一个以 PID 为名称的目录,其中包含了进程相关的资源信息:
1 | 例如查看进程文件描述符信息: |
进程类型
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 | ps >>>> 查看进程状态信息 |
关于上述进程管理命令的详细使用说明,请参见【Linux Instruction Usage Guide】博文中关于【System Resource Monitoring】&&【Process Management】的描述,这里由于篇幅原因不再进行赘述。
服务(Service)
系统启动后的第一个进程是init,它的PID是1。init是唯一一个由系统内核直接运行的进程。除了init之外,每个进程都有父进程(PPID标识)
守护进程
install_url
to use ShareThis. Please set it in _config.yml
.