备份系统的linux运维是必死之路与发展方向,究竟是一体化还是网

做运维也快4年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点。

运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化。如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火)

之前写过运维基础篇,发现对很多人收益挺大,接下来也写下关于这4年多的运维实践经验,从事了2年多游戏运维,1年多安全运维,1年大数据运维,相关行业信息不能算非常精通,但是熟悉和熟练还是相对可以的。

linux运维人员常用工具拓扑详见:

很多地方经常会用到rsync工具,实施几台服务器的同步效果。我们公司就是使用这个工具完成服务器的游戏的服务端和客户端同步,有几个文章例子:

  • rsync 强化技术(手动修改端口开启防火墙的情况下)并且通过脚本只同步需要的服务器

  • 服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如FTP、DNS、SAMBA、邮件, 这几个大概学一下就行,LAMP和LNMP是必须要熟练,我所指的不是光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是Web服务器,所以Nginx和Apache要熟悉,特别是Nginx一定要很熟悉才行,至少有些公司还会用Tomcat,这个也最好学一下。

    其实网络服务方面不用太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯定是编译安装多,那些模块要熟悉一下他的作用,特别是PHP那些模块。


    这面2点只是基础,也是必要条件,不能说是工具,以下才是真正的要掌握的工具。

    • Samba文件共享服务(共享脚本 让你工作更轻松)

    • Linux web服务安装apache 思路 (源码编译,自己定义服务)

    • FTP(持虚拟用户,并且每个虚拟用户可以具有独立的属性配置)

    • Shell脚本和另一个脚本语言,Shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些系统管理脚本,最简单也得写个监控CPU,内存比率的脚本吧,这是最最最基本了,别以为会写那些猜数字和计算什么数的,这些没什么作用,只作学习意义,写系统脚本才是最有意义,而另一个脚本语言是可选的,一般是3P,即Python、Perl和PHP,PHP就不需要考虑了,除非你要做开发,我个人建议学Python会比较好,难实现自动化运维,Perl是文本处理很强大,反正这两个学一个就行了。

      • Shell(一) 入门到复杂 自己做的各种脚本实例与解释

      • Shell(二)入门到复杂 脚本实例(计算器)

      • 这两个工具必须要掌握,同时还要掌握正则表达式,这个就痛苦了,正则是最难学的表达式,但结合到sed和awk中会很强大,在处理文本内容和过滤Web内容时十分有用,不过在学Shell的同时一般会经常结合用到的,所以学第3点就会顺便学第4点。

          防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则,如果学过CCNA的朋友可能会比较好学,因为iptables也有NAT表,原理是一样的,而FILTER表用得最多,反正不学就肯定不合格。

          • 防火墙(一)主机型防火墙

          • 我个人建议,最好学这3个:Cacti,Nagios,Zabbix,企业用得最多应该是Nagios和 Zabbix,反正都学吧,但Nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。

            • 服务器集中检测Cacti

            • 这个很重要,肯定要懂的,但到了公司就不会让你去弄,因为新手基本不让你碰,集群工具有很多,最好学是LVS,这是必学,最好也学Nginx集群、反向代理,还有热备,这个就更多工具能实现了,像我公司是自己开发热备工具的。MySQL热备也要学,就是主从复制,这个要学懂整个流程一点也不容易,只照着做根本没意思。

              • MySQL主从同步,双主同步,如果服务器意外挂机,不同步怎么办

              • MySQL高性能压力测试(总结了好久)

              • Nginx 缓存配置及报错解决

              • 工具有很多,但至少要把RAID的原理弄懂,特别是企业最常用的1+0或0+1,自己做实验也要弄出来,备份工具有很多,如tar、dump,最好多了解一下。

                学会以上10点,应该可以入门了,有些技术会比较难学,例如Apache和Nginx中还有些很重要的技术,如系统调优、服务优化、程序优化,这些在没接触工作前很难学习到的,所以先把这10点学了吧,估计要学熟至少3个月不止,脚本部分会交很吃力了,我建议是先学熟shell,等工作后再学另一门脚本语言,这样会比较好。

                以上就是踏入linux运维工程师需要掌握的工具,还有很多工具要掌握的,但在学习环境中是很难学到,最后我再提醒一下,这里所指的工具相当于技能,而不是像Windows或Ubuntu的图形化工具,还有学linux就别装图形界面,这样虚拟机就不用吃太多内存,而且绝对不建议在真机上装Linux,根本达不到学习效果。

                这部分来自我自己的面试经历和面试别人的经历总结。先附上运维思路拓扑图:

                有些人认为,其实运维就是部署某个软件,设置些基础功能,就算会运维了。

                举个例子:安装LAMP,LNMP,就感觉部署方法我都掌握了。其实网上大多数都有一键安装脚本啥的根本没有啥技术含量,在面试官眼里,这些都不是你的亮点。基本到了公司一般环境架构都是部署好的,很少需要你去变动环境架构。就算你安装好 LNMP 架构你熟悉里面的原理吗?熟悉 Nginx 优化吗?熟悉 MySQL 优化吗?

                再举个例子:我面试遇到的问题,面试官问你既然熟悉 LNMP 架构,那么 Nginx 反向代理的作用。

                你应该不是说出懂这个软件和配置,你尽可能的说怎么优化,怎么深入提高网站性能。

                • 使用反向代理可以理解为7层应用层的负载均衡,使用负载均衡之后可以非常便捷的横向扩展服务器集群,实现集群整体并发能力、抗压能力的提高。

                • 通常反向代理服务器会带有本地 Cache 功能,通过静态资源的 Cache,有效的减少后端服务器所承载的压力,从而提高性能。

                下面说说运维在工作中需要掌握的核心技术。注意,这是在工作中掌握的,在学习中很难掌握。

                • 分析部分程序不能运行或没有按预想结果运行的原因,对程序运行跟踪,查看系统调用的过程。

                • 较深入的系统瓶颈点分析。

                #6458M为真实使用内存  1649M为真实剩余内存(剩余内存+缓存+缓冲器)

                #linux会利用所有的剩余内存作为缓存,所以要保证linux运行速度,就需要保证内存的缓存大小

                • 使用分析系统分析web日志(如逆火软件)

                优化可以说是运维最吃香的技能,基本会优化的运维普遍工资很高,而且优化是要承担风险的,并不是网上搜个文章改一下配置文件或者参数就叫优化了,这样很容易造成宕机。

                优化是根据实际的现场环境硬件各个参数进行部分优化,提高软件性能和网站性能。这个我只能讲半知半解,当时优化MySQL和Tomcat参数也是根据网上文章和官网文档查找参数在虚拟机上测试然后查看性能。

                成本优化,性能优化。这里我给出 Tomcat 优化JVM参数(做过相应测试才放到现场环境的):(记住无监控不调优)

                -标准参数,所有jvm都应该支持

                -X 非标,每个jvm实现都不同

                -XX 不稳定参数,下一版本可能会取消

                运维人员的权限很大,所以一定要保证帐号/私钥的安全。

                • 基于本地存储。切勿用网盘,也不建议用lastpass等

                • 关于任何操作配置,最好先搞明白操作或配置的原理,然后再去操作。应一句话叫做“磨刀不误砍柴功”,而且对于类似的操作可以举一反三。

                  复杂的变更操作比如多台主机以及牵涉到san存储,最好先作 操作计划,写计划文档,详细致每条命令,然后请高手帮忙审核。 这样能最大程度使整个操作过程安全。如果是重要的客户业务系统,操作最好有回退方案,而一旦变更失败,客户可以在短时间内将业务回退。

                  遇到自己认为较特殊的案例时,记得要写案例过程及分析的文档。也方便自己以后翻看,或者和其他兄弟分享,作知识的传播以便于大家以后都能少走弯路。

                  运维来说,监控是非常重要的,监控是发现系统各种异常的眼睛,所以运维应该和监控紧密配合。

                  尽量了解维护的各主机上业务类型,以及各主机业务之间的关联性。因为任何维护工作都是为主机能提供业务服务的,当某业务中断,能最快的知道与此业务相关的主机群,从而缩小故障排查范围,最快定位故障。

                  并不是你技术很牛,学的技术很多很熟,就不代表你不需要运维意识,其实领导很看重运维意识的,例如有没有做好备份、权限分配问题、平台测试情况、故障响应时间等,这些都是意识,而不是你学了很多技术自认大牛了,平台发现故障你又没什么大不子,以为很简单的问题喜欢处理就处理,不需要向其它部门反馈等,领导不是看你的技术如何,而是看你的运维意识如何,你没运维意识,技术再牛也没用,只会让其它部门的人跟你不协调。

                  要知道做IT这行是苦逼的,需要无尽的学习,不学习只会被淘汰,不想被年轻的淘汰,就只能不断增值自己,不然不是你工资无法提升,而是你无法再从事这行。

                  这个世界,在悄悄惩罚不改变的人……

}

51cto论坛的职场版本一直是我喜欢逛的地方,我相信对于论坛来说,无疑是希望论坛置顶的首页全部是正能量鼓舞人心的帖子,但是我仍然相对那些从事其他行业,想转linux运维的朋友来说下真心话,希望对我的帖子能够手下留情。

   LZ有将近8年的工作经验,到今天已经经历了4年互联网公司,2家上

市在中国国内排名前10的手游公司,今天是我提出辞职的一天,我放弃了在公司内部正在转高级I的流程机会,意味着我放弃了月薪固定14K,弹性打卡(全天不要求考勤),每个月1000多块的车补(高级1以上),连续2年的年终奖绩效在B+以上,(至少3.5个月以上),当然我明白这些待遇对于BAT的同学们来说根本不值一提,但是我仍然相对那些看着linux起薪高,入门简单的同学说一句:这个领域我不建议大家尝试!

要对你的预期,5年,10年有长期的规划,我在SF也带过不少新人,很多都是985硕士毕业,每当问道:linux运维薪水最高到底能拿多少这个问题时候,我只有一句回答:任何职位的高薪,一定是社会所承认的价值所在!

     08年到10年,我相信在深圳任何linux运维工资都略高于java开发,这是事实!13年开始,linux运维技术性进行革命性的变更,云计算的出现,

docke容器技术,zabbix监控....各种自动化运维工具,.这些技术在蚕食linux运维朋友们一点点的剩余价值。

   也许有人说:我认识某某,他只做了一年linux运维,就拿到一万,是的,我承认。如果你来我来我们公司我们项目组,只需要半年,半年可以让你成长到在深圳月薪10K的地步,可是没有职业的预期有意义吗?

     这个社会永远是知识的竞争,10年时候,你说出10个以上的apache配置参数,你一定可以被面试官认为是牛人,12年时候人家面试只考nginx了,11年,你可以说出全公司将近100台服务器都是自己用icinga+nagios部署的监控,可是13年以后再去面试,任何创业性公司都会说:监控这块我们都是用zabbix。。。。

    太多的例子已经说明linux运维无法稳定的发展,不要说IT从事的工作要永远学习,我敢说linux下面所有的服务全部精通的人,在这个社会上都找不到几个,你在手游公司精通了tomcat,你来金融公司人家容器是jboss,这仅仅是一个java应用而已!

     linux运维需要的知识面实在太广了,我说这么多没别的意思,我这样的普通人是注定无法到达大神的地步,辞职以后,我已经决定专注python,今年是我满30岁的一年,我放弃了linux领域所有的发展,用8年进行试错,我不能说服任何同学同意我的观点,但是我愿意和大家共勉,2016 ,加油吧!

}

百度贴吧一直是我喜欢逛的地方,我相信对于论坛来说,无疑是希望论坛置顶的首页全部是正能量鼓舞人心的帖子,但是我仍然相对那些从事其他行业,想转linux运维的朋友来说下真心话,希望对我的帖子能够手下留情。

LZ有将近8年的工作经验,到今天已经经历了4年互联网公司,2家上

市在中国国内排名前10的手游公司,今天是我提出辞职的一天,我放弃了在公司内部正在转高级I的流程机会,意味着我放弃了月薪固定14K,弹性打卡(全天不要求考勤),每个月1000多块的车补(高级1以上),连续2年的年终奖绩效在B+以上,(至少3.5个月以上),当然我明白这些待遇对于BAT的同学们来说根本不值一提,但是我仍然相对那些看着linux起薪高,入门简单的同学说一句:这个领域我不建议大家尝试!

首先,我必须强调从事linux运维和学习linux知识是根本两回事,假设你,那

要对你的预期,5年,10年有长期的规划,我在SF也带过不少新人,很多都是985硕士毕业,每当问道:linux运维薪水最高到底能拿多少这个问题时候,我只有一句回答:任何职位的高薪,一定是社会所承认的价值所在!

08年到10年,我相信在深圳任何linux运维工资都略高于java开发,这是事实!13年开始,linux运维技术性进行革命性的变更,云计算的出现,

docke容器技术,zabbix监控....各种自动化运维工具,.这些技术在蚕食linux运维朋友们一点点的剩余价值。

也许有人说:我认识某某,他只做了一年linux运维,就拿到一万,是的,我承认。如果你来我来我们公司我们项目组,只需要半年,半年可以让你成长到在深圳月薪10K的地步,可是没有职业的预期有意义吗?

这个社会永远是知识的竞争,10年时候,你说出10个以上的apache配置参数,你一定可以被面试官认为是牛人,12年时候人家面试只考nginx了,11年,你可以说出全公司将近100台服务器都是自己用icinga+nagios部署的监控,可是13年以后再去面试,任何创业性公司都会说:监控这块我们都是用zabbix。。。。

太多的例子已经说明linux运维无法稳定的发展,不要说IT从事的工作要永远学习,我敢说linux下面所有的服务全部精通的人,在这个社会上都找不到几个,你在手游公司精通了tomcat,你来金融公司人家容器是jboss,这仅仅是一个java应用而已!

linux运维需要的知识面实在太广了,我说这么多没别的意思,我这样的普通人是注定无法到达大神的地步,辞职以后,我已经决定专注python,今年是我满30岁的一年,我放弃了linux领域所有的发展,用8年进行试错,我不能说服任何同学同意我的观点,但是我愿意和大家共勉,2016 ,加油吧!

}

Linux系统上命令的使用格式:命令[选项] [参数]

[选项]:用于启用或关闭命令的某个或某些功能;

短选项:-+一个字符, 例如:-l, -h;多个短选项可合并使用,例如-l -h, 可写作-lh;如何不合并,要使用空白字符隔开。

长选项:–word, 例如:–long,–human-readable;多个长选项不可以合并使用。

[参数]:命令的作用对象,向命令提供数据;多参数应该使用空白字符分隔。

* ifconfig命令:用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。

命令格式:ifconfig [网络设备] [参数] -a 显示全部接口信息

* echo命令:是在显示器上显示一段文字,一般起到一个提示的作用。

命令格式:命令格式: echo(选项)(参数)

利用echo命令查看当前使用的shell

* tty命令:查看当前对应的终端设备。

* startx命令:用来启动图形化操作界面。

* export命令:用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。

-f:代表[变量名称]中为函数名称;

-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中;

-p:列出所有的shell赋予程序的环境变量。

* Pwd命令:以绝对路径的方式显示用户当前工作目录。

* history命令:用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。

-a: 追加本次会话新执行的命令历史列表至历史文件中;

-d: 删除历史中指定的命令;

-c: 清空命令历史;

* shutdown命令:安全地将系统关机。

[-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。

[-r] 重启计算器。

[-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。

[-h] 关机后关闭电源〔halt〕。

[-n] 不用init﹐而是自己来关机。不鼓励使用这个选项﹐而且该选项所产生的后果往往不总是你所预期得到的。

[-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数﹐但是可以输入一个用来解释的讯息﹐而这信息将会送到每位使用者。

* poweroff命令:关机命令,poweroff在关闭计算机操作系统之后,最后还会发送ACPI指令,通知电源,最后切断电源供应。

* reboot命令:重新启动计算机。

-d  重新启动时不把数据写入记录文件/var/tmp/wtmp。本参数具有”-n”参数的效果。

-f  强制重新启动,不调用shutdown指令的功能。

-i  在重新启动之前,先关闭所有网络界面。

-n  重新启动之前不检查是否有未结束的程序。

-w  仅做测试,并不真的将系统重新启动,只会把重新启动的数据写入/var/log目录下的wtmp记录文件。

* hwclock命令:是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。

#hwclock -w 硬件时间与系统时间进行同步

* date命令:是显示或设置系统时间与日期。

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;

-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;

–help:在线帮助;

–version:显示版本信息。

%Z 显示时区,日期域(CST)

%w 一个星期的第几天(0代表星期天)

%d 一个月的第几天(01~31)

%W 一年的第几个星期(00~53,星期一为第一天)

%y 年的最后两个数字(1999则是99)

}

我要回帖

更多关于 linux运维是必死之路 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信