学习笔记5

女生的网名这么多〃 提交于 2019-11-28 12:33:11
    一网络配置
    1.将Linux主机接入到网络,需要配置网络相关设置 
       主机名  
       IP/netmask  
     路由:默认网关  
       DNS服务器 
    2.网络配置命令
      配置网络接口 ifconfig命令
        ifconfig [interface]   
        ifconfig -a   
        ifconfig IFACE [up|down] 
        路由管理命令   route  命令
        查看:route -n 
        添加:route add 
        删除:route del 
        显示网络连接  netstat命令
        -t: tcp协议相关  
        -u: udp协议相关  
        -w: raw socket相关  
        -l: 处于监听状态  
        -a: 所有状态  
        -n: 以数字显示IP和端口  
        -e:扩展格式  
        -p: 显示相关进程及PID 
        配置Linux网络属性:ip 命令 
          ip addr { add | del } IFADDR dev STRING  
            [label LABEL]:添加地址时指明网卡别名  
            [scope {global|link|host}]:指明作用域   
            global: 全局可用   
            link: 仅链接可用   
            host: 本机可用  
            添加路由:ip route add  
            主机路由:IP    网络路由:NETWORK/MASK   
            添加网关:ip route add default via GW dev IFACE  
            删除路由:ip route del TARGET   
            显示路由:ip route show|list  
            清空路由表:ip route flush [dev IFACE] 
            ss命令
            -t: tcp协议相关  
            -u: udp协议相关  
            -w: 裸套接字相关  
            -x:unix sock相关  
            -l: listen状态的连接  
            -a: 所有  
            -n: 数字格式  
            -p: 相关的程序及PID  
            -e: 扩展的信息  
            -m:内存用量  
            -o:计时器信息 
            ss -l 显示本地打开的所有端口 
            ss -pl 显示每个进程具体打开的socket 
            ss -t -a 显示所有tcp socket 
            ss -u -a 显示所有的UDP Socekt 
            ss -o state established  显示所有已建立的 ssh连接 
            ss -o state established 显示所有已建立 的HTTP连接 
            ss -s 列出当前socket详细信息 
            3.网络配置文件
            IP、MASK、GW、DNS相关配置文件
            /etc/sysconfig/networkscripts/ifcfg-IFACE 
            路由相关的配置文件
            /etc/sysconfig/network-scripts/route-IFACE 
            /etc/sysconfig/network-scripts/ifcfg-IFACE
            注意:需service network restart生效 
            ONBOOT:在系统引导时是否激活此设备 
            TYPE:接口类型;常见有的Ethernet, Bridge 
            UUID:设备的惟一标识 
            IPADDR:指明IP地址 
            NETMASK:子网掩码 
            GATEWAY: 默认网关 
            DNS1:第一个DNS服务器指向 
            DNS2:第二个DNS服务器指向 
            USERCTL:普通用户是否可控制此设备 
            PEERDNS:如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配 的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf 
            配置当前主机的主机名: 
            hostname [HOSTNAME]  /etc/sysconfig/network 
            bonding配置
            创建bonding设备的配置文件 
            /etc/sysconfig/network-scripts/ifcfg-bond0 
            DEVICE=bond0 
            BOOTPROTO=none 
            BONDING_OPTS=  “miimon=100  mode=0” 
            /etc/sysconfig/network-scripts/ifcfg-eth0 
            DEVICE=eth0 
            BOOTPROTO=none 
            MASTER=bond0 
            SLAVE=yes 
            USERCTL=no 
            查看bond0状态:/proc/net/bonding/bond0
            删除bond0 
            ifconfig bond0 down 
            rmmod bonding 
            创建软件网桥    
            nmcli con add con-name mybr0 type bridge con-name br0 ifname br0    
            nmcli con modify mybr0 ipv4.addresses 192.168.0.100/24 ipv4.method manual    
            nmcli con add con-name br0-port0 type bridge-slave  ifname eth0 master br0 
            查看配置文件     
            cat  /etc/sysconfig/network-scripts/ifcfg-br0    
            cat  /etc/sysconfig/network-scripts/ifcfg-br0-port0 
          工具包  yum install bridge-utils 
            查看网桥  brctl  show 
            查看CAM表 brctl  showmacs br0 
            添加和删除网桥    brctl addbr | delbr br0  
            添加和删除网桥中网卡   brctl addif | delif br0 eth0 
            注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口 

            二进程和计划任务
            内核功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等 
            Process: 运行中的程序的一个副本,是被载入内存的一个指令集合  
            进程ID(Process ID,PID)号码被用来标记各个进程  
            UID、GID、和SELinux语境决定对文件系统的存取和访问权限  
            通常从执行进程的用户来继承 
            进程创建: 
            init:第一个进程    
            进程:都由其父进程创建,fork(),父子关系,CoW 
            进程类型: 
            守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程  
            前台进程:跟终端相关,通过终端启动的进程 
            注意:两者可相互转化 
            进程状态: 
            运行态:running 
            就绪态:ready 
            睡眠态:可中断:interruptable   不可中断uninterruptable
            停止态:stopped,暂停于内存,但不会被调度,除非手动启动  
            僵死态:zombie,结束进程,父进程结束前,子进程不关闭 
            进程优先级:  
            系统优先级:数字越小,优先级越高   
            0-139:各有140个运行队列和过期队列  
            实时优先级: 99-0   值最大优先级最高
            nice值:-20到19,对应系统优先级100-139 
            查看进程命令ps
            选项:默认显示当前终端中的进程 
            a 选项包括所有终端中的进程 
            x 选项包括不链接终端的进程 
            u 选项显示进程所有者的信息 
            f 选项显示进程树,相当于 --forest 
            k|--sort  属性 对属性排序,属性前加- 表示倒序 
            o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem 
            L 显示支持的属性列表 
          搜索进程
            最灵活:ps 选项 | 其它命令 
            按预定义的模式:
            pgrep  pgrep [options] pattern
            -u uid: effective user,生效者 
            -U uid: real user,真正发起运行命令者 
            -t terminal: 与指定终端相关的进程 
            -l: 显示进程名 
            -a: 显示完整格式的进程名
            -P pid: 显示指定进程的子进程 
            按确切的程序名称:/sbin/pidof     pidof bash 
            kill命令:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开 头(可省略),不区分大小写 
    显示当前系统可用信号: kill –l   或者  trap -l 
            常用信号:man 7 signal 
            1) SIGHUP 无须关闭进程而让其重读配置文件  
            2) SIGINT 中止正在运行的进程;相当于Ctrl+c 
            3) SIGQUIT 相当于ctrl+\  
            9) SIGKILL 强制杀死正在运行的进程 
            15) SIGTERM 终止正在运行的进程  
            18) SIGCONT 继续运行 
            19) SIGSTOP 后台休眠 
            并行运行
            同时运行多个进程,提高效率 
            方法1     
            vi all.sh   f1.sh&   f2.sh&   f3.sh& 
            方法2     (f1.sh&);(f2.sh&);(f3.sh&) 
            方法3     { f1.sh& f2.sh& f3.sh& } 
            计划任务
            at 命令:at [option] TIME 
            常用选项:  
            -V  显示版本信息  
            -t time    时间格式  [[CC]YY]MMDDhhmm[.ss]  
            -l  列出指定队列中等待运行的作业;相当于atq 
            -d  删除指定的作业;相当于atrm 
            -c  查看具体作业任务  
            -f /path/file 指定的文件中读取任务 
            -m 当任务被完成之后,将给用户发送邮件,即使没有标准输出 
            周期性任务计划:cron 
            相关的程序包: 
            cronie:主程序包,提供crond守护进程及相关辅助工具  
            crontabs:包含CentOS提供系统维护任务 
            系统cron任务:/etc/crontab 
            时间格式
            yearly          0 0 1 1 * 
            annually      0 0 1 1 * 
            monthly       0 0 1 * * 
            weekly         0 0 * * 0 
            daily            0 0 * * * 
            hourly          0 * * * * 
            reboot         Run once after reboot 
            系统的计划任务: 
            /etc/crontab  配置文件
            /etc/cron.d/    配置文件
            /etc/cron.hourly/   脚本 
            /etc/cron.daily/  脚本
            /etc/cron.weekly/ 脚本
            /etc/cron.monthly/ 脚本 

            三sehll脚本进阶
            for循环
            for 变量名  in 列表;do 循环体   done 
            执行机制:  依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直 到列表中的元素耗尽,循环结束 
            列表生成方式:
            (1) 直接给出列表 
            (2) 整数列表:  
            (a) {start..end}  
            (b) $(seq [start [step]] end)   
            (3) 返回列表的命令   $(COMMAND) 
            (4) 使用glob,如:*.sh  
            (5) 变量引用   $@, $* 
            while循环
            while CONDITION; do   循环体    done 
            CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后 会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false” 终止循环 
            因此CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被 修正 
            进入条件:CONDITION为true 
            退出条件:CONDITION为false 
            循环控制语句
            continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为 第1层   
            while CONDTIITON1; do  CMD1  ...
            if CONDITION2; then   continue 
            fi  CMDn  ...       done
            break [N]:提前结束第N层循环,最内层为第1层    
            while CONDTIITON1; do  CMD1  ... 
            if CONDITION2; then   break 
            fi  CMDn  ...     done 
            shift [n] 
            用于将参量列表 list 左移指定次数,缺省为左移一次。 
            参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。while 循环遍 历位置参量列表时,常用到 shift 
            ./doit.sh a b c d e f g h ./shfit.sh a b c d e f g h 
            select循环与菜单
            select variable in list      do   循环体命令     done 
            select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上, 并显示 PS3 提示符,等待用户输入 
            用户输入菜单列表中的某个数字,执行相应的命令 
            用户输入被保存在内置变量 REPLY 中 
            select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 命令终止 脚本。也可以按 ctrl+c 退出循环 
            select 经常和 case 联合使用 
            与 for 循环类似,可以省略 in list,此时使用位置参量 
            函数
            函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程 
            它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运 行,而是shell程序的一部分 
            函数和shell程序比较相似,区别在于 
            Shell程序在子Shell中运行 
            Shell函数在当前Shell中运行。因此在当前Shell中,函数可以对shell中变 量进行修改 
            定义函数
            函数由两部分组成:函数名和函数体 
            语法一: 
            f_name (){ 
            ...函数体...
            } 
            语法二:
            function f_name { 
            ...函数体... 
            } 
            语法三:
            function f_name () {
            ...函数体... 
            }  
            函数的定义和使用: 
            可在交互式环境下定义函数 
            可将函数放在脚本文件中作为它的一部分 
          可放在只包含函数的单独文件中 
            调用:函数只有被调用才会执行 
            调用:给定函数名 
            函数名出现的地方,会被自动替换为函数代码 
            函数的生命周期:被调用时创建,返回时终止 
            函数返回值: 
            函数的执行结果返回值: 
            (1) 使用echo等命令进行输出 
            (2) 函数体中调用命令的输出结果 
            函数的退出状态码:  
            (1) 默认取决于函数中执行的最后一条命令的退出状态码 
            (2) 自定义退出状态码,其格式为:
            return  从函数中返回,用最后状态命令决定返回值 
            return 0  无错误返回 
            return 1-255  有错误返回 
            交互式环境定义使用函数
            示例:
            dir() {  
            > ls -l    
            > > } 
            定义该函数后,若在$后面键入dir,其显示结果同ls -l的作用相同      dir 
            该dir函数将一直保留到用户从系统退出,或执行了如下所示的unset命令      unset dir  
            脚本中定义使用函数
            函数在使用前必须定义,因此应将函数定义放在脚本开始部分,直至shell首次发现它 后才能使用 
            调用函数仅使用其函数名即可
            使用函数文件
            可以将经常使用的函数存入函数文件,然后将函数文件载入shell 
            文件名可任意选取,但最好与相关任务有某种联系。例如:functions.main 
            一旦函数文件载入shell,就可以在命令行或脚本中调用函数。可以使用set命 令查看所有定义的函数,其输出列表包括已经载入shell的所有函数 
            若要改动函数,首先用unset命令从shell中删除函数。改动完毕后,再重新载 入此文件 
    函数可以接受参数:  
            传递参数给函数:调用函数时,在函数名后面以空白分隔给定参数列表即可; 例如“testfunc arg1 arg2 ...” 
            在函数体中当中,可使用$1, $2, ...调用这些参数;还可以使用$@, $*, $# 等特殊变量
            函数变量
            变量作用域: 
            环境变量:当前shell和子shell有效  
            本地变量:只在当前shell进程有效,为执行脚本会启动专用子shell进程; 因此,本地变量的作用范围是当前shell脚本程序文件,包括脚本中的函数 
            局部变量:函数的生命周期;函数结束时变量被自动销毁 
            注意:如果函数中有局部变量,如果其名称同本地变量,使用局部变量 
            在函数中定义局部变量的方法  local NAME=VALUE 
            数组
            变量:存储单个元素的内存空间 
            数组:存储多个元素的连续的内存空间,相当于多个变量的集合 
            数组名和索引  
            索引:编号从0开始,属于数值索引 
            注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引, bash4.0版本之后开始支持
            bash的数组支持稀疏格式(索引不连续) 
            声明数组: 
            declare -a ARRAY_NAME
            declare -A ARRAY_NAME   关联数组 
            注意:两者不可相互转换 
            expect命令
            选项 
            -c:从命令行执行expect脚本,默认expect是交互地执行的    
            -d:可以输出输出调试信息    
            expect中相关命令 
            spawn 启动新的进程 
            send 用于向进程发送字符串 
            expect 从进程接收字符串 
            interact 允许用户交互 
            exp_continue 匹配多个字符串在执行动作后加此命令 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!