首页 > 其他 > 详细

学习笔记5

时间:2019-08-25 14:18:04      阅读:67      评论:0      收藏:0      [点我收藏+]
一网络配置 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 匹配多个字符串在执行动作后加此命令

学习笔记5

原文:https://blog.51cto.com/14451156/2432371

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!