随机3(马哥)

1.bash的特性之: 变量

     程序: 指令 + 数据 或者= 算法 + 数据结构

          指令:由程序文件提供

          数据:文件,管道,变量,io设备

      变量: 变量名+指向的内存空间

      变量存储的类型:整数,浮点,字符 。。。。。

      变量名:只能包含数字,字母,下划线,且不能以数字开头,程序保留字。(见名知义,)

      变量替换:把变量名出现的位置替换为其所指向的内存空间数据。

      变量引用:$hostname

2.bash变量类型:本地变量:作用域仅为当前shell进程

                          环境变量:作用域仅为当前shell进程及其子进程(通常为大写字符)

                          局部变量:作用域仅为某代码片段(函数上下文)

                          特殊变量:shell内置的有特殊功用的变量($?;)

                          位置参数变量:当执行脚本的shell进程传递的参数

查看变量:set  env  环境变量export declare -x     撤销变量:unset 变量名         设置只读变量,无法重新赋值且不支持撤销,随shell进程终止而终止。(readonly 变量名 或者declare -r 变量名)

shell脚本编程:利用系统上的命令及编程组件进行编程(过程式编程,解释运行,依赖于外部程序文件运行)

          根据运行方式分类:

               编译运行(相对速度快): 源代码  -》编译器(编译)-》程序文件

               解释运行: 源代码 -》 运行时启动解释器,由解释器边解释边运行

如何写shell脚本:

  脚本第一行,定格给出shebang,解释路径,用于指明解释执行当前脚本的解释器程序文件

   常见解释器: #!/bin/bash     #!/usr/bin/python    #!/usr/bin/perl

shell脚本就是命令的堆积,但很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足,避免其运行中发生错误。

3.bash的配置文件

      profile类: 为交互式登入的shell进程提供配置

         全局:对所有用户都生效        ./etc/profile  和    /etc/profile.d/*.sh

         局部:只对当前用户生效       ~/.bash_profile

             功效:用于定义环境变量,运行命令和脚本

     bashrc类:为非交互式登入的shell进程提供配置

      全局:     /etc/bashrc

      用户个人:~/.bashrc

           功效:定义本地变量,定义命令别名

   

 4.  登入类型:

      交互式登入shell进程: 直接某终端输入账号密码后登入打开的shell进程;使用su -username命令执行的登入切换。

           读取文件顺序:/etc/profile -> /etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc

      非交互式登入shell进程: su username执行的登入切换;图形界面下打开的终端;运行的脚本

           读取文件顺序: ~/.bashrc -> /etc/bashrc ->/etc/profile.d/*.sh

5.命令行中定义的特性:作用域为当前shell进程的生命周期

6.配置文件定义的特性:只对重新开启的shell进程有效   (要想立即生效,可用命令行执行一边遍,或让shell进程读取配置文件source /PATH/FROM/CONF_FILE)

7.文本处理工具

   Linux上文本处理三剑客:

       grep:文本过滤工具(模式pattern)

       sed:stream editor 流编辑器,文本编辑工具

       awk:Linux上实际为gawk,文本报告生成器(格式化文本)

正则表达式 Reguai Expression  REGEXP

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

   分两类:  基本正则表达式  grep egrep -G

                   扩展正则表达式  egrep grep -E

  元字符:  基本正则表达式元字符

                      字符匹配:  .:匹配任意单个字符    []:匹配指定范围内的任意单个字符  [^] :匹配指定范围外的任意单个字符   【  [:digit:]表示所有数字  [:lower:]匹配所有小写字母  [:upper:] 匹配所有大写字母 [:alpha:]匹配所有字母包括大小写[:alnum:] 匹配包含数字 [:punct:]匹配所有标点符号 [:space:]匹配空白行】

                       匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数

                                  *匹配前面字符任意次,0,1,多次; .*:表匹配任意长度的任意字符;  \?:匹配其前面的字符0次或1次,即前面字符可有可无;    \+:匹配其前面的字符1次或多次,至少会出现一次;  \{m\}:匹配其前面字符出现m次;   \{m,n\}:匹配其前面字符至少出现m次最多出现n次;   

                       位置锚定:^:行首锚定; $:行尾锚定; ^$:匹配空白行;     ^[[:space:]]*$:匹配空行或包含空白字符的行; \<:词首锚定;   \>:词尾锚定;   \< \>:匹配完整单词

       练习:  找出文件中的两位数或三位数 grep "\<[0-9]\{2,3\}\>"       找出以至少一个空白字符开头,且后面是非空白字符的行grep "^[[:space]]\+[^[:space:]]"

 grep: 作用:文本搜索工具,根据用户指定的模式(过滤条件)对目标文本逐行匹配检查,打印匹配到的行。

             模式:由正则表达式的元字符及文本字符所编写的过滤条件。(正则表达式引擎)

             常用选项:-i 忽略大小写; -o仅显示匹配到的字符;  -v反向选取; -E支持使用扩展正则表达式元字符; -A n 显示匹配到的后n行;-B n 显示匹配到的前n行; -C n 显示匹配到的前后各n行.

后向引用:引用前面的分组括号的模式所匹配到的字符。

   扩展正则表达式元字符:

        字符匹配:一样

        次数匹配:?:0或者1次; +:前一个字符至少一次;  {m}:其前的字符出现m次;{m,n}“至少出现n次最多出现m次;

        位置锚定:一样

        分组及引用:()

           反向引用:\n

 

文本查看及处理工具:wc,cut,sort,uniq.diff, patch

  wc:word count   能显示文本的行数-l,单词数-w,字节数-c

  cut:从文件中的中截取某列     -d:以指定的字符为分隔符   -f:挑选出的字段(1,3-5,9表挑选12459字段)

  sort:给文本按一定规则排序      -t:指定字段分隔符   -k:用于排序比较的字段; -n基于数字大小进行排序;-r进行逆序排序;-f:忽略字符大小写 ; -u:消除重复的行

  uniq:报告或移除重复的行       -c:显示每行重复的次数   -u:仅显示未曾重复的行  -d仅显示重复过的行

  diff:逐行比较两个文件的不通之处   -u:显示不同之处的前几行及后几行默认是3行

patch:打补丁       -R:逆向补丁,还原; -i:打补丁

fstab文件: 设备    挂载点  文件系统类型  挂载选项  转储频率  自检次序

文件=

       元数据:indode  存储于inode table中

               +

        数据:data blocks 存储下级文件或目录的文件名与其inode对应关系 (故文件名存储于上一级目录中)

删除文件:将此文件指向的所有data block标记为未使用状态,将此文件的inode标记为未使用。

复制文件:就是新建文件

移动文件:同一个文件系统,移动文件仅仅是映射inode号而已改变的是路径。不同文件系统分区就是复制数到目标文件。

(软)符号链接:权限 -l 777         (条件:跨文件系统或分区 是目录  )

硬链接:指向同一个inode。

bash脚本文件格式:注释信息(时间,脚本描述,作者等),代码注释,

变量:局部变量,本地变量,环境变量,位置参数变量,特殊变量:$0:表脚本文件路径本身,$#:脚本参数的个数,$*:所有参数,$@:所有参数

数据类型:字符型,数值型,

增强型赋值:变量做某种算术运算后回存到此变量中,let  i=$i+n  或   let i+= 1      自增:let i++ 自检:let i--

过程式编程语言的代码执行顺序:

    顺序执行:逐条执行

    选择执行:  单分支if语句        if 测试条件

                                                                then   代码分支

                                                        fi

                   双分支if语句:    if 测试条件

                                                   then

                                                       条件为真时执行的分支

                                                  else

                                                       条件为假时执行的分支

                                              fi

    循环执行:代码片段(循环体)要执行0、1或多次

RAID:Redundant Arrays of Inexpensive Disks   廉价冗余磁盘阵列  优点: 提高IO能力(并行能力),提高其耐用性(磁盘冗余)

级别:多块硬盘组织在一起的工作方式有所不同                      分区格式:fd

RAID实现的方式(装系统前,BIOS上设置):  外接式磁盘阵列:通过扩展卡提供适配能力

                                                                             内接式RAID:主板集成RAID控制器

                                                 软件上实现:centos6上的软件RAID的实现。结合内核中的mdadm模式化工具,支持的级别0,1,4,5,6,10,JBOD。模式:创建-C,装配-A,监控-F,管理-r.-a.

级别:(0-6)

   RAID-0: 条带卷  strip  简单的来说就是将多块硬盘平行链接在一起的磁盘组织结构

      提高了IIO能力,但耐用性降低了,可用于临时或非重要性文件,可用空间为最小空间磁盘*磁盘个数,无冗错能力,最少磁盘数2个。

      

   RAID-1:    镜像卷  mirror

     读性能力提升,写性能略有下降,可用空间1*min磁盘容量,有冗余能力,最少磁盘数2个

       

   RAID-4:    奇偶校验 读写性能提升,可用空间N-1  最少磁盘3个,冗余能力:可允许坏一块硬盘。奇偶校验信息单独用一块盘存储,导致该盘负荷相对较大。

   RAID-5::奇偶校验  读写性能提升,可用空间N-1  最少磁盘3个,冗余能力:可允许坏一块硬盘。奇偶校验信息交叉存放。每块盘的负载压力相同

  RAID6:最少需要四块磁盘,读写性能力提升,有冗错能力,可用空间n-2.可允许坏2块盘,校验盘有两个,

混合类型:

   RAID-10:先两两一组做成RAID-1,再把一堆RAID-1做成RAID -0

         读写性能提升,可用磁盘n/2,有容错能力,每组镜像最多只能坏一块,最少4块

   RAID-01:先分两组做成RAID-1,再把这两组做成RAID-0.

   RAID-50:最少6个磁盘

   RAID-7::

   JBOD:将多块磁盘的空间合并成一个大的连续空间使用

常见级别:0,1,5,10,50,JBOD

逻辑卷管理器 LVM2     LVM:logical volume manager  version:2           分区格式:8e

  dm:device mapper 将一个或多个底层块设备组织成一个逻辑设备的模块

/dev/mapper/VG_name-lv_name        

  pv管理工具: pvs:简要pv信息显示     pvdisplay:显示pv详细信息  pvcreate:创建pv

vg管理工具:vgs:简要vg信息显示  vgdisplay:显示vg详细信息    vgcreate:创建vg -s指定pe大小  vgextend:增加vg   vgruduce:移除vg

lv管理工具:lvs 简要lv信息显示,lvdisplay 显示lv详细信息  lvcreate 创建lv

扩展逻辑卷:lvextend -L +num(或直接输入目标值)

缩减逻辑卷:umount取消挂载,e2fsck -f强制检测和修复文件系统,resize2fs把文件系统缩减到指定大小 lvreduce -L。然后在挂载上去就可以用了。

快照卷的创建:snapshot 

     lvcreate -L 指定大小,-p r 指明有读权限,-s指明这是一个快照,-n指明快照名字 原卷名字

dd命令:convert and copy file       可指定复制多少字节

    用法: dd if=原文件路径 of=目标文件路径及名字  bs=(block size 单位字节) count= (复制多少个bs)一般用户磁盘对拷复制。

btrfs文件系统: (B-tree,butter fs)核心特性: 支持写时复制更新机制,复制,更新及替换指针。而非就地更新;支持多物理卷btrfs可由多个底层物理卷组成,支持RAID,以联机添加移除修改;数据及元数据校验码:极大的保证了数据的可靠性;支持子卷,支持快照和增量快照机制,支持透明压缩。                      主要取代ext3/4,centos7主要是xfs文件系统。

     文件系统创建

                mkfs.btrfs:   -L -:指定卷标     d:指定类型(RAID0,5,6,10)   -m:         -O:列出

 

btrfs filesize show:查看B-tree文件系统属性详情 ;     挂载文件系统:mount -t btrfs 挂载设备 挂载点;    透明压缩机制:mount -o  compress=lzo 挂载设备 挂载点。

 

 

 

 

 

 

 

Zabbix                    监控系统属性:

监控指标:硬件设备是否损害(传感器),内存空间使用率,软件使用状态,业务指标,系统是否处于正常安全状态。

采样:周期性获取某个关注指标相关的数据          存储:历史数据(保存时间较短),趋势数据(聚合数据,保存周期较长)               展示:webgui app gui                报警:邮件,短信,微信等

被监控的对象:主机,交换机,路由器,UPS...

开源监控项目:

  cacti:采样,(存储,展示,报警)一般

naglos:不存储,采样,报警,不展示。

ganglla:

 zabbix:采样,存储,展示,报警都很强大

zabbix程序组件:zabbix_get:命令行工具 测试向agent发送数据采集请求; zabbix_sender :命令行,测试向server端发送数据zabbix_java_gateway:Java网关

       zabbix server:服务守护进程,负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行。

       database storage:存储系统,专用于存储所有配置信息,以及由zabbix收集的数据。

      web interface:zabbix的gui接口,通常和server运行在同一主机上。

      proxy:可选组件,代理服务器,常用于分布式监控环境中,代理server收集部分被监控端的监控数据并统一发往server端。

      agent:部署在被监控主机上,负责收集本地数据并发往server端或porxy端。

zabbix逻辑组件:

主机组host group   主机hosts   应用applications   监控项items   触发器trigges    事件events   动作actions:条件condition和操作operation    媒介media:发送通知的通道   通知notifications     远程命令remote command       报警升级escalation   模板template   图形graph    屏幕screens      幻灯slide show

       特性:

           数据采样:snmp,agent,ipml,jmx

          报警:步进升级

          数据存储:MySQL/pgsql

           展示:PHP程序        实时绘图:graph,screen,slide,map,show

           支持监控模板,网络自动发现,分布式监控,API支持二次开发

zabbix安装:(前提yum安装的lamp)

  1.设置zabbix database    /etc/my.cnf     添加skip_name_resolve=ON   innodb_file_per_table=ON

         创建数据库: CREATE DATABASE zabbix CHARSET 'utf8';

         创建连接的主机及用户和密码:GRANT ALL ON zabbix.* TO 'zabbix '@' 127.0.0.1' IDENTIFIED BY  '123';

         用户授权:FLUSH PRIVILEGES;

2.服务器安装server端及agent端

      #yum install -y zabbix-server-mysql-3.2-el7.x86_4.rpm zabbix-get-3.2-el7.x86_64.rpm

  程序环境:

        配置文件: /etc/zabbix/zabbix_server.conf        unit file:zabbix-server.service

        导入数据库脚本,已生成数据库环境:rpm -ql zabbix-sever-mysql

          gzip -d  /usr/share/doc/zabbix-server-mysql-3.2/create.sql.gz

          mysql -u zabbix -h 127.0.0.1 -p123 zabbix </usr/share/doc/zabbix-server-mysql-3.0/create/sql

             主要zabbix有3个脚本需依次导入:

  zabbix-server配置启动

                                              

 

        

 

 

        

   

 

 

 

 

      

 

 

 

             

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值