进程,和计划任务

时间:2021-05-06 07:50:09

进程概念

内核功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
Process: 运行中的程序的一个副本,是被载入内存的一个指令集合
进程ID(Process ID,PID)号码被用来标记各个进程
UID、GID、和SELinux语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承进程,和计划任务
存在生命周期
task struct:Linux内核存储进程信息的数据结构格式
task list:多个任务的的task struct组成的链表
进程创建:
init:第一个进程
进程:都由其父进程创建,父子关系,CoW
fork(), clone()

进程,线程和协程

进程,和计划任务

进程相关概念

进程内存:

   Page Frame: 页框,用存储页面数据,存储Page 4k

   LRU:Least Recently Used 近期最少使用算法,释放内存,常用于缓存

   物理地址空间和线性地址空间

   MMU:Memory Management Unit负责转换线性和物理地址

   TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址

用户和内核空间

进程,和计划任务

Linux内核:抢占式多任务
进程类型:
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
注意:两者可相互转

进程状态:

     运行态:running

     就绪态:ready

     睡眠态:

       可中断:interruptable

       不可中断:uninterruptable

     停止态:stopped,暂停于内存,但不会被调度,除非手动启动

     僵死态:zombie,结束进程,父进程结束前,子进程不关闭

IPC进程间通信

同一主机:pipe 管道
socket 套接字文件
signal 信号
shm shared memory
semaphore 信号量,一种计数器
不同主机:socket IP和端口号
RPC remote procedure call
MQ 消息队列,如:Kafka,RabbitMQ,ActiveMQ

进程优先级

进程,和计划任务

进程,和计划任务

进程优先级:
系统优先级:数字越小,优先级越高
0-139:各有140个运行队列和过期队列
实时优先级: 99-0 值最大优先级最高
nice值:-20到19,对应系统优先级100-139
Big O:时间复杂度,用时和规模的关系
O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^

系统管理工具

uptime 和 w
显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)

进程,和计划任务

pstree命令

进程,和计划任务

查看进程进程ps

注意:该命令查看的是某一时刻的瞬间进程运行的状态,非连续查看(静态)
支持三种选项:
    UNIX选项如-A -e
    BSD选项如a
    GUN选项如--help 常用组合:aux 默认显示当前终端中的进程 a 选项包括所有终端中的进程 x 选项包括不链接终端的进程 u 选项显示进程所有者的信息 f 选项显示进程的父进程 o 属性… 选项显示定制的信息:: pid、comm、%cpu、%mem、state、tty、euser、rus
ps常见选项

-C cmdlist 指定命令,多个命令用,分隔
-L 显示线程
-e: 显示所有进程,相当于-A
-f: 显示完整格式程序信息
-F: 显示更完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
-u userlist 指定有效的用户ID或名称
-U userlist 指定真正的用户ID或名称
-g gid或groupname 指定有效的gid或组名称
-G gid或groupname 指定真正的gid或组名称
-p pid 显示指pid的进程
--ppid pid 显示属于pid的子进程
-M 显示SELinux信息,相当于Z

ni: nice值
pri: priority 优先级
psr: processor CPU编号
rtprio: 实时优先级
示例:
ps axo pid,cmd,psr,ni,pri,rtprio
常用组合:
aux
-ef
-eFH
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

进程优先级

进程优先级调整
静态优先级:100-139
进程默认启动时的nice值为0,优先级为120
只有根用户才能降低nice值(提高优先性)

搜索进程

最灵活:ps 选项 | 其它命令
按预定义的模式:pgrep

-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程

按确切的程序名称:/sbin/pidof
pidof bash

进程,和计划任务

进程管理工具

top:有许多内置命令
排序:
P:以占据的CPU百分比,%CPU
M:占据内存百分比,%MEM
T:累积占据CPU时长,TIME+
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W

PID: 进程描述符 
USER: 进程的拥有者 
PRI:进程的优先级 
NI: nice level 
SIZE: 进程拥有的内存(包括code segment + data segment + stack segment) 
RSS: 物理内存使用
VIRT(virtul memory usage): 进程需要的虚拟内存大小
RES(resident memory usage): 常驻内存 
SHARE: 和其他进程共享的物理内存空间 
STAT:进程的状态,有 S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中断的睡眠状态),Z=zombie。 
%CPU: CPU使用率 
%MEM: 物理内存的使用
TIME: 进程占用的总共cpu时间 
COMMAND:进程的命令

进程,和计划任务

 进程,和计划任务

栏位信息简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时

 内存空间

内存空间使用状态:
free

进程,和计划任务

-b 以字节为单位
-m 以MB为单位
-g 以GB为单位
-h 易读格式
-o 不显示-/+buffers/cache行
-t 显示RAM + swap的总和
-s n 刷新间隔为n秒
-c n 刷新n次后即退出

内存工具
vmstat命令:可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况
vmstat [options] [delay [count]]
vmstat 2 5

进程,和计划任务

procs:
r:可运行(正运行或等待运行)进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
memory:
swpd: 交换内存的使用总量
free:空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量

kill命令:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写

显示当前系统可用信号: kill –l 或者 trap -l

进程,和计划任务

进程,和计划任务

1 SIGHUP 无须关闭进程而让其重读配置文件
2 SIGINT 中止正在运行的进程;相当于Ctrl+c
3 SIGQUIT 相当于ctrl+\
9 SIGKILL 强制杀死正在运行的进程
15 SIGTERM 终止正在运行的进程
18 SIGCONT 继续运行
19 SIGSTOP 后台休眠
指定信号的方法 : (1) 信号的数字标识:1, 2, 9
(2) 信号完整名称:SIGHUP
(3) 信号的简写名称:HUP

jobs 查看后台执行程序

将“当前”作业放到后台“暂停”:ctrl+z

进程,和计划任务

进程,和计划任务

让作业在后台运行:bg

进程,和计划任务

将后台作业拿到前台处理:fg

进程,和计划任务

并行运行

同时运行多个进程,提高效率
任务计划

Linux任务计划、周期性任务执行
未来的某时间点执行一次任务
at 指定时间点,执行一次性任务

at任务

常用选项:
-V 显示版本信息
-t time 时间格式 [[CC]YY]MMDDhhmm[.ss]
-l 列出指定队列中等待运行的作业;相当于atq
-d 删除指定的作业;相当于atrm
-c 查看具体作业任务
-f /path/file 指定的文件中读取任务
-m 当任务被完成之后,将给用户发送邮件,即使没有标准输出

进程,和计划任务

进程,和计划任务

执行方式:
1)交互式 2)输入重定向 3)at –f 文件
依赖与atd服务,需要启动才能实现at任务
at队列存放在/var/spool/at目录中
/etc/at.{allow,deny}控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在at.deny 文件中的使用者则可执行
如果两个文件都不存在,只有 root 可以执行 at 命令

周期性任务计划cron

计划周期性执行的任务提交给crond,到指定时间会自动运行
系统cron任务:系统维护作业
/etc/crontab
用户cron任务:crontab命令

crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-l 列出所有任务
-e 编辑任务
-r 移除所有任务
-i 同-r一同使用,以交互式模式移除指定任务
-u user 仅root可运行,指定用户管理cron任务

进程,和计划任务

进程,和计划任务

 用户任务

进程,和计划任务

时间表示法:
(1) 特定值
给定时间点有效取值范围内的值
(2) *
给定时间点上有效取值范围内的所有值
表示“每...”
(3) 离散取值
#,#,#
(4) 连续取值
#-#
(5) 在指定时间范围上,定义步长
/#: #即为步长

系统的计划任务:
/etc/crontab 配置文件
/etc/cron.d/ 配置文件
/etc/cron.hourly/ 脚本
/etc/cron.daily/ 脚本
/etc/cron.weekly/ 脚本
/etc/cron.monthly/ 脚本