目录
[1.如何理解 systemd 进程?](#1.如何理解 systemd 进程?)
[2.ps 和 top 有什么区别?](#2.ps 和 top 有什么区别?)
[3.解释 ps aux 和 ps -ef 这两个命令和参数的作用。](#3.解释 ps aux 和 ps -ef 这两个命令和参数的作用。)
[5.怎么理解作业 (Job) 和作业控制?](#5.怎么理解作业 (Job) 和作业控制?)
[6.说明 kill 命令中使用 9 和 15 信号量的区别。](#6.说明 kill 命令中使用 9 和 15 信号量的区别。)
1. 如何理解 systemd 进程?
Systemd 是 Linux 内核启动后的第一个进程(PID 1),它的核心职责是初始化系统并管理和监控所有后续进程与服务。它的功能已包括管理服务的 systemctl、收集日志的 journald 等,提供了对系统资源统一、高效的控制能力。
2.ps 和 top 有什么区别?
ps 命令提供的是静态快照。它在你执行命令的那一刻抓取进程状态,并输出结果。它的特点是输出格式灵活,可以通过丰富的命令行参数(如 aux 或 -ef)进行定制化筛选和查看,常用于脚本或获取某一时刻精确的进程列表。
top 命令则提供动态实时监控。启动后,它会持续刷新进程信息(默认每几秒一次),展示 CPU、内存等系统资源的实时使用情况和进程状态的动态变化。它的特点是具有交互式界面,允许用户在运行中通过快捷键(如按 P 或 M)进行排序或管理进程。
3.解释 ps aux 和 ps -ef 这两个命令和参数的作用。
ps aux 采用 BSD 风格语法,其中 a 显示所有用户进程,u 提供详细用户和资源信息(如 CPU、内存占用),x 包括未关联终端的进程(如后台服务)。它通适合查看进程对系统资源的消耗情况。
ps -ef 采用 UNIX 标准语法,其中 -e 显示所有进程,-f 提供完整格式信息,包括父进程 ID(PPID)、启动时间等。它的输出侧重进程层次和关系,便于追踪进程的来源和依赖。
在多数 Linux 系统中,两种组合均可使用且功能相似,主要区别在于输出信息的侧重点:aux 更适合资源监控,-ef 更适合进程关系分析。
4.进程状态有哪些?
在 Linux 系统中,进程状态主要包含以下几种:运行态(R)表示进程正在执行或已就绪等待调度、可中断睡眠态(S)指进程正在等待某个事件或资源,但可被信号唤醒、不可中断睡眠态(D)则指进程通常正在等待硬件 I/O 操作,期间不会响应任何信号、停止态(T)表示进程被暂停执行,通常由作业控制信号导致、僵尸态(Z)是进程已结束但尚未被父进程回收资源。此外,还有死亡态(X)和跟踪态(t)等较少见的状态。这些状态反映了进程在其生命周期中的不同活动阶段。
5.怎么理解作业 (Job) 和作业控制?
简单来说,作业就是我们通过终端运行的一个或多个前后关联的命令。比如输入一个命令,或者用竖线 | 把几个命令连起来执行,这就形成了一个作业。
作业控制就是 Shell 让我们能灵活管理这些任务的能力。比如可以让任务在后台跑,不耽误我们继续输入新命令;或者把正在运行的任务暂停,等会儿再恢复;也可以随时把后台任务调到前台来操作。
具体怎么操作呢?比如想让一个命令在后台运行,就在后面加个 &;如果任务正在前台运行,按 Ctrl+Z 就能暂停它,并放到后台;用 jobs 命令可以看当前所有任务的状态;fg 能把后台任务调到前台继续执行;bg 能让暂停的任务在后台恢复运行;还可以用 kill 来终止任务。
6.说明 kill 命令中使用 9 和 15 信号量的区别。
在 Linux 的 `kill` 命令中,信号 9(SIGKILL)和信号 15(SIGTERM)是两种常用的终止进程信号,它们的核心区别在于是否允许进程进行优雅退出。SIGTERM(15)是默认信号,它允许进程进行清理工作,例如保存状态、关闭文件或释放资源,进程可以捕获此信号并执行自定义处理流程,因此是一种相对友好的终止方式。而 SIGKILL(9)则是一种强制终止信号,进程无法捕获或忽略,它会立即由操作系统直接终止进程,不给进程任何清理的机会,这可能导致资源未正确释放或数据丢失,因此通常作为最后的手段使用。在实际操作中,一般会先尝试使用 SIGTERM 信号,若进程无响应或无法正常终止,再使用 SIGKILL 信号确保进程结束。
7.进程和作业有啥区别
操作系统管理和分配资源的基本单元,他是一个程序运行的实例。它是用户在命令行启动的一个"任务"可能由多个进程组成,就好像完成一个任务,必须要由多条程序完成。