GNU sed

Linux下执行脚本报错提示invalid option 3: set:

不羁的心 提交于 2019-12-01 19:32:49
1、在环境下执行sh报错invalid option 3: set: - 2、于是换成chmod 777 install.sh改执行权限,并且默认使用#!/bin/bash bash: ./install.sh: /bin/bash^M: bad interpreter: No such file or directory 3、按照这个报错可以找到许多解决方案了,原因是使用了Windows下的编辑工具导致文件格式是dos下的,需要改成Unix sed -i "s/\r//" install.sh 来源: oschina 链接: https://my.oschina.net/u/1271447/blog/3002087

MySql主从配置(主从热备份)

ⅰ亾dé卋堺 提交于 2019-12-01 09:33:02
环境说明 系统:centos7.5 软件版本:mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 安装目录:/usr/local/mysql 数据库目录:/data/mysql 数据库root密码:hc123456 A数据库:192.168.2.72 主 B数据库:192.168.2.73 从 数据库同步账号: sync 数据库sync密码: pcpaeyphmp 安装MySql 两台分别都安装 创建用户,组 创建mysql组指定组id为1200,创建mysql用户指定用户id为1200默认组mysql groupadd -g 1200 mysql useradd -r -g mysql -u 1200 -s /sbin/nologin mysql 创建数据目录 mysql数据库数据存储目录 datadir=/data/mysql # 数据库数据存储目录 mkdir -p $datadir basedir=/usr/local/mysql # 数据库安装目录 关闭Selinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 安装 jemalloc 配置软件安装源,安装jemalloc适合多线程下内存分配管理,减少内存碎片 rm -rf

shell脚本之正则三剑客(grep awk sed)

烈酒焚心 提交于 2019-11-30 21:13:54
grep : grep --color 带颜色,可以用来判断正则写的是否正确: 1、正则中的特殊符号 . * .* + ? . 表示 任意一个 字符: * 表示 零个或多个星号 前面的字符:(a*表示a有零个或者多个) + 表示 一个或多个加号 前面的字符:(a+表示a有1个或者多个) ? 表示 另一个或一个问号 前面的字符: (a?表示a有零个或这1个) .* 通配,表示 任意个任意 字符: 贪婪匹配 [root@localhost_01 ~]# echo 'aaaabbbb'|grep " a* " #可以匹配,表示匹配多个a: aaaa bbbb [root@localhost_01 ~]# echo 'bbbb'|grep " a* " #没有a的时候也匹配,表示匹配零个a: bbbb [root@localhost_01 ~]# echo 'aaaabbbb'|grep -E " a+b " #表示匹配一个或者多个a: aaaab bbbb [root@localhost_01 ~]# echo 'aaaabbbb'|grep -E " a?b " #表示匹配零个或者一个a: aaa ab bbb [root@localhost_01 ~]# echo 'asdfsdafsadfas'|grep " .* " #表示任意匹配,贪婪匹配: asdfsdafsadfas 2

初探Kubernetes动态卷存储(NFS)

纵饮孤独 提交于 2019-11-30 16:18:45
SHELL 超详细基础知识,适合新手小白(一) 一.什么是shell? 在linux内核与用户直接的解释器程序; 通常指/bin/bash; 相当于操作系统的“外壳”。 二.怎么使用shell? shell的使用方式? 1. 命令行 ==交互式; 逐条解释执行,效率低 2. 脚本 == 非交互式; 批量执行,效率高; 方便在后台静悄悄地运行。 三.怎么切换shell ?怎么使用某个特定shell? 1. 通过usermod , chsh 更改登录的shell 2. 手动执行目标shell程序 /bin/sh //多数unix默认使用的shell /bin/bash //多数Linux默认使用的shell 四.交互式硬件设备 标准输入: 从该设备接收用户输入的数据 标准输出: 通过该设备向用户输出数据 标准错误: 通过该设备报告执行中的出错信息 重定向操作: 改变标准输入/输出/错误输出的方向。 五.什么是shell脚本? 写好的执行语句,能够完成特定任务的文件 创建脚步的步骤? 脚本创建三步走 1.创建文本文件; 2.添加可执行的脚步语句 3.添加x 执行权限。 六.脚本构成? 规范的脚步构成? 1. #!//脚本声明(使用哪种解释器) 2. # //注释信息(步骤, 思路,用途,变量含义等) 3. 可执行语句 七.脚本怎么执行? 脚本执行有哪几种方式? 1. 作为命令 /命令字;

sed

喜夏-厌秋 提交于 2019-11-30 14:08:06
sed sed的强项是替换字符,但是也可以筛选,不过没有颜色高亮显示 如图,sed '/root/'p test.txt 如果要筛选字符,必须写在 '//' 中间,是特定格式 所以想搜索关键字 root 就要写作 '/root/' 旁边的 p 表示print打印,如果不写,就不会显示任何信息 写了 p 筛选内容才会显示在屏幕上 后面test.txt是想搜索的文件名称 但是这样有一个问题,如图,执行命令后出现很多不需要的信息 这是因为筛选完成后,这条命令还会把文件内的全文都打印到筛选信息下面 如图,第一行和第二行一模一样 第一行就是命令筛选出来的信息,第二行开始就是原文件全文的内容 所以如果不想执行命令后,把原文件内容也打印出来,需要使用参数 n 如图,使用 -n 参数,下面就只会显示筛选出来的信息,不会有原文的内容 如图,还可以使用正则符号 + 来筛选 但是需要使用 r 参数,或者脱义+号如 + 参数 r 功能类似 grep 的参数 -E 使用了r参数就可以直接识别一些需要脱义的字符 还可以直接选择显示某一行 如图,sed -n '2'p test.txt 就可以直接显示原文件第二行内容 写数字可以不用加 // 如图,这样可以显示 第二行 到 第五行 的内容 如图,这样可以显示第25行到最后一行的内容 符号 $ 代表剩下的所有内容 25,$ 就表示从 25行开始,然后到最后一行

网络工程师真的也需要好好学习linux系统

旧街凉风 提交于 2019-11-30 14:01:07
作为一名刚工作半年的小网工,想总结一下工作半年来的一些感悟。由于本人是网络工程专业,毕业前找工作的目标也是网络工程师,在经过几次面试后如愿以偿的找到了网络工程师的工作。由于上学时也没有多少钱,认证也没有考过,但学习过思科的CCNP,本来认为应付工作绰绰有余了,没想到工作后才发现想法真是太幼稚了。 在工作中遇到过太多太多的在学习中没遇到过的东西了,时常是遇到解决不了的问题时现查资料查文档解决。通过工作,也发现网络太基础了,可能过不了多久很多网络技术就要被淘汰,只有不断学习新知识,才能保住饭碗,从业人员应该会理解的,上学时学的一些协议,工作时才发现已经被淘汰了,学习能力也是很重要的,比如你之前一直学的思科,突然遇到华为设备,看半天产品手册就要把他配起来。在此我推荐各位网络工程师要学习一下 Linux 操作系统,比如遇到端到端主机的设置问题,如果一端是Linux或者是vmware虚拟机,但你只懂网络不懂其他东西,那就无法快速的处理故障,反之亦然。 工作中都是需要先登录堡垒机的,记得第一天上班时导师跟我说这东西就是用的Linux系统,这是我第一次接触Linux系统的东西,后来发现有位同事是Linux大神,总是喜欢分享一些能极大提高工作效率的Linux命令,比如snmpwalk,这个命令我研究了一小时,可以帮助我添加对客户的主动监控。他还想出了备份设备的配置资料

Linux 笔记:核心思想、常用命令以及脚本语法

不问归期 提交于 2019-11-30 13:32:29
总结于 《鸟哥的 Linux 私房菜 - 基础学习篇》 ,图片也来自于此。 核心思想 目录树结构(directory tree) Linux 系统是基于目录树结构的,这是它的核心思想 。目录,即文件夹。Linux 系统相当于一个文件夹,Linux 系统的所有数据要么对应一个文件夹,要么就是一个文件。比如,你新建一个用户,其实就是新建了一个文件夹。一个用户对应一个文件夹。目录树结构: 上图中 长方形是文件夹 , 波浪形是文件 ,根目录是 / 。这个 / 很巧妙,在 macOS 中,假设你下载文件 test.md 到 /Users/username/Desktop/ ,那么文件会下载到桌面,最前面这个 / 就是根目录。如果你写成 Users/username/Desktop/ ,那么文件就会下载到 currentDerectory/Users/username/Desktop/ 下。 Linux 系统使用的是目录树架构,但其实数据是存放在 磁盘分区 当中的,那么问题来了:目录树和磁盘分区是神马关系?这个时候就牵扯到一个叫「挂载(mount)」的概念了。 目录树和磁盘分区的关系 挂载其实就是建立目录树和磁盘分区之间的关系。目录只是一个标识,叫什么我们可以自定义,一个磁盘分区对应一个目录。 我们经常用 U 盘,假设一个 U 盘是一个磁盘分区,我们把一个假设叫 partition1 的 U

linux`操作文本的三大利器

左心房为你撑大大i 提交于 2019-11-30 11:14:22
awk 、 grep 、 sed 是 linux 操作文本的三大利器,也是必须掌握的 linux 命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属 awk 功能最强大,但也最复杂。 grep 更适合单纯的查找或匹配文本, sed 更适合编辑匹配到的文本, awk 更适合格式化文本,对文本进行较复杂格式处理。 以下所有实验输出,均以测试文件 test.log 内容为基准: 20170102 admin,password Open 20170801 nmask,nmask close 20180902 nm4k,test filter awk AWK 是一种处理文本文件的语言,是一个强大的文本分析工具; awk 是以列为划分计数的, $0 表示所有列, $1 表示第一列, $2 表示第二列。 awk参数 -F 指定输入文件折分隔符,如 -F : -v 赋值一个用户定义变量,如 -va=1 -f 从脚本文件中读取 awk 命令 注:只列举最常用的参数 分隔符 每行按空格分割列,并输出第1、3列 $ awk '{print $1,$3}' test.log # 或者 $ cat test.log | awk '{print $1,$3}' 自定义分隔符 使用”,”进行分割,参数用-F awk -F, '{print $1,$2}' test.log 使用多个分隔符,先使用空格分割

Linux下find、awk、sed、grep命令的例子

こ雲淡風輕ζ 提交于 2019-11-30 11:14:10
find:搜索工具 # 列出当前目录及子目录下所有文件和文件夹 find . # 在/home目录下查找以.txt结尾的文件名,-i表示忽略大小写 find /home -iname "*.txt" find命令的详细介绍 awk:数据快速处理 # test.txt 2 this is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo # 指定,为分隔符,在test中查找,并且输出分隔之后的每行的第一、第四个元素。分隔符默认为空格(包括tab) awk -F, '{print $1,$2}' test.txt 2 this is a test 3 Are you like awk This's a test 10 There are orange apple # 格式化输出,第一个元素和第四个元素的占位 awk '{printf "%-8s %-10s\n",$1,$4}' log.txt 2 a 3 like This's 10 orange,apple,mongo # 设置变量-v参数,a=1,如果原有元素为非数字则进行运算时为0 awk -va=1 '{print $1,$1+a}' log.txt 2 3 3 4 This's 1 10 11 # 将awk命令存为脚本保存,使用

Linux Shell DAY30

北城以北 提交于 2019-11-30 10:11:19
96.并发备份数据库 97.打印三角形 98.截取字符串 99.修改文本格式 100.自定义rm 并发备份数据库 题目要求 需求背景: 领导要求小明备份数据库服务器里面的100个库(数据量在几十到几百G),需要以最快的时间完成(5小时内),并且不能影响服务器性能。 核心要点 通过命名管道FIFO来实现 exec 100<>test.fifo #把100描述符和test.fifo绑定在一起 代码 #!/bin/bash #这个脚本用来并发备份数据库 ##假设100个库的库名、host、port以及配置文件路径存到了一个文件里,文件名字为/tmp/databases.list ##格式:db1 10.10.10.2 3308 /data/mysql/db1/my.cnf ##备份数据库使用xtrabackup(由于涉及到myisam,命令为inoobackupex) exec &> /tmp/mysql_bak.log if ! which innobackupex &>/dev/nll then echo "安装xtrabackup工具" rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm && \ yum install -y