GNU sed

容器与Docker

一世执手 提交于 2020-11-25 14:50:12
容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。Docker是第一个使容器能在不同机器之间移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。 容器和虚拟机具有相似的资源隔离和分配方式,容器虚拟化了操作系统而不是硬件,更加便携和高效。 图1 容器 vs 虚拟机 相比于使用虚拟机,容器有如下优点: 更高效的利用系统资源 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,容器对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。 更快速的启动时间 传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间,大大节约了开发、测试、部署的时间。 一致的运行环境 开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些问题并未在开发过程中被发现。而Docker的镜像提供了除内核外完整的运行时环境

Linux中执行 .sh 的方法

泄露秘密 提交于 2020-11-25 02:50:12
linux下执行.sh文件的方法 .sh文件就是文本文件,如果要执行,需要使用chmod a+x xxx.sh来给可执行权限。 是bash脚本么 可以用touch test.sh #创建test.sh文件 vi test.sh #编辑test.sh文件 加入内容 #!/bin/bash mkdir test 保存退出。 chmod a+x test.sh #给test.sh可执行权限 如test,sh文件在 /home/work文件下 执行 方法一 本身目录下运行 进入 cd /home/workwen文件下 执行 ./test.sh 命令会在当前目录下创建一个“test”目录。 方法二 绝对路劲运行 执行 /home/work/test.sh 方法三 本身目录下运行 sh test.sh 最后建议:使用 C代码 1.man sh man sh 来看看sh 的介绍~ Linux.sh语法 介绍: 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编写脚本完成时,如果要执行该脚本,还必须使其可执行。 要使编写脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 注释 在进行shell编程时,以#开头的句子表示注释

一个fully retryable的rootbuild packer脚本,从0打造matecloudos(3):以lfs9观点看compiletc tools in advance

﹥>﹥吖頭↗ 提交于 2020-11-25 00:57:10
本文关键字:shell中的数组作为参数传递且带下标,bash 数组作为变量,bash 数组作为环境变量,bash中的以及多层单双引号转义处理,bash中Shell嵌套中的$转义处理, chrooted shell $ escape 在《一个fully retryable的rootbuild packer脚本,从0打造matecloudos(2)》中,我们见到了一种用数组化命令字符串和统一compiletarget()的的方式来构建lfs9的compiletc11基础部分,在那文的结尾,我们提到,为了清晰化这种布局,我们把那个大数组放到了前面,把common部分也作为bash module,这样主脚本文件的后面是逻辑主体,很短小很清晰,我们还提到,利用export可以将上层shell的processtable带入到下层shell,这就是本文要讲到的chroot环境和通过``,$()等命令替换,甚至bash -c ""等方式开启的子shell环境。 怎么在上下级shell间传递一个大大的命令数组?为什么要这样做? 因为bash中,主从shell间的变量是主shell的变量能传到子shell,且数组不是一级公民,不能直接传递,也不好通过传递${arr[@]}的方式进行(因为如果这样,在子shell中还要重新组装一次为新数组),所以我们在主shell中,把数组先设为一个大大的字符串

s33 cobbler自动化安装系统

谁都会走 提交于 2020-11-23 09:01:24
1. Cobbler介绍 参考链接:http://blog.oldboyedu.com/autoinstall-cobbler/ Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。 Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。 Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。 Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。 Cobbler官网 1.1 Cobbler集成的服务 PXE服务支持 DHCP服务管理 DNS服务管理(可选bind,dnsmasq) 电源管理 Kickstart服务支持 YUM仓库管理 TFTP(PXE启动时需要) Apache(提供kickstart的安装源,并提供定制化的kickstart配置) 注意: 虚拟机网卡采用NAT模式,不要使用桥接模式,因为稍后我们会搭建DHCP服务器,在同一局域网多个DHCP服务会有冲突。 VMware的NAT模式的dhcp服务也关闭,避免干扰。 1.2-cobbler环境准备与部署 [root

Linux sed command

为君一笑 提交于 2020-11-22 06:59:39
概述 sed 是一种在线非交互式编辑器,它一次处理一行内容。 处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space)。 接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。 Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等 参数选项 sed [选项] [动作] 选项与参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e :直接在命令列模式上进行 sed 的动作编辑; -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作; -r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法) -i :直接修改读取的文件内容,而不是输出到终端。 function: a :新增行, a 的后面可以是字串,而这些字串会在新的一行出现(目前的下一行) c :取代行, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行 d :删除行,因为是删除,所以 d 后面通常不接任何参数,直接删除地址表示的行; i :插入行, i 的后面可以接字串,而这些字串会在新的一行出现

linux的sed(增删改查)使用方法

笑着哭i 提交于 2020-11-22 03:35:08
sed的增删改查的基本操作 参考: https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:( 这些操作都是在内存中进行的,所以不会 被写入到原文件中,如果需要修改原文件则需要用大 -i )   eg:修改原文件的内容。为了防止修改配置文件,一定要实现辈分或则用测试文件测试 sed -i ' 2a ppppppp ' test.txt # 在第二行之后添加数据,并写入到原文件 “a”:追加文本到指定行后,记忆方法:a的全拼是append,意思是追加。 “i“:插入文本到指定行前,记忆方法:i的全拼是insert,意思是插入。 [root@tom / ]# cat test.txt xxxxxxxxxxxx mmmmmmmmmmmm hhhhhhhhh [root@tom /]# sed ' 2a ppppppp ' test.txt #2a 代表在第二行之后进行 添加 操作 xxxxxxxxxxxx mmmmmmmmmmmm #新增的内容 ppppppp hhhhhhhhh [root@tom /]# sed ' 2i 9999 ' test.txt     #2i 代表在第二行之前进行 插入 操作 xxxxxxxxxxxx 9999        #新插入的内容 mmmmmmmmmmmm hhhhhhhhh

Linux教程《Linux指令入门-文本处理》-阿里云体验实验室

两盒软妹~` 提交于 2020-11-21 14:44:54
体验平台简介 阿里云开发者实验室提供免费云资源和丰富的场景化实践,旨在帮助开发者在学习应用技术,了解阿里云产品的特性。 阿里云体验实验室地址: https://developer.aliyun.com/adc/labs/ 教程介绍 本文将介绍如何使用Linux系统中的文本编辑工具Vim以及文本处理命令。 场景体验 场景内容选自 阿里云体验实验室 本场景将提供一台配置了Aliyun Linux 2的ECS实例(云服务器)。您可以参考本教程学习Linux系统中的文本编辑工具Vim以及文本处理命令。 阿里云 Aliyun Linux 2的ECS实例资源 : https://developer.aliyun.com/adc/scenario/aced2264751f4866a8340de4cf9db0fa 涉及以下云产品和服务 [云服务器ECS] 云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。 [Aliyun Linux 2]

linux sed

 ̄綄美尐妖づ 提交于 2020-11-21 09:30:42
1 sed -p 打印文本: sed -n 'p' test.txt 如果不加-n,则每行都重复。 定位一行: [root@iZryxshkbkz2x2Z ~]# sed -n '5p' test.txt ddddddd root dafdadf 也可以用正则匹配( 使用正则时一定要用// 把正则表达式包裹起来 ): root@iZryxshkbkz2x2Z ~]# nl test.txt | sed -n '/\(ddddddddd\)\+/p' dddddddddddrootfdaxcmkadfakdsmflakd 定位多行: root@iZryxshkbkz2x2Z ~]# nl test.txt | sed -n '2,4p' 2 dddddddddddrootfdaxcmkadfakdsmflakd 3 testfkdlkfaldkfl;akccccccccccccccccdadfac 4 fdafacdfadsssssssssfdasfasfroot 用正则实现:不知道为啥不行,明天看看 取反:使用! [root@iZryxshkbkz2x2Z ~]# nl test.txt | sed -n '2,4!p' 1 root 122222222222 dddddddaaa 5 ddddddd root dafdadf 行间隔: first~step : 错误理解:

Linux系列开坑记(三)-流处理器sed

倾然丶 夕夏残阳落幕 提交于 2020-11-21 08:16:03
今天我们聊一聊Linux 下sed 命令,sed是linux非常强大的命令,可以对数据进行替换,删除,新增等操作。 sed是 stream editor 流处理器简写,使用sed的同学往往需要对正则表达式比较熟悉,因为这样能让sed效果发挥到最好地步,从而得心应手。 下面我简单介绍常用的操作: 替换操作 最简单替换方式: echo "sitin" >> test.txt sed -i 's/sitin/pengtao/g/' test.txt 其中 -i 参数 in-place 对文件进行修改, s 表示替换,g表示整行替换,没有就是第一个 test.txt 这里可以是一个或者多个通过正则匹配 *.txt 所有txt文件 删除操作 sed '2d' test.txt # 删除文件第二行 sed '2,$d' test.txt # 删除文件第二行到最后一行 追加操作 sed '$a test1\ntest2' test.txt # 末尾追加test1,test2 其他例子 通过上面大家可以看到使用sed命令,用的正则表达式较多,所以在这里顺便提一下常用正则表达式的有下面几个: . 表示任何单个字符。 * 表示某个字符出现了 0 次或多次 ^ 表示一行的开头 $ 表示一行的结尾 \s 字符串 [ ] 字符集合,[abc] 这里面的表示匹配所有字符串。 在执行sed操作的时候

正则表达基础命令

放肆的年华 提交于 2020-11-19 17:50:56
  正则表达的基础知识已经在上一节讲过,下面要讲的是正则表达的三个关键命令grep、sed、awk。    1)grep 用于过滤行信息   作用:查找打印找与关键词匹配的行   参数:-n 在输出匹配行及行号一起输出;-v 打印不符合要求的行(取反);-i 不区分大小写;-w 打印完整单词的行;-An 打印符合要求的行以及下面n行;-Bn 打印符合要求的行以及上面n行;-Cn 打印符合要求的行以及上下n行。   [root@centos7 ~]# grep -A2 'halt' /etc/passwd     #把包含halt的行及其下面的两行输出   [root@centos7 ~]# grep -B2 'halt' /etc/passwd     #把包含halt的行及其上面的两行输出   [root@centos7 ~]# grep -C2 'halt' /etc/passwd     #把包含halt的行及其上下各两行输出   [root@centos7 ~]# grep -n 'root' /etc/passwd      #过滤出带有root关键字的行及行号   [root@centos7 ~]# grep -v 'nologin' /etc/passwd     #过滤不带有nologin的行   [root@centos7 ~]# grep '[0-9]'