0714_Linux基础(08)

205 阅读3分钟

进程

进程是指已启动的可执行程序的运行中实例,进程的环境主要包括:本地和全局变量、当前调度上下文、分配的系统资源,如文件描述符和网络端口等。

进程的组成部分:分配的地址空间、安全属性(如所有权凭据和特权)、程序代码的一个或多个线程,进程状态

进程是可以创建子进程的,采用 fork 的方式,每一个新进程都有唯一的 PID

所有进程都是第一个系统进程的后代,在红帽 Linux 8 系统上,第一个系统进程是 systemd

1.png

通过 fork 例程,子进程继承安全性身份,过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码,随后子进程可能 执行自己的程序代码。

通常,父进程在子进程运行期间处于睡眠状态,当子进程退出时,父进程会收到信号,而被唤醒,开始清理子进程资源,然后再执行自己的代码。

Linux进程状态

2.png

名称 标志 内核定义的状态和描述
运行 TASK_RUNNING: 进程正在 CPU 上执行或正在等待运行。
睡眠 S TASK_INTERRUPTIBLE: 进程正在等待某一条件,若事件或信号满足条件,该进程返回到运行中
D TASK_UNINTERRUPTIBLE: 此进程也在睡眠,但与 S 状态不太,不会响应信号,仅在进程中断可能会导致意外设备的情况下使用
K TASK_KILLABLEL: 与不可中断的 D 状态相同,但有所修改,允许等待中的任务响应要被中断的信号。实用程序中通常将可中断的进程显示为 D 状态
I TASK_REPORT_IDLE: D 状态的子集,计算负载均衡时,不会统计这些信息
已停止 T TASK_STOPPED: 进程已被停止(暂停), 通常是通过用户或其他进程发出的信号。进程可以通过另一信号返回到运行中状态,继续执行(恢复)
T TASK_TRACED: 正在被调试的进程也会临时停止,并且共享同一个 T 状态标志
僵停 Z EXIT_ZOMBLE: 子进程在退出时向父进程发出信号,除进程身份(PID) 之外的所有资源均已释放
X EXIT_DEAD: 当父进程清理(获取) 剩余的子进程结构时,子进程现在已经彻底释放 此状态不会再进程列出实用程序中看到

查看进程信息

通过 top 命令可以查看每个进程的状态(动态展示)。想退出需要按 q 键。

通过 ps 命令可以查看每个进程的状态,一般搭配 aux-aux 使用 (当前静态)。

3.png

控制作业

作业控制是 shell 的一种功能,允许单个 shell 实例运行和管理多个命令。

作业可以认为是一组命令的集合,当然一条命令,也可以理解成一个作业。

如果需要作业在后台运行,那么只需要在命令行的结尾处加上 符号 & 即可。

如果需要后台进程,变成前台进程,我们一般会先使用 jobs 进行查询,在使用 fg %job-number 进行切换。

当前台进程卡住或者一直在执行(总之就是无法输入了),可以 Ctrl + Z 进行暂停,再使用 bg 命令使其再后台进行。或者选择 Ctrl + C 终止当前进程。

4.png