Linux_进程和计划任务管理

一.程序和进程的关系

1.程序

  • 保存在硬盘、光盘等个质中的可执行代码和数据
  • 文件中静态保存的代码

2.进程

  • 在CPU及内存中运行的程序代码

  • 动态执行的代码

  • 父、子进程
    -------◆每个程序可以创建一个或多个进程

3.线程

  • 操作系统能够进行运算调度的最小单位,包含在进程中,是进程中实际运作单位
  • 一个进程中可以并发多个线程,每条线程执行不同的任务

4.线程与进程的关系

  • ①:一个进程可以多个线程,但至少有一个线程,一个线程只能在一个进程地址空间内活动
  • ②:资源分配给进程,同一进程的所有线程共享所有资源
  • ③:CPU分配给线程,即真正在处理器运行的是线程
  • ④:线程在执行过程中需要协作同步,不同进程的线程间要利用消息通信的办法实现同步

二.查看信息进程 ps aux

  • ps命令
  • 查看静态的进程统计信息
    [root@localhost ~]# ps aux
    或者
    [root@localhost ~]# ps -aux
a: 显示终端上的所有进程,包括其它用户的进程。
u: 表示列出进程的用户
x: 显示所有终端的进程

在这里插入图片描述

  • 统计进程信息:
  • [root@localhost ~]# ps -aux | wc -l

在这里插入图片描述

在这里插入图片描述各列的解释:

USER 进程的用户
PID: 进程的ID。
&CPU: 进程占用的CPU百分比。
&MEM: 占用内存的百分比。
vsZ: 该进程使用的虚拟内存量(KB)。
RSS: 该进程占用的物理内存量(KB)。
TTY: 启动进程的终端名。不是从终端启动的进程则显示为?
STAT: 该行程的状态
D:不可中断的休眠状态
R:正在运行状态
S:处于休眠状态,可被唤醒
T:停止状态,可能是在后台暂停或进程处于跟踪调试状态
Z:僵尸进程,进程已经中止,但是部分程序还在内存当中
START: 该进程被触发启动时间
TIME: 该进程实际使用cPU运行的时间
COMMAND: 进程的启动命令

三.查看进程信息ps -elf

  • ps命令

  • 查看静态的进程统计信息
    [root@localhost ~]# ps -elf

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

    扫描二维码关注公众号,回复: 12512884 查看本文章
  • -l:使用长格式显示进程信息

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

F: 内核分配给进程的系统标记
S: 进程的状态
UID: 启动这些进程的用户
PID: 进程的进程ID
PPID: 父进程的进程号( 如果该进程是由另- - 个进程启动的)
C: 进程生命周期中的CPU利用率
PRI: 进程的优先级(越大的数字代表越低的优先级)
NI: 谦让度值用来参与决定优先级。
ADDR: 进程的内存地址.
SZ: 假如进程被换出,所需交换空间的大致大小
WCHAN: 若该进程在睡眠,则显示睡眠中的系统函数名
STIME: 进程启动时的系统时间
TTY: 进程启动时的终端设备
TIME: 运行进程需要的累计CPu时间
CMD: 进程的启动命令

僵尸进程:

  • 一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程。
  • 但是当子进程比父进程先结束,而父进程又没有收回子进程,释放子进程占用的资源,此时子进程将会成为一个僵尸进程。

四.查看进程信息top

  • top命令 -----------每隔几秒进行刷新
  • 查看动态的进程排名信息
  • [root@localhost ~]# top

在这里插入图片描述

1.第一行是 任务队列信息
  • 11:06:48 --------- 系统时间
  • up 1:22--------系统已运行时长
  • 4 user--------当前登录用户数
  • load average: 0.06, 0.60, 0.48系统 负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值
2.第二行是 进程信息
  • Tasks ------------------总进程数
  • running-------------------正在运行的进程数
  • sleeping ------------------休眠的进程数
  • stopped-------------------中止的进程数
  • zombie---------------------僵死的进程数
3.第三行是 CPU的信息
  • us ----------------用户占用
  • sy-----------------内核占用
  • ni------------------优先级调度占用
  • id-------------------空闲CPU,要了解空闲的CPU 百分比,主要看%id部分
  • wa-----------------I/o等待占用
  • hi-------------------硬件中断占用
  • si-------------------软件中断占用
  • st-------------------虚拟化占用
4.第四行为内存的信息
  • total-----------------总交换空间
  • free------------------空闲内存
  • used-----------------已用内存
  • buff/cache ----------物理内存和交换内存的缓冲区总和
5.第五行是 交换空间的信息
  • total------------------------总内存空间
  • free--------------------------空闲内存
  • used-------------------------己用交换空间
  • avail Mem---------------------可用物理空间
6.进程信息区各列解释

在这里插入图片描述
进程信息区各列解释:

PID 进程ID
USER 进程所有者的用户名
PR 优先级
NI 谦让度值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位Kb
RES 进程使用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态
%cpu 上次更新到现在CPU占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用CPU时间总计,单位1/100秒
CoMMAND 命令名/命令行
7. top常用命令
P键 根据CPU使用百分比大小进行排序
M键 根据驻留内存大小进行排序
N键: 根据启动时间进行排序
c键: 切换显示命令名称和完整命令行
h键: 可以获得top程序的在线帮助信息
k键: 根据提示输入指定进程的PID号并按Enter键终止对应的进程
q键: 退出top程序
数字1键 显示CPU个数和状态
五.查看进程信息 pgrep
  • pgrep命令
  • 根据特定条件查询进程PID信息
  • [root@localhost ~]# pgrep -| “log”
  • -l:显示进程名,缺省时只输出PID号

在这里插入图片描述

  • .2538 rsyslogd
  • 2113 mcelog
  • [root@localhost ~]# pgrep -I -U teacher -t tty2
  • -U:指定特定用户,-t:指定终端
  • 27483 bash
  • 27584 vim

在这里插入图片描述

六. 查看进程树 pstree
  • pstree命令
  • 以树形结构列出进程信息
    [root@localhost ~]# pstree -aup
  • -a:显示完整信息
  • -u:列出对应用户名
  • -p:列出对应PID号

在这里插入图片描述

  • [root@localhost ~]# pstree -ap teacher
  • 只查属于指定用户的进程数结构
    在这里插入图片描述
七. 进程的启动方式
1. 手工启动
  • 前台启动:用户输入命令,直接执行程序
  • 后台启动:在命令行尾加入“&”符号

在这里插入图片描述

[root@localhost ~]# cp /dev/cdrom mycd.iso &
######### 输出信息中包括后台任务序号、PID号

在这里插入图片描述

2.调度启动
  • 使用at命令,设置一次性计划任务
  • 使用crontab命令,设置周期性计划任务
八. 进程的前后台调度
1. Ctrl+Z组合键
  • 将当前进程挂起,即调入后台并停止执行

在这里插入图片描述

2. jobs命令
  • jobs -l
  • 查看处于后台的任务列表

在这里插入图片描述

3. fg命令
  • 将后台进程恢复到前台运行,可指定任务序号
  • [root@localhost ~]# jobs
  • [1]- Stopped . cp /dev/cdrom mycd.iso
  • [2]+ Stopped top
  • [root@localhost ~]# fg 1

在这里插入图片描述

九. 终止进程的运行
1.Ctrl+C组合键
  • 中断正在执行的命令

在这里插入图片描述

2. kill、killall命令
  • kill用于终止指定PID号的进程
  • killall用于终止指定名称相关的所有进程
  • -9选项用于强制终止

在这里插入图片描述在这里插入图片描述

4. pkill命令
  • 根据特定条件终止相应的进程
  • 常用命令选项
  • ---- -U:根据进程所属的用户名终止相应进程
  • ---- -t:根据进程所在的终端终止相应进程
  • [root@localhost ~]# pgrep -I -U “teacher”
  • 3045 bash
  • [root@localhost ~]# pkill -9 -U " teacher"
  • [root@localhost ~]# pgrep -l -U " teacher" ####查看
十.计划任务管理 _____一次性计划任务 at
  • at命令

  • 一次性计划任务

  • at [HH:MM] [yyyy-mm-dd]
    -----HH :小时
    ----- MM:分钟
    ----- yyyy:年
    ----- dd:日
    ------不跟年月日,代表今天

  • [root@localhost ~]# date

  • Sun May 7 10:33:13 EDT 2017

  • [root@localhost ~]# at 10:35 2017-05-07

  • at> pgrep U root | WC -1 > /tmp/ps.root
    -----统计root 用户的进程数量
    -------->:把查询到的结果,输入到某个文件中,并且覆盖
    -----------统计root用户的进程数量,输入命令,保存到>…目录中,在按CTRL+D提交任务
    at> < EOT> #### 按CTRL+D提交任务

想在今天的18:41 计划管理任务设定重启
  • at 18:41
  • at>init 6
  • at>< EOT> ####按crtl+D 提交任务,到18:41时候,会重启:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
查看未执行的任务列表
  • [root@localhost ~]# atq
  • 2 Sun May 7 21:30:00 2017 a root

在这里插入图片描述

删除第1条任务
  • [root@localhost ~]# atrm 1
  • atrm -后面跟的是想要删除的序号
  • [root@localhost ~]# atq

在这里插入图片描述

十一. 计划任务管理 __ 预先设定周期计划任务 crontab
crontab命令

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

编辑计划任务
  • crontab -e -u 用户名 :
  • -u 缺省时,默认针对当前用户
查看计划任务
  • crontab -l -u 用户名
删除计划任务
  • crontab -r -u 用户名
1. crontab任务配置的格式

在这里插入图片描述

字段 说明
分钟 取值为从0到59之间的任意整数
小时 取值为从0到23之间的任意整数
日期 取值为从1到31之间的任意整数
月份 取值为从1到12之间的任意整数
星期 取值为从0到7之间的任意整数,0或7代表星期日
命令 要执行的命令或程序脚本——绝对路径来表示
绝对路径:/usr/bin/ls来表示
2. 时间数值的特殊表示方法
* 表示该范围内的任意时间
表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
举例:
  • 0 17 * * 1-5 ------------------------表示为:每周一到周五的17:00
  • 30 8 * * 1,3,5 ------------------表示为:每周1,3,5的8:30
  • 0 8-18/2 * * * --------------------------表示为:8-18点 每2小时
  • 0 * */3 * *--------------------------------表示为:每3天
  • */1 * * * * ---------------------------------表示为:每分钟执行一次
  • */5 * * * * ---------------------------------表示为:每5分钟执行一次
  • 0 /1 * * ----------------------------------表示为:每小时执行一次
  • 0 7 * * * ----------------------------------表示为:每天7点执行一次
  • 0 0 * * * ----------------------------------表示为:每天执行一次
  • 0 0 * * 1-----------------------------------表示为:每周执行一次
  • 0 0 1 * *------------------------------------表示为:每月执行一次
  • 0 0 1 1 * ------------------------------------表示为:每年执行一次
  • 5 * * * *---------------------------------------表示为:每小时的第五分钟执行一次
  • 30 7 8 * * ------------------------------------表示为:每个月的8号7:30执行一次
  • 30 5 6 8 * -------------------------------------表示为:每年8月6号的5:30执行一次
  • 30 6 * * 0---------------------------------------表示为:每个星期天的6:30 执行一次
  • 30 3 10,20 * * --------------------------表示为:每个月的10号20号的3:30执行一次
  • 25 8-11 * * * ----------------------------------表示为:每天的8点到11点 25分执行一次
  • */15 * * * * -----------------------------------------表示为:每15分钟执行一次
  • 30 6 */10 * * ----------------------------------表示为:每个月每隔10天 6:30分执行一次

在这里插入图片描述

在这里插入图片描述

echo '30 7 * * 6 /usr/bin/systemctl httpd restart '>> /var/spool/cron/root

  • 输出语句,每个星期6的7:30
  • systemctl:绝对路径
    在这里插入图片描述
  • /var/spool/cron/root :为用户自定义的文件设置
  • 只有root 用户每个星期6的7:30执行usr/bin/systemctl httpd restart 重启服务命令
  •  >:把输出的内容,输出到文件当中,如果文件中有内容,则会**覆盖**
    
  •  >>  :把输出的内容,输出到文件中,如果文件中有内容,**不会覆盖**,在文件末尾行
    添加 echo '30 7 * * 6 /usr/bin/systemctl httpd restart ' 内容
    

猜你喜欢

转载自blog.csdn.net/Wsxyi/article/details/113743693
今日推荐