创新路
我们一直在努力

继续awk使用

王宇恒阅读(16)评论(0)

题一:

[123].dsada.[456].dasda.[789]

[111].ghdhhhfhd.[222].therher.[333]

输出上列字符中[]里面的字符,不带[]。

image.png

原理为-F'[][]'识别为以[或]为分隔符,这样每行内容就被分割为几段,其中第一个[前方视为有一段有空白,所以123是属于$2。

有一个文件,内容如图

image.png

目标是检测第一列相同的行,将二三列输入同一个文件。一开始想在BEGIN中将$1赋值给变量,结果发现不可以,BEGIN中$1的值好像为空。如图

image.png

我想到一种取巧的方法

image.png

实际上使用awk加上if判断应该也是可以的

image.png

这里~代替等号,我是怎么也没想到的。找了好久才发现。

使用awk语言处理文本和数据

王宇恒阅读(32)评论(0)

先贴上一个简单的介绍:

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。

紧接着我们分析一个语句的构成,单引号内是脚本字段,探究一下这个字段的运行过程:

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

执行顺序大概分为三步:

第一步,执行BEGIN语句,只执行一次。

第二步,逐行执行patten语句。

第三步,执行end语句,只执行一次。

实际上这三个部分并不是缺一不可的,随便缺少哪一块都可以,我们可以测试一下

image.png

image.png

image.png

当使用不带参数的print时,它就打印当前行

image.png

在awk的print语句块中双引号是被当作拼接符使用,例如:

image.png

awk 'END{ print NR }' filename命令可以统计行数,读入每一行时,NR对应的值就会更新。

image.png

实际上也可以不放在END里,比如这样:实时打印行数

image.png

对于awk的预算与判断,作为一种程序设计语言所应具有的特点之一,awk支持多种运算,这些运算与C语言提供的基本相同。

+ – 加,减

 / & 乘,除与求余 

+ – ! 一元加,减和逻辑非 

^ ** 求幂 

++ — 增加或减少,作为前缀或后缀

举例:awk 'BEGIN{a="b";print a++,++a;}'

image.png

这里令我百思不得其解:所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0。

查找之后发现,输出a++时。由于先输出a再自增,所以输出0.但是其实a已经变为1,后面再经过++a。结果自然就成了2。

【come on】下一代容器技术工具

jwenshan阅读(40)评论(0)

<img src="/ueditor/php/upload/image/20200617/1592362661115135.png" title="1592362661115135.png" alt="QQ截图20200617103028.png"/>

容器<br/>

Docker 是一个开源的应用容器引擎,属于 Linux 容器的一种封装,Docker 提供简单易用的容器使用接口,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 是目前最流行的 Linux 容器解决方案,即使 Docker 是目前管理 Linux 容器的一个非常方便的工具,但它也有两个缺点:

  1. Docker 需要在你的系统上运行一个守护进程。

  2. Docker 是以 root 身份在你的系统上运行该守护程序。

这些缺点的存在可能有一定的安全隐患,为了解决这些问题,下一代容器化工具 Podman 出现了 。

Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。

Podman 可以管理和运行任何符合 OCI(Open Container Initiative)规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像。目前 c8内置了其安装包,安装使用非常方便。

安装: c8中 dnf可以理解为 yum的升级版本。

图片.png

查看版本

图片.png

常用命令:

图片.png

从命令看完全可以理解为DOCKER的升级版本,且都兼容DOCKER常规应用。

实践安装一个数据库容器:

图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

做几个操作加强一下linux的安全性

王宇恒阅读(40)评论(0)

为了防止云服务器被暴力破解,我在网上学习了几个操作。

  1. 更改远程端口号。

  2. 禁止root用户登陆。使用新用户来登陆。

  3. 脚本将频繁登陆失败的ip加入黑名单。(这一步暂时还没学会。。。后期更新)

vim /etc/ssh/sshd_config   命令进入配置文件,修改ssh的端口。这里我犯了一个错误,一开始修改的是ssh.config,后面去搜一下才发现,ssh是客户端的配置,sshd才是作为服务端的配置文件。

image.png

修改完成后,防火墙开放端口,firewall-cmd –add-port=***/tcp –permanent,这里报错了,

image.png

原来我的防火墙一直都没有开启,其实前几次我就应该发现了的,装了软件没开放端口就能用了。

systemctl status firewalld  开启防火墙之后,果然,之前的软件都无法访问了,只能依次添加

image.png

添加完成之后,开放端口列表还是没有,需要重启防火墙。

image.png

接下来是禁止root用户登录,首先创建新用户。修改权限

image.png

image.png

此时断开重连,已经连不上了。

常见的Deadlock found when trying to get lock汇总及规避方法

jwenshan阅读(61)评论(0)

图片.png

图片.png

图片.png

常见的死锁场景:
至少2个client(A,B)同时在执行事务,clientA锁定了某一行,未提交事务,此时clientB也需要update/delete这一行,此时clientB就会进入等待状态,直到出现Deadlock 。

在事务中用for循环更新一张表,这张表中有主键和二级索引,更新就是以二级索引为条件,这时候,因为for循环里面执行的循序不一定,所以有可能导致死锁

如何减少死锁的发生?
1)事务操作锁定的行数较少(更精确的索引条件)。
2)保证事务较短的执行时间,完成后马上提交。

3)优化索引结构,采用组合索引规避。

官方相关BUG介绍:https://bugs.mysql.com/bug.php?id=77209

nginx——负载均衡的实现

王宇恒阅读(39)评论(0)

首先,我并没有在服务器上装Tomcat,而是想偷个懒,用发布静态网页的方法,发布两个静态网页,来测试负载均衡。修改config之前先备份。接着添加命令如图

image.png

但是现在有个问题就是,我可以配置端口转发到这个域名,但是,9100和9200两个端口,是没有发布网页的,所以还要在配置文件添加两个server。

image.png

在80端口配置转发

image.png

重启nginx

image.png

测试结果:不停的刷新页面,三次9100页面,一次9200页面

image.png

image.png

由于weight比是3:1,所以正确实现。

接上回——Nginx安装成功后,软件的启动与静态网页的部署

王宇恒阅读(71)评论(0)

在软件安装成功后,启动软件命令很多种,但是大致意思都是【指定安装位置  -c  指定配置文件】,如下图可见已成功启动。

image.png

此时,已经成功启动,通过访问IP地址可以看到Nginx的一个欢迎页面,需要注意的是,这个访问通过80端口,阿里云里面还是需要去添加入站规则,到现在为止我的云服务器已经有两条规则了,一条是激活服务器的1688,一条是现在的80,都没有限制ip,也不知道安不安全。不过我们这次主要是为了学习,其他的以后再说。

image.png

首先上场一个简单的网页文件到服务器

image.png

开始配置文件

image.png

在配置文件中,我们可以看到有一个server:80是启动的,也就是我们的默认页面,欢迎界面。在下图中,我注释掉了原来的语句,添加语句更换了默认的网页路径和文件名。

image.png

修改完成后,重启软件,先关闭,如下操作

image.png

启动软件是配置文件报错了,仔细一看发现少个标点符号,

image.png

改正后重启成功。访问ip可看到网页已改变

image.png

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机