iptables,netfilter,firewalld关系


在centos6上,我们用的是iptables服务,而在centos7上,我们用的是firewalld服务。同样的,centos6上安装的是iptables包,而centos7上安装的是firewalld包。

不管是centos6还是centos7,核心其实都是netfilter,netfilter是linux的一个内核模块,iptables命令是linux内核自带的。

centos6上的iptables服务和centos7上的firewalld服务,其实都是用来定义防火墙规则功能的防火墙管理工具。它们都是将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能,所以其实在配置规则的思路上是完全一致的。

12期老油条曾经走过的路


04年初中未毕业跟着家人从重庆来到广州,干过工厂,发廊,销售,工地,做过兼职,餐厅,酒吧,网吧等等大大小小很多工作。

11年2月到12年2北大青鸟学习IT,第一次接触到Linux,喜欢上了,但是由于中间各种原因没有包括自己当时没给自己做好规划,没有做到这方面的工作,北大青鸟毕业后,在一家IT公司做了三年的电话客服。

15年4月回去重庆发展,不理想,又想起学习东西,来来回回想了很多,中间各种波折,再次选择Linux,通过网络了解很多选择了铭哥。

15年10月中加了铭哥企鹅,拿到一套视频看了后,觉得很合适初级的人学习,于27日报名。

15年12月中旬开始投简历,说实话,本人比较贪玩,包括12期的同学都知道,shell 我不会,脚本我不会,学完lamp果断投简历开始面试。当时想法就是:从面试中去学习,看看那些公司是怎么招聘,看看他们是怎么出面试题,看看他们面试的问题,看看他们给我们的提问。

可能运气比较好,26日面试到一家监控工程师,试用期4.8,转正5.5。当时没想那么多,元旦后正式开始工作,当时想法是以为真的是zabbix这块,去到后才发现,我的工作范围是:每天看着监控服务器zabbix的报错,过滤掉一些邮件和不关紧要的报警邮件。然后就没有其他事情了。

前面说过,当时我比较贪玩,工作后基本就没怎么学习,导致了后面一系列的事情发生。

我记得很清楚,3月底的时候,因为交接工作的时候没有留意,背了黑锅被辞退。

16年4月再次面试一份外包的实施运维,给电信联通做电子发票系统的工作,长期在电信联通工作。工作很简单,服务器上架,环境部署(部署按照文档来操作就可以),部署好后,等着联通电信测试,有问题就看看,没问题就在电信联通无所事事,在这样的情况下,我误入了企图。

在5月到10月初我走入了网赌的道路,学习更没心态。穷到吃不起饭,交不起房租,到处欠账。看到这里各位希望路要走正,堂堂正正的走。

同年的12月在被逼无奈的情况下,返回广州家人身边重新开始工作。

由于之前将近大半年的时间没有学习,回到广州后,面试路上各种碰灰,只有在写面试卷子时候偷偷看手机,面对面试官,只有选择忽悠,和靠自己的真诚去面试。

在连续一周的面试后,15日去了一家公司,当时面试运维,考卷什么的都还OK,比较简单,结果去到上班后发现运维的工作比较少,真的很少,平时就在办公室打机。

浑浑噩噩的3个月想了很多,我有赌债要还,我以后还要家庭,要还我朋友的人情,不想被人看不起。

2月开始就开始从零开始学习。同时将我的简历修改,去掉一些根本没学习的东西,想来好笑简历中我写的很漂亮,什么reids python 虚拟化等等一些根本没接触到的东西写了一大堆,导致前面面试几家公司有两家说我不真诚。回去后开始修改简历,并咨询我做人事的朋友,取消不会的,写上自己会的,和自己的人生规划。

3月中旬重新投简历,面试了大概5家公司,3家通过,一家因为我初中学习没过,另外两家,都要求我去工作,两家的工资都是6K,试用期4.8。一家在大学城,运维有3个,偏向于数据库方向。另外一家就是目前我正在做的,支付平台,运维只有一个。

谈谈我为什么选择支付平台这家。

当时问过老师,菜菜还有曾伟导,给的意见不一样,然后我又在咨询我以前北大青鸟的同学,终于大家的意见我选择支付平台这家的原因,

1、运维只有我一个,学习的东西更多。

2、当时面试有3个运维,而我是唯一一个经历了认识,总监,老板的,老板比较喜欢我

3、根据第一点我觉得在只有我一个人的情况下,压力越大,学习更多

3月27第一天开始工作,由于第一次,真心第一次做到真正的运维工作,导致交接的工作没做好,说到底就是经验不足,4月前任运维离职后,公司出现的问题很茫然,很多事情不知道怎么弄。在这里要谢谢曾伟导,每次出现问题或者不懂的都很耐心帮我解决。

目前在这家公司,其实我自己会的lamp lnmp完全没什么用,能用到的就是nginx而且还不是很熟悉。老板让我在测试机部署hadoop hive base oracle 生产环境要上django,其实这些我都很茫然,完全不会。

每天在公司除了解决一些简单的问题,检测服务器等,其他的时间就是找各种各样的资料去看,百度,谷歌,问人,加群,什么hadoop,oracle,等等到处去问人,甚至老板要我把一亿条的数据弄到mysql中我都不知道,找DBA朋友,找DBA同学,找python的朋友,仍然花了一天的时间才搞定。

在这里我还没去支付平台这家公司上班的时候,再次报名了22期跟班学习,本想学习一段时间工作,谁知道运气来了工作。导致这期间没怎么跟22期同学一起学习。

目前在这家公司工作了一个月7天的时间,虽然第一个不是我到的,每天我都是最后一个走。在这里我学习到很多,特么是工作中的经验这块,一周等于我自己在家里学的两周。我这人比较懒。要我在家学习可能我是没什么心态的。

但这一个多月的时间让我充实满足,每天晚上我都找资料,做实验,了解原理弄到两三点,早上早早的6 7点就起来去公司。刚刚拍拖的女朋友也分手,因为太忙,但是我觉得值得,因为我有了让我更卖力的工作。在我不会那么多东西的情况下,老板仍然选择我,我想他有他的道理,不能辜负了老板的眼光,所以我付出要比别人多。

作为一个12期的老油条,我写下这么多的原因,我想告诉一些朋友,做运维,你付出的要比平时多,不要因为平时的诱惑而放弃,不懂的就要问,不要怕害羞,问了别人告诉你了,那么是你学到的。既然选择了,那么就要坚持走下去。而我作为一个12期的菜鸟,目前开班到22期,虽然是我自己的原因,但我现在又重新回来了。

面试我觉得不要怂,有就去,从面试中大概知道一些公司的面试情况,即使你这个月面试了这家公司,那么有可能下个月还会收到这家的面试,面试把自己会的多说多吹多忽悠,不会的就要说老实话。不要带有隐瞒的性质。多学多问。学到你是的,看不起是别人的,今天他看不起,明天你给他一耳光。加油

在这里真心谢谢老师,曾伟导,菜菜还有同学们。我会继续努力,曾经我丢下的,我会一步一步的捡起来放回自己的口袋。

目标:2018,10K-15K

MySQL延迟主从复制


世界上没有卖后悔药的,一旦做错了,后悔莫及。我们作为运维,尤其是不小心误删除数据库里的数据时,那更是损失巨大。对于MySQL来说,这里有一种方法,可以避免这种悲剧的发生。

这儿所谓的延迟,并不是经常说的网络延迟,而是我们故意把从库复制的步伐放慢,比如让从库比主库慢30分钟。这样,如果在半小时内发现数据有问题,还能补救。

MySQL 5.6 已经支持延迟复制, 可设置备节点的延迟时间, 延迟复制是有意义的,例如防止主节点数据误删,查看数据库历史状态等。

配置也不难,做完主从后,再加上这句:

CHANGE MASTER TO MASTER_DELAY = N;

这里的N单位是秒,这样从库则会比主库延时N秒。做完之后,在show slave status的时候,就可以看到SQL_Delay的值。

SQL_Delay: xxx

三年出纳工作经验的医学生是怎么做运维的


导读:

2016年12月25号,报名
2017年5月24号,收到 offer
多么完美的半年!!哦不,是 5 个月。

背景介绍:

91年,14年毕业,大学专业是 康复治疗学,主要针对各种功能障碍进行功能恢复训练。

毕业之后,在贸易公司工作,做过网站、google SEO、google Adwords。也做过司机、出纳、财务、跟单,全是跟外贸有关的行当,和计算机没半毛钱关系。

至于为什么学Linux,原因和你一样,问问你自己为什么选择这条路,应该八九不离十。

学习方法:

http://ask.apelearn.com/question/16773 ,这个帖子是当时应铭哥要求给大家分享的我的学习方法,我就不多说了,视频里面特别详细,可以去看看。

视频中没有提及的东西:

1 如果你决定了要换工作,如果条件不算太苛刻,那就辞职,专心看课程,给自己压力,家人也会给你压力,破釜沉舟不是没有道理的。

之前看过一个师兄的帖子,辞职专心学习,老婆和长辈都不理解(有没有孩子不记得了),当然你能想象那时候他的压力,但是工作找到之后,老婆和长辈的那些刁难的话,也就无所谓了,老婆和长辈也都理解了。

2 分享你的笔记,不管有没有人看。未必天天都分享笔记,因为理解程度低,可能两天三天才整理一个笔记,但是一旦整理好,还是要分享的。
我分享笔记的初衷很简单,我要盖楼,我要刷屏,整个页面都是你的帖子,不是很爽的事情吗??说白了就是嘚瑟!

3 回复专帖,无论有没有学习!最长记录是连续 71 天,再嘚瑟一下

复习方法:

1 学完之后,自己回顾整理一下每个知识点自己掌握的情况,跟铭哥沟通一下,计划下一步怎么复习,哪些是重点,哪些不是重点。

2 结合笔记再操作一下,听大师兄的建议,有必要可以把笔记重新整理归档一下。

3 扩展部分,不要死磕,特别是你本身没有计算机基础,大牛除外。

4 结合面试宝典复习,里面都是面试官出的题目,同学们一点一滴整理来的。

5 有必要,能画图就画图,一图剩千言

找工作经过

简历写好之后,我的计划是一天投三份简历,不多投,看看招聘要求里面的东西,是不是你都知道(招聘内容里面设计的知识点大部分是你知道的或者见过就可以,无需全部精通)。

如果合适,就把简历投过去,发完三份,就继续去做面试宝典,继续按照你的复习计划去复习。

可能是我比较幸运,5.22 号投的简历,中午接到面试通知,约我下去去面试,我推到了明天去,给自己时间针对公司招聘要求里面的内容复习巩固一下。

另外两家,一家直接拒绝了我的简历(app上拒绝的),还一家过了两天都没回复我。

23 号去面试,整理发型,衣服,喷喷香水( six god ),约的10:30面试,我担心迟到,提取45分钟到了,在楼底下继续复习,继续背资料,还剩10分钟的时候上去的。

说真的,我是真的比较幸运,没有笔试,直接面试(估计是看了我的博客,因为之前有同学说过,看了他的博客直接约面试,免笔试),面试官也没问我特别专业的问题,主要针对个人的职业发展方向聊了聊。

还有就是问我对目前行业的看法,我哪有什么看法,门外汉一个,问我对 php 了解多少,,内心OS:玩我呢!!实际回答:“这个真不了解,您也清楚我没计算机基础,不能骗您,咱实事求是”

后来人事过来聊,那就轻松了,没啥技术性的东西,聊的轻松。临走的时候告诉我第二天回通知结果,我问了一句如果没通过是不是也会通知,人事很爽快,说也会通知。

24号,也就是今天,其实我今天一天没有投简历,也没有复习任何资料,心里惦记着昨天的公司是不是能入职,一点复习的心思都没有,玩了一天的游戏,真的,一点都不想复习,不思进取,就想玩一天游戏,啥也不干!!!

计划是今天颓废一天,让自己有罪恶感,第二天继续努力奋斗。午觉睡醒,两点60分,我有点憋不住了,编辑了短信,想咨询一下有没有通过,因为说好的第二天给回复,为啥都快下班了,还不回复我!!!

短信已经编辑好,每个字都斟酌了一遍,不能没礼貌,不能显得自己特别着急,不能这么没耐性!!!ok,就这样了,发送 ……. 就是这么巧,还没点发送,就来电话了!!!O(∩_∩)O~,。

通话内容简单点,后天入职,底薪7k,试用期3个月,试用期工资6k…………,我没工作经验,没计算机基础,给我这个机会,为何不去!!!说来也巧,五点左右,收到另一家的 hr 的面试邀请,我拒绝了,拒绝的好有底气的,哈哈哈哈哈哈哈

1 包装简历,有工作经验的自然不用说,没工作经验的,又不是计算机专业的,写好之后发给铭哥看看,会给你指导性的意见。多改几遍。

2 简历模板可以去搜五百丁,9 块钱买几个模板,看上去舒服点。PS:别来找我要模板,我也是花钱买的。

3 多下载一些app,搜索 招聘即可

困惑

其实复习的时候真的特别郁闷,心里没底,我一个什么基础都没的,学了半年不到能不能找到工作啊,知识点都不牢靠,IDC 机房都没见过,万一搞砸了咋办,万一被同事鄙视咋办,万一搞了一两个月就被辞退了咋办,辞退了就没工资了,养不活自己,没办法娶媳妇,没孩子,不能让孩子上清华北大,不能不能走向人生巅峰赢取白富美咋办???

咋办,凉拌,硬着头皮走下去!!!没人能开导你,除了你自己。这点困难都克服不了,怎么做隔壁老王,哦不,是热心市民王先生。

做一年运维后


从去年的3月份进入现在的公司,我已经干了一年多了,在这一年多里,我学习到了许多的东西,不过最珍贵还是宝贵的线上运维的经验,我现在也是一名有着实操经验的运维了。

不过慢慢也遇到一些瓶颈,想着换一个工作环境。而且也有一个原因,就是过了一年了,涨薪的事情好像被他们遗忘了一样,都没有提及。这个就更加促使我换工作了。

今年过来,一直都有筹划找工作,断断续续在苏州面试了几家,都不太好,不是我看不上他,就是他无法达到我要求的薪资,总是一对矛盾。

后来,我找铭哥聊了聊,铭哥的建议是直接去上海吧,苏州毕竟是二线城市,上海不同,机会多,待遇也高。考虑再三,决定去上海。

经过一轮又一轮的投简历,等面试。终于有两次面试的邀请,准备了下,去上海面试去。

第一家是蚁城,是一家提供商城解决方案的公司。环境还不错。一面是技术组长,总体来说我表现还不错。

其中一个问题是,有三台web机器,开发只部署了其中一台机器,如何把将代码同步到剩余的web机器上。我的回答是使用rsync 的后台方式,或者ssh 密钥建立三台web机器的信任关系。

接着问我说,还有其他的方式么,我想了下,又给出一个方案,将开发部署的web机器的代码目录通过NFS共享出来,其他的两台机器来挂载。但是,技术组长对这两种方案,好像都不是太满意。

ps:其实,咱们课程里面的有很多解决方案,比如你可以讲铭哥讲过的shell项目《分发系统》,也可以说通过自动化运维工具(salt或者ansible),当然还可以说第三阶段的课程jenkins。

快要结束一面的时候,我问了他一个问题,如果有三台tomcat机器,用户的session如何共享?

他给我的答案是使用阿里云的load balance的session 会话粘连,我又接着问,如果是自己搭建呢,他回答说,可以使用nginx的IP-hash功能,固定的IP会链接到固定的tomcat机器上。

我说这个方案有一个缺点,会导致其中一台tomcat机器负载比较高,因为现有网络的公网IP大都是公用的。

最后,我提了一个方案是,可以使用memcached搭建一个session共享存储层,将三台tomcat机器的session都存储在这个共享层中,而且memcached是nosql,容易横向扩展。

接着就是二面了,是cto来面试的,cto比较nice,先问了对LNMP的架构熟悉么,我心里就在偷笑了,在铭哥的课程里,讲的非常细,我自己在面试前也复习过,所以根本不是问题。这家公司的offer我拿到了,但是因为有更好的选择,我没有选择这家公司。

第二家公司主要是做云计算以及大数据的解决方案的。我面试的部门主要是做大数据,负责给咪咕视频提供大数据的解决方案。但是这家公司会比较特别,三面都是电话面试。

一面是一位来自总部的资深工程师给我面试的,电话聊了1个小时左右,就是聊一些技术,mysql的高可用,redis的高可用,nginx, openresty, django 聊了许多,因为时间比较久了,我也不记得问了我什么问题。但是聊完之后,让我做了一个线下题,以下是线下题:

1. 编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。

2. 给定一个正整数数组,前半段非递减、后半段非递增,要求从小到大不重复打印数字。给定时间复杂度O(n),空间复杂度O(1)

input: Array={1,2,2,3,5,4,2} output: 1 2 3 4 5
input: Array={1,2,2,2} output: 1 2
input: Array={5,3,2,2,2,1} output: 1 2 3 5
input: Array={1,1,1,1,1} output: 1
input: Array={1,2,1} output: 1 2

第一题,我很快就解决了,不过,这第二题,可是把我难坏了。在网上找了许多资料,终于是搞定了。

之后是第二面,第二面也是一位总部的一位资深的工程师。我们主要聊了发布方面的事情,了解什么是灰度发布么?

我的答案是灰度发布就是正式发布生产前,新建一个生产环境,把新的代码部署到新的生产环境,然后通过前面的负载均衡把现有生产环境的一部分流量倒入到新的生产环境,防止新版本的代码出现大的bug导致用户都无法正常使用。

最后是第三面,第三面的面试官是上海的技术总监。他和我说,因为前面已经有两位工程师和你聊过了,那我们就聊聊一些技术上面的细节。

1 生产服务器的磁盘快要满了,你上线查看磁盘使用量,发现了有一个大的log文件,你将这个文件删除了,之后发现文件系统并没有释放这部分空间,是什么原因?

我的答案是,使用这个文件的进程并没有结束,基于Linux系统的特性,被进程占用的文件是不会被释放的,可以使用lsof | grep deleted 来查看有那些文件已经被删除,但是没有被释放的。

解决这个问题的方法有 (1) 结束掉该进程,(2) 如果这个进程不能被结束的话,可以给这个进程发送一个日志轮转的信号。

2 现在有一复杂的分布式系统,他们之间通过api调用去相互联系,A -> B , B->C and D , 这样的系统,让你来选型监控系统,你会选择什么?

我的答案是可以选择prometheus来监控这样的复杂分布式系统。

3 现在研发说线上的服务器卡,你会通过什么方式去排查这种问题?

(1). 我会使用w, top , free,vmstat 查看Linux系统的负载,CPU, 内存,是否存在瓶颈。

(2). 我会使用iostat , iotop 查看磁盘的IO 是否存在瓶颈。

(3). 我会使用sar -n DEV 来分析网络带宽方面是不是存在瓶颈,带宽是不是不够了等原因。

三面结束了,我也顺利拿到offer , 我最终选择去后面这家,不仅仅是因为他们给我13k的薪资,同时也是因为如果我去这里,在技术领域会有更好的发展。

好了,说了这么多,这次的求职分享到这里就该结束了。谢谢!

正则表达式非贪婪匹配


我们学习正则时,用到过贪婪匹配.*
其实,还有一个相对的概念,叫做非贪婪匹配。

如:str=”abcaxc”
  p=”a.*c”
  
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc。
  
非贪婪匹配:就是匹配到结果就好,最少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(a.*c)。

shell中如何区分两种模式?

默认是贪婪模式;
在量词后面直接加上一个问号?就是非贪婪模式。

常用的量词有:

{m,n}: m到n个
*: 任意多个
+: 一个到多个
?: 0或一个

示例:

str=”123abc0axc456″
echo $str|grep ‘a.*c’
结果: 123abc0axc456

echo $str|grep -P ‘a.*?c’
结果: 123abc0axc456


elastic stack 使用redis作为日志缓冲


直接上步骤:

1、首先建立一个配置文件,将output的数据写到redis中,而不是ES了。配置文件示例:

input {
    stdin { }
}
output {
    redis {
        host => "192.168.1.100"  #redis服务器地址
        port => "6379"  #redis服务端口
        db => "5"  #使用redis第五个库,用其他库也可以
        data_type => "list"  #用list类型
        key => "demo"  #存储的key名,可自定义自己喜欢的
    }
}

 

2、指定配置文件然后运行Logstash,然后我们在标准输入中随便写点什么东西,这个时候输入的数据都会提交到redis中。登录redis后使用info命令可以查看keyspace相关信息,可以看到db5的keys数量有了变化,我们切换到db5再来看看

select 5
keys *

 

3、通过keys *命令可以看到有了一个key叫做demo,这个就是配置文件里设置的key名,使用LLEN demo可以看到该key的长度,input如果输入了100行,那么这个key就应该有100行

4、再次建立一个配置文件,这次input是从第一步里的redis里读取数据,然后output到ES中

input {
    redis {
        host => "192.168.1.100"  
        port => "6379"  
        db => "5"  
        data_type => "list"
        key => "demo" 
    }
}
output {
    elasticsearch {
        hosts => ["192.168.0.100:9200"]
        index => "redis-demo-%{+YYYY.MM.dd}"
    }
}

 

5、运行该配置文件后去redis看看,之前的队列因为被output到了ES中,所以队列会消失掉或者是迅速减少长度

下面是一个改造后的配置文件,更符合实际需求

input {
    file {
        path => "/var/log/messages"
        type => "system"
}
output {
    if [type] == "system" {
        redis {
          host => "192.168.1.100"
          port => "6379"
          db => "5" 
          data_type => "list" 
          key => "system"
    }
}

shell习题-自定义rm


linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做练习:

1. 简单

假设有一个大的分区/data/,每次删除文件或者目录之前,都要先在/data/下面创建一个隐藏目录,以日期/时间命名,比如/data/.201703271012/,然后把所有删除的文件同步到该目录下面,可以使用rsync -R 把文件路径一同同步

2. 复杂

不知道哪个分区有剩余空间,在删除之前先计算要删除的文件或者目录大小,然后对比系统的磁盘空间,如果够则按照上面的规则创建隐藏目录,并备份,如果没有足够空间,要提醒用户没有足够的空间备份并提示是否放弃备份,如果用户选择y,则直接删除文件或者目录,如果选择n,则提示未删除,然后退出脚本。

 

参考答案:

1.  简单
#!/bin/bash
filename=$1
d=`date +%Y%m%d%H%M`
read -p “Are U sure delete the file or directory $1? y|n: ” c
if [ $c == “y” ] || [ $c == “Y” ]
then
    mkdir /data/.$d
    rsync -aR $1/ /data/.$d/$1/
    /bin/rm -rf $1
elif [ $c == “n” ] || [ $c == “N” ]
then
    exit 0
else
    echo “Please input ‘y’ or ‘n’.”
fi
2.  复杂
#!/bin/bash
filename=$1
d=`date +%Y%m%d%H%M`
f_size=`du -sk $1|awk ‘{print $1}’`
disk_size=`LANG=en; df -k |grep -vi filesystem|awk ‘{print $4}’ |sort -n |tail -n1`
big_filesystem=`LANG=en; df -k |grep -vi filesystem |sort -n -k4 |tail -n1 |awk ‘{print $NF}’`
if [ $f_size -lt $disk_size ]
then
    read -p “Are U sure delete the file or directory: $1? y|n: ” c
    if [ $c == “y” ] || [ $c == “Y” ]
    then
        mkdir -p $big_filesystem/.$d && rsync -aR $1 $big_filesystem/.$d/ && /bin/rm -rf $1
    elif [ $c == “n” ] || [ $c == “N” ]
    then
        exit 0
    else
        echo “Please input ‘y’ or ‘n’.”
    fi
else
    echo “The disk size is not enough to backup the files $1.”
    read -p “Do you want to delete “$1″? y|n: ” c
    if [ $c == “y” ] || [ $c == “Y” ]
    then
        echo “It will delete “$1″ after 5 seconds whitout backup.”
        for i in `seq 1 5`; do echo -ne “.”; sleep 1;done
    echo
        /bin/rm -rf $1
    elif [ $c == “n” ] || [ $c == “N” ]
    then
        echo “It will not delete $1.”
        exit 0
    else
        echo “Please input ‘y’ or ‘n’.”
    fi
fi

shell习题-转换字符串


请把下面的字符串:

zhangsan

y97JbzPru

lisi

5JhvCls6q

xiaowang

Nnr8qt2Ma

laoma

iqMtvC02y

zhaosi

9fxrb4sJD

改为如下:

zhangsan:y97JbzPru

lisi:5JhvCls6q

xiaowang:Nnr8qt2Ma

laoma:iqMtvC02y

zhaosi:9fxrb4sJD

 

参考答案:

sed 'N;s/\n/:/g'  filename

java程序员学习linux的感受


作者:23期陈旭

“哇 Linux系统操作起来怎么这么麻烦的!”,这是我第一次成功安装最小化CentOS7系统,初体验后的感叹(手动滑稽)。那时候我还没有报名猿课,仅仅是看着鸟哥的书和百度到的教程安装的。

因为我是学Java的,所以自然安装好后第一件事情就是安装JDK,那时候还不知道有远程终端这么个神器。所以下载JDK安装包的时候,只能在虚拟机里一点点地把那一长串的下载地址给敲进去。

两小时过后终于折腾完毕,于是开头的第一句话,就是这时候说出来的。在这之后就想着需要系统地从基础开始学习一下Linux,于是乎就抱着广为流传的“鸟哥的Linux私房菜”吃了起来,真的很厚很多字而且还是从最基本的硬件开始讲起,个人感受啃这一段跟啃砖头一样难啃和无趣(并没有黑这本书的意思,后面章节写的还是很不错的)。

由于啃书进度太慢,而且书上都是CentOS5的版本,也算是有点老旧了,所以就去网络上找一些视频教程看。在腾讯课堂上看到阿铭老师的课程视频,试听了两节后感觉还不错,然后就去咨询报名事宜,接着我就成为了23期2班的一员。

刚开始感觉阿铭老师挺严格的,学习安排也很有计划性,像笔记、专贴的格式、规则也挺多,后来习惯之后就好了很多,而且这样有严格的要求也让我养成了一些好习惯,学习上也不敢怠惰,如果不是听阿铭老师介绍,我还不知道那么多辅助工具的使用和拥有一个自己的技术博客。

到现在学到第二阶段,终于没有之前那么菜了,学到现在的感受就是阿铭老师的授课方式适合初学者,每个视频都不超过二十分钟,把每个知识点都分作一个个模块去讲解,而且讲解的过程中还能屏蔽一些暂时没必要深入的知识点,因为对于初学者来说附带这些知识点只会增加压力。

在扩展方面也为我们收集了很多资料,每天公众号上面都有shell的练习题,并且还有个考试平台,让我们能去测试自己的水平分数。

相信每一期的同学都有经常听到阿铭老师强调笔记的重要性,在这里我也要喊一下:笔记真的要记得详细!笔记真的要记得详细!笔记真的要记得详细!重要的事情说三遍。当你认真并把笔记做详细了,把出现的错误总结、记录起来了,有时候真的比练习还重要。

当学完一个阶段去复习时效率上要高很多,出错的时候也能从笔记中找到解决的办法。除此之外搜索引擎也很重要,我学习过程中遇到的许多错误都是在网络上找到解决办法的,出现问题后先自己尝试着去解决,相信这一点也不需要多说了。

除以上两点外就是练习,但是练习不要死记硬背命令,而是去理解命令的用法和技巧,记住技巧和理解命令最重要,死记硬背就像只懂得吃,不懂得消化一样。命令单词在日常中使用多了就自然而然的记下了,即便是一些冷僻的命令,你已经理解了它的用法的话,你只需要瞄一遍就又掌握了。

以上就是我学习过程中的一些心得和感受,在下是没读过书的人文笔不好辞藻不华丽,希望大家多多指教不要打脸。