定时计划任务以及linux内核详细讲解

文章详细介绍了Linux中的crontab如何设置定时任务,以及Linux进程的基本概念,包括进程状态、内存管理、用户空间和内核空间的区别。还提到了进程间通信(IPC)的方式,进程优先级的设定,以及如何自定义systemd服务进行定时任务。此外,讨论了awk工具在文本处理中的高效性能。
摘要由CSDN通过智能技术生成

1,定时计划任务

在 Linux 中,您可以使用 crontab 工具来实现计划任务。Crontab 允许您按照指定的时间表自动运行脚本、命令或者程序。

使用croutab -e 来编辑定时计划任务,查看一下程序包看看有哪些文件

/etc/cron.d 这个是它的配置文件,但是每个用户都有自己独立的计划任务放在/var/spool/cron下面

 

 执行前先去看下程序是不是正常运行,systemctl status crond,这里是正常的

 然后我们就可以编辑创建自己想创建的计划任务了crontab -e,例子如下:默认这个编辑使用的是none。创建完:wq保存就可以了

 后面跟上脚本跟上命令都是可以的。可以执行的都行

  • 第一个星号(分钟字段):匹配任意分钟。
  • 第二个星号(小时字段):匹配任意小时。
  • 第三个星号(日期字段):匹配任意日期。
  • 第四个星号(月份字段):匹配任意月份。
  • 第五个星号(星期字段):匹配任意星期
  • 如果在*/加上数字 ,就是对应每多少 (分钟,小时,日 ,月,和星期)。

2.linux进程,内存介绍

1、进程相关概念

  进程:正在运行中的程序

  内核功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等

  Process:运行中的程序的一个副本,是被载入内存的一个指令集合
    进程 ID(Process ID,PID)号码被用来标记各个进程
    通常从执行进程的用户来继承,存在生命周期

  task struct 任务结构表:Linux 内核存储进程信息的数据结构格式

  task list 任务列表:多个任务的 task struct 组成的链表

  进程创建:
    都由其父进程创建,父好关系,CoW(写时复制,不发生改变时父子都指向同一文件;发生改变时,则复制)
    init:第一个进程(centos6:init,centos7:systemd)
    守护进程:随着计算机的开启、关闭而随之开启、关闭。

2、进程,线程和协程:

  

  注:一个进程里至少有一个线程;线程之间由操作系统进行调度,包括进程中使用的资源也由操作系统进行调度;协程相当于线程中的语句块,由线程控制。

3、Page Frame:页框,用存储页面数据,存储 Page,每个进程要使用的分配空间
  虚拟内存(线性内存):进程运行的时候以为自己拥有了全部的内存空间
  物理地址空间和线性地址空间:
    MMU:负责转换线性和物理地址(虚拟内存和物理内存)
    TLB:翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存
    LRU:近期最少使用算法,释放内存

4、用户空间和内核空间:

  

5、进程之间基本状态和转换:

  

  创建状态:进程在创建时需要申请一个空白 PCB(进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态。
  就绪状态:进程已准备好,已分配到所需资源,只要分配到 CPU 就能够立即运行。
  执行状态:进程处于就绪状态被调度后,进程进入执行状态。
  阻塞状态:正在执行的进程由于某些事件(I/O 请求,申请缓存区失败)而暂时无法运行,进程受到阻塞,在满足请求时进入就绪状态等待系统调用。
  终止状态:进程结束,或出现错误,或被系统终止,进入终止状态,无法再执行。

  状态之间转换六种情况:
  运行 → 就绪:1,主要是进程占用 CPU 的时间过长,而系统分配给该进程占用 CPU 的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出 CPU,该进程便由执行状态转变为就绪状态。
  就绪 → 运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配 CPU。
  运行 → 阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态如发生了 I/O 请求。
  阻塞 → 就绪:进程所等待的事件已经发生,就进入就绪队列。
  以下两种状态是不可能发生的:
  阻塞 → 运行:即使给阻塞进程分配 CPU,也无法执行,操作系统在进行调度时,不会从阻塞队列进行挑选,而是从就绪队列中选取。
  就绪 → 阻塞:就绪态根本就没有执行,谈不上进入阻塞态。

6、IPC 进程间通信:
  同一主机:
    pipe 管道,一个写入管道文件,一个读(单向)
    socket 套接字文件,进程间交换数据(双工工作方式)
    signal 信号
    shm shared memory,共享内存
    semaphore 信号量,一种计数器,分配资源
  不同主机:
    socket ip 和端口号
    RPC 远程过程调用
    MQ 消息队列,如:Kafka , RabbitMQ,ActiveMQ

7、进程优先级

  

  实时进程(realtime),基于 FIFO 先进先出或 RR 轮询
  非实时进程:nice 按时间片分配进程
  取 139 个队列,将相同优先级的放在一个队列中,运行一个时间片后从运行队列转至过期队列。轮回运行队列和过期队列互调,再运行。

  

  进程优先级:
系统优先级:数字越小,优先级越高
0-139:各有 140 个运行队列和过期队列
    实时优先级:99-0 值最大优先级最高
    nice 值:-20 到 19,对应系统优先级 100-139

  Big 0:时间复杂度,用时和规模的关系
    0(1),O(logn),O(n)线性,O(n^2)抛物线,O(2^n)

8、进程状态:
  Linux 内核:抢占式多任务,按时间片分配任务
  进程类型:
    守护进程:daemon,在系统引|导过程中启动的进程,和终端无关进程
    前台进程:跟终端相关,通过终端启动的进程,用户执行命令等
    注意:两者可相互转化
  进程状态:
    运行态:running
    就绪态:ready
    睡眠态:
      可中断:interruptable
      不可中断:uninterruptable
    停止态:stopped,暂停于内存,但不会被调度,除非手动启动
    僵死态:zombie,结束进程,父进程结束前,子进程不关闭

9、进程工具

9.1 系统管理工具:
  进程的分类:
    CPU-Bound:CPU 密集型,非交互
      编译安装、大量计算等
    IO-Bound:IO 密集型,交互
      拷贝大文件等 DMA:直接内存访问

Linux 系统状态的查看及管理工具:

pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup

  Linux 系统各进程的相关信息均保存在 /proc/PID 目录下的各文件中

 top 详解

top:有许多内置命令
  排序:
    P:以占据的 CPU 百分比,%CPU
    M:占据内存百分比,%MEM
    T:累积占据 CPU 时长,TIME+

  首部信息显示:
    uptime 信息: |命令
    tasks 及 cpu 信息: t 命令
    cpu 分别显示: 1 (数字)
    memory 信息: m 命令
    退出命令: q
    修改刷新时间间隔: s
    终止指定进程: k
    保存文件: W

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

  选项:
    -d # 指定刷新时间间隔,默认为 3 秒
    -b 全部显示所有进程
    -n # 刷新多少次后退出
    -H 线程模式,示例:top -H -p `pidof mysqld

3,linux启动流程

  1. 加电和引导加载程序(Bootloader):

    • 当计算机加电时,引导加载程序(如GRUB、LILO等)会加载到计算机的内存中。
    • 引导加载程序会在预定义的位置(通常是硬盘的主引导记录)查找操作系统的启动程序。
  2. 内核初始化:

    • 引导加载程序将控制权转交给内核,启动内核初始化阶段。
    • 内核加载并初始化必要的驱动程序、文件系统和其他核心模块。
    • 内核进行硬件检测和初始化,设置系统参数,并加载用户空间的初始进程。
  3. 用户空间初始化:

    • 内核启动了一个叫做init的用户空间进程,它是系统初始化的第一个进程。
    • init进程读取系统的初始化配置文件(如/etc/inittab)并启动其他系统初始化任务。
    • 在现代Linux发行版中,init进程通常是systemd,它负责用户空间的初始化和管理系统服务。
  4. 系统服务启动:

    • init或systemd根据配置文件启动各种系统服务,如网络服务、日志服务、时间同步服务等。
    • 系统服务的启动顺序可能在配置文件中定义,以满足服务之间的依赖关系。
    • 用户可以自定义启动脚本和服务,并将其添加到启动过程中。
  5. 登录和图形界面:

    • 一旦系统服务启动完成,系统进入就绪状态,等待用户登录。
    • 用户可以通过命令行登录(通过终端或远程登录)或者图形界面登录(通过图形显示管理器,如GNOME、KDE等)。
    • 登录后,用户可以开始在Linux系统上执行各种操作和任务。

需要注意的是,不同的Linux发行版可能在启动流程上有细微的差异,特别是在引导加载程序和初始化进程方面。上述描述是一个通用的概述,可以作为理解Linux启动流程的基础。实际的启动流程可能因具体的发行版和配置而有所不同。

4,自定义systemd服务定时去其他服务器检查/tmp/下的文件

创建一个sh文件

 编辑文件,自定义systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中

 

 然后将变化的文件保存到/data/log/file.log的文件中,如果文件不存在就先创建;

临时文件也需要创建

 然后需要对check_tmp_files.sh加执行权限,

 然后创建一个.server的服务单元文件,然后写下以下文件

 ExecStart的文件路径是写自己创建的脚本的实际里路径来写

 将服务单元文件复制到/etc/systemd/system/目录中,可以看到第二个文件就是复制过来的,

重新加载systemd配置:

 然后启动并启动服务

 这样就可以了

5,linux内核安装

6.awk的使用

  • awk对文本的处理运算效率同比其他工具效率高很多(比shell的for循环高10倍以上,运算比bc计时器也高很多)
  • awk默认可对多个空格进行列切分,需要再借助其他工具。
  • awk可以对任意多个字符进行列分隔。
  • 如果文本列很多,可通过NF定位到最后一列获取列数据。
  • awk工具处理文本的命令非常丰富,几乎可以看成一套完整的编程语言。
  • 缺点
  • awk无法修改文本

案例场景:/etc/passwd 第一列、第三列、最后一列

案例场景:获取内存信息、IP地址信息、磁盘分区信息

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值