linux进程和计划任务管理

221 阅读5分钟

线程和进程的关系

1、一个进程可以有多个线程,但至少有一个线程;而一个线程只能在一个进程的地址空间内活动。

2、资源分配给进程,同一个进程的所有线程共享该进程所有资源。

3、CPU分配给线程,即真正在处理器运行的是线程。

4、线程在执行过程中需要协作同步,不同进程的线程间要利用消息通信的办法实现同步。

进程与线程的区别总结

根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位

资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行

ps aux:

a: 显示终端上的所有进程,包括其他用户的进程

u: 表示列出进程的用户

x: 显示所有终端的进程

有哪些命令可以查看平均负载:top w uptime

20220808170139.png

各列的解释: USER:进程的用户。

PID:进程的ID。

%CPU:进程占用的CPU百分比。

MEM:占用内存的百分比。

VSZ:该进程使用的虚拟内存量(KB) 。

RSS:该进程占用的物理内存量(KB) 。

TTY:启动进程的终端名。不是从终端启动的进程则显示为?

STAT:该进程的状态(D: 不可中断的休眠状态: R: 正在运行状态: S:处于休眠状态,可被唤醒。T: 停止状态,可能是在后台暂停或进程处于跟踪调试状态、Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)

START:该进程被触发启动时间。

TIME:该进程实际使用CPU运行的时间。

COMMAND:进程的启动命令。

ps -elf:

-e:显示系统内的所有进程信息。

-l:使用长格式显示进程信息。

-f:使用完整的格式显示进程信息。

-a:显示所有进程pid。

-T:查看线程信息。

ps -aT 显示所有线程:

20220808171042.png

进程信息区各列解释:

PID 进程id

USER 进程所有者的用户名

PR 优先级

NI 谦让度值。负值表示高优先级,正值表示低优先级

VIRT 进程使用的虚拟内存总量,单位.kb

RES 进程使用的物理内存大小,单位kb

SHR 共享内存大小,单位kb

S 进程状态

%CPU 上次更新到现在的CPU时间占用百分比

%MEM 进程使用的物理内存百分比

TIME+ 进程使用的cpu时间总计,单位1/100秒

COMMAND 命令名/命令行

top查看进程信息

top:

top -H 查看线程

第一行是任务队列信息:

23:24:06系统时间

up 4 min系统已运行时长l user当前登录用户数

load avergae 0.01 0.07 0.05系统负载分别为1、5、15分钟的平均值

第二行为进程信息

Tasks总进程数

running正在运行的进程数sleeping休眠的进程数

stopped种植的进程数zombie僵尸进程数

第三行为cpu的信息

us用户占用

sy内核占用

ni优先级调度占用id空闲cpu

waI/o等待占用hi硬件终止占用si软件终端占用st虚拟化占用

第四行为内存信息

total总内存空间

free空闲内存

used己用内存

buff / cache物理内存和交换内存的缓冲区总和

第五行为交换空间的信息

total 总交换空间

free 空闲交换空间

used 己用交换空间

avail Mem 可用物理空间

20220808164843.png

pgrep命令——查询进程的PID

根据特定条件查询进程PID信息

-l 显示进程名 -U 指定特定用户 -t 指定终端

查看进程树pstree

以树形结构列出进程信息

-a:显示完整信息 -u:列出对应用户名 -p:列出对应PID号

20220808152941.png

终止进程的运行:

Ctrl+C组合键

中断正在执行的命令

kill、killall命令

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

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

-9选项用于强制终止

kill和kill -9

1、我们经常会用到kill命令去杀死一个进程,但是有时会出现kill不成功的现象,这是就要用到kill -9

2、之所以这两个命令会有区别是因为所发送的**信号(Signal)**是不同的: 默认情况下kill命令的参数为-15

kill -15代表的信号为SIGTERM,这是告诉进程你需要被关闭,请自行停止运行并退出

kill -9代表的信号是SIGKILL,表示进程被终止,需要立即退出

3、因此kill -9表示强制杀死该进程,这个信号不能被捕获也不能被忽略

20220808193152.png

20220808204439.png

20220808164229.png

20220808160414.png

20220808160726.png

20220808160905.png

20220808163144.png

命令:

crontab -l 查询

crontab -r 清空

crontab -e [-u 指定用户]

/var/spool/cron/用户

/etc/crontab 分 时 日 周 用户 绝对路径的命令或脚本

20220808165325.png

总结:

20220808152235.png

20220808152941.png

20220808164229.png

20220808163144.png

IO状态是用什么命令去查看的话,可以讲有 iostat , vmstat, iotop, atop