Linux-进程和计划任务管理⭐

发布于:2024-04-26 ⋅ 阅读:(19) ⋅ 点赞:(0)

目录

一、程序和进程

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、killall命令

        kill用于终止指定PID号的进程

        killall用于终止指定名称相关的所有进程

        -9选项用于强制终止

kill是如何杀掉进程的? 向进程发送信号的方式杀掉进程

kill(15):默认选项。告诉进程自行停止运行并退出。进程可以捕捉该信号并执行清理工作,然后正常退出。

kill (9):发送 SIGKILL 信号会立即终止进程,且不能被捕捉或忽略。这是一种强制终止进程的方式,进程没有机会进行清理工作,可能会导致数据丢失。

kill(3):发送 SIGQUIT 信号会使进程自行退出,并在退出时打印进程各个线程的堆栈信息。

kill (1):发送 SIGHUP 信号会通知进程重新加载配置文件,但不会使进程退出。

七、计划任务管理

1.at一次性任务设置

  1. at HH:MM [yyyy-mm-dd] 
  2. 输入命令列表 
  3. ctrl + d 提交任务 
  4. atq 查看没执行的任务列表和序号 
  5. atrm <序号> 删除指定的任务

2.crontab周期性任务设置

按照预先设置的时间周期(分钟、小时、天、月、周)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件
        全局配置文件,位于文件:/etc/crontab 
        系统默认的设置,位于目录:/etc/cron.*/
        用户定义的设置,位于文件:/var/spool/cron/用户名

代表意义 

分钟 小时 日期  月份 命令
数字范围 0~59  0~23  1~31   1~12 0~7  需要执行的命令