目录
一、程序和进程
1.程序
2.进程
3.线程与进程
二、ps查看静态进程信息
1.ps aux 命令
2.ps-静态查看系统进程
3.ps -elf
三、top-查看进程动态信息
四、pgrep查看进程信息
五、pstree-查看进程树
六、控制进程
1.进程启动方式
2.调度启动
3.进程的前后台调度
4.终止进程
七、计划任务管理
1.at一次性任务设置
2.crontab周期性任务设置
一、程序和进程
1.程序
程序用于告诉计算机如何执行特定的任务或操作。可以保存在硬盘、光盘等介质中的可执行代码和数据文件中,也可以存在于计算机内存中。
这些文件包含了程序的静态保存的代码,即在程序被执行之前就已经存在的指令和数据。
2.进程
在CPU及内存中运行的程序代码
动态执行的代码
父、子进程
每个程序可以创建一个或多个进程
3.线程与进程
进程是程序的一次执行,是操作系统资源分配和管理的基本单位,包括代码、数据、堆栈、文件句柄等。
线程是进程中的一个执行流程,是CPU调度的基本单位,共享进程的资源,包括内存、文件和其他系统资源。
进程之间通常是相互独立的,每个进程有独立的内存空间,通过进程间通信来实现数据共享和通信。
线程之间共享相同的地址空间和其他进程资源,线程之间的数据共享和通信更为方便,因为它们不需要通过复杂的IPC机制。
二、ps查看静态进程信息
1.ps aux 命令
用于显示当前系统上运行的进程信息。
USER: 进程的用户。
PID: 进程的 PID(进程标识符)。
%CPU: 进程占用的 CPU 百分比,表示进程占用 CPU 资源的程度,占用越高,进程消耗的资源越多。
%MEM: 进程占用内存的百分比,表示进程在系统内存中的使用情况。
VSZ: 该进程使用的虚拟内存量(单位为 KB),即进程在虚拟内存空间中所占用的大小。
RSS: 该进程占用的实际物理内存量(单位为 KB),即进程在物理内存中所占用的大小。
TTY: 运行终端,如果进程是从终端启动的,则显示终端名;如果不是,则显示
STAT: 进程的状态,通常包括👇
D: 不可中断的休眠状态
R: 正在运行状态
S: 处于休眠状态,可被唤醒
T: 停止状态,可能是在后台暂停或进程处于跟踪调试状态
Z: 僵尸进程,进程已经中止,但是部分程序还在内存中
TART: 该进程被启动的时间。
TIME: 该进程实际使用 CPU 的时间。
COMMAND: 进程的名称与参数。
2.ps-静态查看系统进程
ps- 常用选项
a: 显示当前终端下的所有进程信息,包括其他用户的进程。
u: 使用以用户为主的格式输出进程信息,通常会显示更详细的用户相关信息。
x: 显示当前用户在所有终端下的进程信息,即显示不受终端限制的所有进程。
e: 显示系统内的所有进程信息,包括所有用户的进程。
l: 使用长格式显示进程信息,通常会显示更多的字段信息。
f: 使用完整的格式显示进程信息,通常会显示更多的父进程和子进程的关系。
a: 显示现行终端下的所有进程信息,与 -e 类似。
T: 查看线程信息,显示进程的线程信息。
--sort 属性: 对属性进行排序,属性前加 - 表示倒序排序,可以按照不同的属性进行排序,如 %CPU、%MEM 等。
3.ps -elf
显示系统中运行的进程的详细信息
F: 内核分配给进程的系统标记。
S: 进程的状态,通常包括:
ID: 启动这些进程的用户。
PID: 进程的 PID(进程标识符)。
PPID: 父进程的 PID,即启动当前进程的进程的 PID。
C: 进程生命周期中的 CPU 利用率。
PRI: 进程的优先级,数字越大优先级越低。
NI: 谦让度值,用于参与决定进程的优先级。
ADDR: 进程的内存地址。
SZ: 如果进程被换出,所需交换空间的大致大小。
WCHAN: 若该进程在睡眠,则显示睡眠中的系统函数名。
STIME: 进程启动时的系统时间。
TTY: 进程启动时的终端设备。
TIME: 运行进程需要的累计 CPU 时间。
CMD: 进程的启动命令,即进程的名称与参数。
三、top-查看进程动态信息
P 键: 根据 CPU 使用百分比大小进行排序
M 键: 根据驻留内存大小进行排序
N 键: 根据启动时间进行排序
c 键: 切换显示命令名称和完整命令行
h 键: 可以获得 top 程序的在线帮助信息。
k 键: 根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程。
q 键: 退出 top 程序。
数字1 键: 显示 CPU 的个数和状态,按下数字1键后,将显示 CPU 的数量和每个 CPU 的使用状态。
第一行:任务队列信息
top - 02:58:44 up 2:05, 3 users, load average: 0.00, 0.01, 0.05 👇
02:58:44: 当前时间。
up 2:05: 系统已经运行了 2 小时 5 分钟。
3 users: 当前有 3 个用户登录到系统。
load average: 0.00, 0.01, 0.05: 系统的平均负载情况,分别表示 1 分钟、5 分钟和 15 分钟的负载平均值。在这个示例中,系统的负载非常轻,几乎没有负载。
第二行为 进程信息
Tasks: 229 total, 1 running, 228 sleeping, 0 stopped, 0 zombie 👇
229 total: 总共有 229 个任务。
1 running: 当前有 1 个任务正在运行。
228 sleeping: 有 228 个任务处于睡眠状态,即等待事件发生或者等待被唤醒。
0 stopped: 没有任务被停止。
0 zombie: 没有僵尸进程,即已经终止但是父进程还没有对其进行善后处理的进程。
第三行为 CPU的信息
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.0 us: 用户空间占用 CPU 的百分比(用户空间占用 CPU 的百分比为 0.0%,即用户程序几乎没有占用 CPU)
0.0 sy: 内核空间占用 CPU 的百分比(内核空间占用 CPU 的百分比为 0.0%,即系统内核几乎没有占用 CPU)
0.0 ni: 调整过优先级的进占用 CPU 的百分比(调整过优先级的进程占用 CPU 的百分比为 0.0%)
100.0 id: 空闲 CPU 的百分比(CPU 空闲的时间比例为 100.0%,即 CPU 几乎完全空闲)
0.0 wa: 等待 I/O 的 CPU 时间百分比(CPU 等待 I/O 的时间比例为 0.0%,即没有 CPU 在等待 I/O 操作完成)
0.0 hi: 硬中断占用 CPU 的百分比 (硬中断占用 CPU 的时间比例为 0.0%)
0.0 si: 软中断占用 CPU 的百分比 (软中断占用 CPU 的时间比例为 0.0%)
0.0 st: 虚拟化的虚拟 CPU 的被盗用时间百分比 (虚拟 CPU 的被盗用时间比例为 0.0%。)
第四行:内存信息
KiB Mem : 3861252 total, 1836780 free, 902972 used, 1121500 buff/cache
3861252 total: 物理内存总量单位为 KiB。
1836780 free: 空闲内存大小单位为 KiB。
902972 used: 已使用的内存大小单位为 KiB。
1121500 buff/cache: 缓存和缓冲区使用的内存大小单位为 KiB。
第五行:行为交换空间的信息
KiB Swap: 4194300 total, 4194300 free, 0 used. 2670372 avail Mem
4194300 total: 交换空间总量,即系统总共可用的交换空间大小,单位为 KiB。
4194300 free: 空闲的交换空间大小,即当前未被使用的交换空间大小,单位为 KiB。
0 used: 已使用的交换空间大小,即当前被系统或应用程序使用的交换空间大小,单位为 KiB。
2670372 avail Mem: 可用内存大小,即系统中当前可用的内存大小,包括未被使用的内存和已被缓存的内存,单位为 KiB。
四、pgrep查看进程信息
pgrep
是一个用于查找进程的命令
1.基本语法👇
pgrep [选项] <进程名称>
2.常用选项👇
-l: 显示进程名称和 PID。
-t: 指定终端,用于查找在特定终端上运行的进程。
-f: 根据完整的命令行进行匹配,而不仅仅是进程名。
-u <user>: 仅列出指定用户的进程,用于查找特定用户运行的进程。
五、pstree-查看进程树
pstree是一个用于以树状结构显示进程的命令行工具。它可以帮助你更直观地了解系统中运行的进程之间的层次关系。
-a | 显示完整信息 |
-u | 列出对应用户名 |
-p | 列出对应pid号 |
六、控制进程
1.进程启动方式
前台运行: 在命令行直接输入命令并执行,进程会在前台运行,占用当前终端的控制权。
后台运行: 在命令末尾追加 & 符号,进程在后台运行,通过追加 & 后台运行的进程会随着终端的关闭而自动退出。为了避免进程随终端关闭而退出,可以在命令开头位置添加 nohup 命令,格式为 nohup command &。这样进程就会以后台模式运行,并且不会受到终端关闭的影响。
2.调度启动
at一次性任务设置
crontab周期性任务设置
3.进程的前后台调度
Ctrl+Z : 这将当前正在前台运行的进程挂起,即将其调入后台并停止执行。
jobs [-l]: 查看当前处于后台的任务列表。添加 -l
选项可以显示任务的 PID。
fg+序号: 将后台的任务恢复到前台运行。fg
命令后面跟着一个任务的序号,表示将该序号对应的后台任务恢复到前台运行。
4.终止进程
Ctrl+C组合键
中断正在执行的命令
kill用于终止指定PID号的进程
killall用于终止指定名称相关的所有进程
-9选项用于强制终止
kill是如何杀掉进程的? 向进程发送信号的方式杀掉进程
kill(15):默认选项。告诉进程自行停止运行并退出。进程可以捕捉该信号并执行清理工作,然后正常退出。
kill (9):发送 SIGKILL 信号会立即终止进程,且不能被捕捉或忽略。这是一种强制终止进程的方式,进程没有机会进行清理工作,可能会导致数据丢失。
kill(3):发送 SIGQUIT 信号会使进程自行退出,并在退出时打印进程各个线程的堆栈信息。
kill (1):发送 SIGHUP 信号会通知进程重新加载配置文件,但不会使进程退出。
七、计划任务管理
1.at一次性任务设置
- at HH:MM [yyyy-mm-dd]
- 输入命令列表
- ctrl + d 提交任务
- atq 查看没执行的任务列表和序号
- atrm <序号> 删除指定的任务
2.crontab周期性任务设置
按照预先设置的时间周期(分钟、小时、天、月、周)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
---|---|---|---|---|---|---|
数字范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 需要执行的命令 |