• 进程与计划任务


    程序#

    程序:是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具用于描述进程要完成的功能,是控制进程执行的指令集

    进程

    介绍#

    运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位,

    进程ID(Process ID,PID)号码被用来标记各个进程

    UID、GID语境决定对文件系统的存取和访问权限

    通常从执行进程的用户来继承

    存在生命周期

    都由其父进程创建

    进程是程序的副本

    全生命周期 (诞生--->死去)进程的产生,运行,消失 (僵尸进程)(Zombie process)

     

    运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位,

    • 进程ID(Process ID,PID)号码被用来标记各个进程

    • UID、GID语境决定对文件系统的存取和访问权限

    • 通常从执行进程的用户来继承

    • 存在生命周期

    • 都由其父进程创建

    进程创建#

    init:第一个进程,从 CentOS7 以后为systemd

    进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write 写实更新,有数据写入子进程需要新的内存空间

    进程具有的特性#

    动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的

    并发性:任何进程都可以同其他进程一起并发执行;

    独立性:进程是系统进行资源分配和调度的一个独立单位

    结构性:进程由程序、数据和进程控制块三部分组成。

     

    例题  :怎么确定一个程序是多线程还是单线程

     #查nginx的进程数

     #用prtstat这个命令来查nginx的线程 ,显示线程是1

    另一种方法

     

     

     

     进程的基本状态#

    创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态

    就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行

    执行状态:进程处于就绪状态被调度后,进程进入执行状态

    阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用

    终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

     

     进程更多的状态#

    运行态:running

    就绪态:ready

    睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable

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

    僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程

     

    信号#

     #使用kill -l 来查看信号的类型

    进程优先级#

    进程优先级 系统优先级 用户优先级

    PRI(优先级) NI(手动可调的优先级) -20 ~ 19

     

    调优先级 renice -n (数字) PID号

     

    ps#

    查看静态的进程统计信息 process state

    a #显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息
    -a #显示所有终端机下执行的程序,除了阶段作业领导者之外
    u #使用以用户为主的格式输出进程信息
    x #显示当前用户在所有终端下的进程信息
    -e #显示系统内的所有进程信息
    -l #使用长(Long)格式显示进程信息
    -f #使用完整的(Full)格式显示进程信
    k|--sort 属性 对属性排序,属性前加 - 表示倒序 ps aux k -%cpu
    o #属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
    au #
    aux #查看系统中所有的进程
    ps axo pid,usr|head
    -elf|head
    pstree -p#查看PID号

    chattr +i a #加上i的权限 不允许删除
    chattr -i a #减去i的权限 允许删除

    ps aux |grep Z #过滤僵尸进程
    ps aux |grep -v grep|grep Z #过滤僵尸进程

     user:用户

    PID:pid号

    %cpu:使用的cpu占用的百分率

    %MEM:占用的内存百分率

    VSZ:虚拟内存

    RSS:真实内存

    TTY:终端

    STAT:状态

    START:运行开始时间

    TIME:分片时间 (统计一共占用了多少时间)

    COMMAND:进程的名字

     #查看pid号

    实验 创建个文件 a 给i的权限#

     

     

    top   (Linux任务管理器)#

    动态的进程信息  (看内存 cpu 使用率 ,q退出

    默认3秒刷新一次

    命令

    -d 秒数:#指定 top 命令每隔几秒更新。默认是 3 秒;
    -b:#使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
    -n 次数:#指定 top 命令执行的次数。一般和"-"选项合用;
    -p 进程PID:#仅查看指定 ID 的进程;
    -s:#使 top 命令在安全模式中运行,避免在交互模式中出现错误;
    -u 用户名:#只监听某个用户的进程;
    - ? 或 h:#显示交互模式的帮助;
    - c:#按照 CPU 的使用率排序,默认就是此选项;
    - M:#按照内存的使用率排序;
    - N:#按照 PID 排序;
    - T:#按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
    - k:#按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
    - r:#按照 PID 给某个进程重设优先级(Nice)值;
    - q:#退出 top 命令;

     

    Tasks: 157 total系统中的进程总数
    内 容 说 明
    1 running 正在运行的进程数
    149 sleeping 睡眠的进程数
    7 stopped 正在停止的进程数
    0 zombie 僵尸进程数。如果不是 0,则需要手工检查僵尸进程

     

     

    内 容说 明
    Cpu(s): 0.0 %us 用户模式占用的 CPU 百分比 个人用户开启的进程占用的 cpu 率
    0.2%sy 系统模式占用的 CPU 百分比
    0.0%ni 改变过优先级的用户进程占用的 CPU 百分比
    99.8%id 空闲 CPU 占用的 CPU 百分比
    0.0%wa 等待输入/输出的进程占用的 CPU 百分比 1
    0.0%hi 硬中断请求服务占用的 CPU 百分比
    0.0%si 软中断请求服务占用的 CPU 百分比
    0.0%st st(steal time)意为虚拟程序占用 cpu 时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比

     

     

    KiB Mem 内存
    1867048 total 总内存
    591836 free 剩余内存
    440024 used 用掉内存
    835188 buff/cache 缓存

     

    (增强版的top  )htop

     

    pgrep (查看指定的进程)#

    命令#

    -U #指定用户
    -l: #显示进程名
    -a: #显示完整格式的进程名
    -P pid #显示指定进程的子进程

     

    pidof#

    只知程序名不知pid号

    pidof nginx #查看 niginx进程的pid号

     

    pstree (以树形结构列出进程信息)#

    -p #按时进程数 ,并显示进程号
    -a #显示启动每个进程对应的完整指令,包括启动进程的路径、参数等
    -u #显示用户切换
    -H #pid 高亮显示指定进程及其前辈进程

     

     

    五大性能#

    内存 :free top

    cpu :top ps aux

    磁盘 

    大小:lsblk 剩余df

    读写 :dd iostat vmstat

    网络 :dstat iftop

     

     LSOF (列出已经打开的文件)#

    -c 字符串 #只列出以字符串开头的进程打开的文件
    +d 目录名 #列出某个目录中所有被进程调用的文件
    -u 用户名 #只列出某个用户的进程打开的文件
    -p pid #列出某个PID进程打开的文件

    实验  当别人在使用时,误删了文件如何找回#

     #先复制个/etc/passwd  到/date下取名test

     #这个比如是别人正在使用

     #你删除这个文件

     #过滤出这个文件

     #去 /proc下的6597

     #去往fd下

     #里面的都是软连接

     #通过软链接4 的/date/.test.swp  中去找

     #从内存里捞数据

     

    vmstat (性能监控)#

     

    字段含义
    procs 进程信息字段: -r:等待运行的进程数,数量越大,系统越繁忙。 -b:不可被唤醒的进程数量,数量越大,系统越繁忙。
    memory 内存信息字段: -swpd:虚拟内存的使用情况,单位为 KB。 -free:空闲的内存容量,单位为 KB。-buff:缓冲的内存容量,单位为 KB。-cache:缓存的内存容量,单位为 KB。
    swap 交换分区信息字段: -si:从磁盘中交换到内存中数据的数量,单位为 KB。 -so:从内存中交换到磁盘中数据的数量,单位为 KB。这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。
    io 磁盘读/写信息字段: -bi:从块设备中读入的数据的总量,单位是块。 -bo:写到块设备的数据的总量,单位是块。这两个数越大,代表系统的 I/O 越繁忙。
    system 系统信息字段: -in:每秒被中断的进程次数。 -cs:每秒进行的事件切换次数。这两个数越大,代表系统与接口设备的通信越繁忙。
    cpu CPU信息字段: -us:非内核进程消耗 CPU 运算时间的百分比。 -sy:内核进程消耗 CPU 运算时间的百分比。 -id:空闲 CPU 的百分比。 -wa:等待 I/O 所消耗的 CPU 百分比。 -st:被虚拟机所盗用的 CPU 百分比

     

    命令#

    选项 含义
    -fs  -f:显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的。 -s:将从启动到目前为止,由一些事件导致的内存变化情况列表说明。
    -S 令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。
    -d 列出硬盘有关读写总量的统计表
    -p 查看硬盘分区的读写情况  (分区,设备,文件名)

     

    free  (查看内存)#

    free -h

     

     #echo 3 > /proc/sys/vm/drop_caches  (清缓存)

    iostat (查看磁盘的读写性能)#

    iostat 1 -d/dev/sda 只查看sda磁盘 (每一秒刷新一次)

     #

    iftop  (监视流量)#

    系统不自带,得安装 (epel)

     #安装外源

     #安装 iftop

     

    dstat#

     #安装外源

     #安装dstat

     

    webadin#

     #下载安装包

     #安装webmin-2.100-1.noarch.rpm 

     #查看有无安装上

     #开启webmin

     #查看webmin目前服务的状态

     #关闭防火墙和安全机制

     #打开浏览器搜索你的IP地址后面加上:10000

     #你的用户名和密码

     

     

     #改中文

     

     #以改变中文

     

    进程启动方式#

    +& 将前台任务放在后台运行

    例如:dd if =/dev/zero of=/dev/null &

    jobs:查看后台运行的命令

    fg 1 :把后台命令调回前台

    在调回后台 ctrl +z 掉入后台 并停止

    bg 1 :继续后台命令 bg序号

     

     #放到后台执行

     #fg 1调回前面,ctrl +z  停止

     #想让已停止的它启动  bg 1

     #查看是否再运行

     

    计划任务书

    at  (一次性计划任务书)#

    at 工具

    1. 由包 at 提供

    2. 依赖与atd服务,需要启动才能实现at任务

    3. at队列存放在/var/spool/at目录中,ubuntu存放在/var/spool/cron/atjobs目录下

    4. 执行任务时PATH变量的值和当前定义任务的用户身份一致

    用法+格式#

    格式用法
    HH:MM 比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。
    Midnight(midnight) 代表 12:00 AM(也就是 00:00)。
    Noon(noon) 代表 12:00 PM(相当于 12:00)。
    Teatime(teatime)下午茶 代表 4:00 PM(相当于 16:00)。
    英文月名 日期 年份 比如 January 15 2018 表示 2018 年 1 月 15 号,年份可有可无。
    MMDDYY、MM/DD/YY、MM.DD.YY 比如 011518 表示 2018 年 1 月 15 号。
    now+时间 以 minutes、hours、days 或 weeks 为单位,例如 now+5 days 表示命令在 5 天之后的此时此刻执行。

     

    实验  在1点中,在opt下创建个铭文ky33的文件#

     

    crontab  (周期性计划任务书)#

    命令#

    -e #编辑一个定时任务
    * * * * *(分 ,时,日,月,周)(分:0-59,时(0-23),日(1-31),月(1-12),周(0-6)(0和7代表星期天)
    -u #指定用户
    -l #目前有哪些计划任务
    -r #删除计划任务

    格式 #

    分时日月周 + 命令(写绝对路径

     #在这些路径下可以不用绝对路径

    符号 代表
    * 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思
    代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
    - 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
    / 代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。

     

    应用示例#

    0 17 * * 1-5 #周一到周五每天17:00
    30 8 * * 1,3,5 #每周一、三、五的8点30分
    0 8-18/2 * * * #每天的8点到18点之间每2小时
    0 * */3 * * #每3天

     

    实验#

     #编辑定时任务

     #每2分钟复制 /etc/passwd 到/opt下取名soft

     #查看目前有哪些计划任务书

  • 相关阅读:
    手写题目4:快速获取数组中最大的三项
    条件渲染的说明》
    壹基金为爱同行走进绿水青山,为乡村儿童送去健康水
    AI制药中的一些思考和想法
    windows创建服务:更新服务信息乱码问题(ChangeServiceConfig)
    OpenCVSharp图像形态学操作
    verilog设计抢答器【附源码】
    Blender:渲染一个简单动画
    Jmeter是什么
    新版AI系统ChatGPT源码支持GPT-4/支持AI绘画去授权
  • 原文地址:https://www.cnblogs.com/yanrui07/p/17813163.html