bash特性

  • bash是一个命令处理器,运行在文本窗口,并能执行用户直接输入的语句
  • bash还能从文件中读取linux命令,称之为脚本
  • bash支持通配符、管道、命令替换、条件判断等逻辑控制语句
  1. 命令行展开

echo lianxi{1..100..2} and echo lianxi{01..100}
#这种可以以花括号进行数据展开命令的操作,也是bash解释器的作用,这里..2意思是将1-100的数值每两位进行隔开,即1、3、5…;这里的01指的是将数字的显示敢为多数型,即001、002..具体的位数会根据结尾数字的位数来决定

  1. 别名功能

alias别名功能,即一些别名能够做到原命令的操作。
alias rm=’rm -i’ #设置别名
unalias rm #取消别名
在这里我们还可以将一些不想给用户使用的功能,进行别名的操作,这样别人在进行命令使用的时候,出现的就成了你别名的内容,如:
alias rm=’echo 别乱用rm’
这个时候用户在进行删除的时候,就成了提示这句话,而不能进行删除操作了

  1. 命令历史

history
! 历史操作编号 #对应历史编号的命令操作
!! #上一次命令操作

  1. 快捷键
  2. 命令、路径补全(tab键)

正则表达式

Regual Expression : REGEXP 。由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意思,而是用于表示控制或通配的功能。

  • 基本正则表达式:BRE(basic regular expression)
  • 扩展正则表达式:ERE(extended regular expresion)

    意义

  • 处理大量的字符串

  • 处理文本

通过特殊符号的辅助,可以让linux管理员快速过滤、替换、处理所需要的字符串、文本,让工作高效。
通常linux运维工作,都是面临大量带有字符串的内容,如:

  • 配置文件
  • 程序代码
  • 命令输出结果
  • 日志文件

且此类字符串内容,我们常会有特定的需要,查找出符合工作需要的特定的字符串,因此正则表达式就出现了

  • 正则表达式是一套规则和方法
  • 正则工作时以单位进行,一次处理一行
  • 正则表达式化繁为简,提高工作效率
  • linux仅受三剑客(sed、awk、grep)支持,其他命令无法使用

正则表达式应用非常广泛,应用在如python、java、perl等,linux下普通命令无法使用正则表达式的,只能使用三剑客。
通配符是大部分普通命令都支持的,用于查找文件或目录,而正则表达式是通过三剑客命令在文件(数据流)中过滤内容的。

linux三剑客

文本处理工具,均支持正则表达式引擎。

  • grep:文本过滤工具,(模式:pattern)工具
  • sed:stream editor,流编辑器,文本编辑工具
  • awk:linux的文本报告生成器(格式化文本),linux上是gawk

    正则表达式的分类

    linux三剑客主要分两类

  • 基本正则表达式

    BRE对应元字符有^$.[]*

  • 扩展正则表达式

    ERE在BRE的基础上,加上(){}?+|等字符

基本正则表达式BRE集合

  • 匹配字符
  • 匹配次数
  • 位置锚定

image.png

扩展正则表达式ERE集合

扩展正则必须用 grep -E 才能生效
image.png
Tips:

grep命令需要使用参数,-E 即可支持正则表达式 egrep不推荐使用,使用 grep -E 代替 grep不加参数,得在特殊字符前面加“\”反斜杠,识别为正则

定时任务

计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是,事先手动将计划任务设定好

  • 周期性任务执行
  • 清空/tmp目录下的内容
  • mysql数据库备份
  • redis数据备份

    crond服务(计划任务)

    image.png
    检查运行

    systemctl status crond.service #centos7 service crond status #centos6

    显示一个绿色的running,就表示正在运行了

crond定时任务服务应用

cron 定时任务的名字
crond 定时任务进程名
crontab 管理定时任务命令
cron是linux系统中以后台进程模式周期性执行命令或指定程序任务的服务软件名。
linux系统启动后,cron软件便会启动,对应的近程名字叫做crond,默认是定期(每分钟检查一次)检查系统中是否有需要执行的任务计划,如果有,则按计划进行,好比我们平时用的闹钟。

  • crond定时任务默认最快的频率是每分钟执行
  • 若是需要以秒为单位的计划任务,则编写shell脚本更合适,crond就不适用了

查看任务进程

ps aux | grep crond
ps aux | grep atd

作用

  • 夜间数据库定时备份
  • 夜间网站数据(用户上传、文件、图片、程序)备份
  • 备份等待时间过长
  • 任务重复性高

利用linux的定时任务cron工具可以解决重复性、周期性的、自动备份等运维工作。

linux中定时软件

  • at 定时任务工具,依赖于 atd 服务,适用于执行一次就结束的调度任务,例如突发任务,某天夜里3点需要临时性备份数据,可以使用at软件

image.pngimage.png

定时任务与邮件任务

image.png
image.png

mailx命令(发邮件)

三个概念
MTA:Mail Transport Agent,邮件传送代理,也就是postfix服务
MUA:Mail User Agent,收发邮件的客户端,可以是foxmail,也可以是其他客户端
Centors7通过命令mailx发送邮件,通过mail命令收邮件
image.png

mail命令(收邮件)

image.png

非交互式发邮件

我们还可以指定一个文件,将文本内容发给指定用户

mail -s “hell~” dzc < lianxi.txt

定时任务与cron实践

向crond进程提交任务的方式与at不同,crond需要读取配置文件,且有固定的文件格式,通过crontab命令管理文件
cron任务分为两类

  • 系统定时任务

crond服务除了会在工作时查看 /var/spool/cron 文件夹下的定时任务文件以外,还会查看 /etc/cron.d 目录以及 /etc/anacrontab 下面的文件内容,里面存放每天、每周、每月需要执行的系统任务
image.png
系统定时任务配置文件 /etc/crontab
image.png

用户定时任务计划

当系统管理员或是普通用户创建了需要定期执行的任务,可以使用crontab命令配置,crond服务在启动时,会每分钟查看/var/spool/cron路径下以系统用户名命名的定时任务,以确定是否有需要执行的 任务。
image.png

两种输入得到的结果是一样的,都可以做到查看此root(当前用户)下的定时任务文件的内容

cat /var/spool/cron/root crontab -l

crontab命令

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似
image.png

用户查看定时任务

image.png
配置定时任务的基本格式

  • 利用 crontab -e 进入编辑界面
  • 输入以 * 执行命令 为格式的内容,保存退出
  • 利用 crontab -l 查看是否存在该定时任务,如果没有问题,则配置成功

    检查crond服务器是否运行

    image.png

    定时任务相关的文件

    image.png

    了解定时配置基本格式


          • 分 时 日 月 周
            分钟(0-59);时(0-23);日(1-31);
            月(1-12);周(0-6[0代表周日,也可以用7])
            image.png
            要点:
  • 月和周一般不同时使用,无法固定其对应的天
  • 如果想要做到每年,每月和每周几都为*就可以了
  • 且如果运用了/,是没法整除的数字,定时任务就会没有意义

    案例

    1.第12月,每天早上6点到12点,每隔3个小时0分钟执行一次shell脚本/uer/bin/backup

    0 6-12/3 12 /bin/bash /usr/bin/backup > /dev/null 2>&1 语法:/bin/bash 脚本路径 > /dev/null 2>&1;就是执行脚本的默认命令,以什么去执行,加上脚本路径,再加上丢弃输出的重定向