学习Linux难吗

如题所述

Linux是学习曲线比较陡峭的学科,刚开始学习有些难度 ,入门后就相对比较轻松了。学习Linux大部分做的是运维工程师或者云计算工程师。
运维不仅仅是懂Linux就行,因为还有一大部分的Windows运维,最近看一个报道说,windows的服务器占了47.71%。嗯,向windows运维人员致敬。当然我们这篇文章不是说运维除了懂Linux,还要懂Windows,而是涉及运维的其他方方面面。
环境部署
一开始这个世界是开发的,然后才是运维的。
开发实现产品逻辑,将产品开发完成后,然后提交运维进行部署。此时允许就需要准备好部署环境,如部署在Linux服务器上,安装相应的软件,如Apache、Nginx、tomcat、JDK、PHP、MySQL等等。你不能只装了软件吧,还需要看看具体是哪个版本,java 7 和java 8 的差别还是有点的,php5和php7也有些语法不兼容。把软件都安装好了,就可以上线了?还是不行。还需要测试吧,那就还需要部署一套测试环境。有些时候,开发环境也是需要运维来部署的。
排错和调优
事情从来都没有一帆风顺的。

上线没多久,服务就502了,还不被老板骂死。尽管你有一肚子的委屈,我只是个运维,代码不是我写的,为什么要我来背这锅?!委屈归委屈,服务访问不了了,就是运维的事。尽快定位问题,解决问题才是王道。怎么来定位问题呢?最简单直接的办法就是看日志,看系统日志,看软件相关的日志,结合故障现象和经验,快速的进行定位和恢复。然后就是总结经验,吸取教训,写事故报告。OK,现在你知道,需要对系统环境需要进行一定的调优操作,不再做背锅侠。
相关技术: top, vmstat, iftop, awk, sed, sar, iostat, strace, ...
备份
做最好的计划,做最坏的打算。
前不久的gitlab删库事件的教训犹在眼前,丢失了几小时的数据,虽然大部分的备份策略都失效了,但还是挽救了几小时前的一个备份,才没有造成更大的数据丢失和公司损失。我们需要对设备进行备份冗余,需要对数据库进行备份及离线备份,需要对网站静态进行备份冗余,需要对机房进行备用,能做到双活,那是更好的啦。
相关技术: rsync, crontab, lvm快照, mysqldump, extrabackup, 完全备份, 差异备份, 增量备份, 离线异地备份, ...
高可用和集群
没有永垂不朽,我们不能保证硬件24小时在线,但需要保障服务24小时在线。
出现故障后,如果做好高可用和冗余,故障自动切换,移除故障节点,那样也就保障了服务的实时在线。在老板和用户不知情的情况下,悄么的把故障处理好的,KPI算是保住了,奖金也许就会有的吧。
相关技术: F5, Nginx, LVS, HA-proxy, MHA, Zookeeper, 各种其他分布式集群方案, ...
监控告警
运维工程师的第一次解放运动。
时刻担心网站挂掉,一年365天、每周7天、每天24小时,时刻保持精神高度紧张,就算你是神仙都会撑不住的。我们需要一个机器来监督其他的机器工作,我们需要解放我们自己。当有故障发生的时候,通过短信、微信、钉钉、邮件等等通知对应的运维工程师来处理,甚至是自动切换或摘除故障节点,然后我们离线对故障节点进行问题排查。
相关技术:Zabbix, Nagios, Cacti, Prometheus, open-falcon, Ganglia, sar, ...
安全和审计
狂奔在互联网的康庄大道上,不过有些人是在裸奔。
不安全的网络环境和服务器配置,无异于在网络世界裸奔,任何人都可以窥探你的隐私。你的应用是否做了SQL防注入?你的防火墙是否开启?是否还在用root+密码的方式登录服务器?网站开启了https么?是否对系统操作进行审计?
相关技术: iptables, firewalld, waf, auditd, 各服务的正确配置, ...
自动化和DevOps
运维工程师的第二次解放运动。
偷懒是社会进步的第一动力。聪明的我们怎么会让自己一直在重复枯燥的事情上浪费时间,装系统、部署环境、发版本、批量操作,把这一切交给程序去实现吧,我们需要的是享受生活。
相关技术: shell, python, go, rundeck, ansible, saltstack, puppet, chef, cobbler, fabric, ...
虚拟化和云服务
正在发生的一场运维革命。
这场革命的发起人是买书的亚马逊,这家伙希望卖一切可以卖的东西,包括自己闲置的服务器资源。现在国内的阿里云和腾讯云也发展得如日中天,他们几乎提供了运维所需要的一切,甚至可以让一个公司不再需要运维的岗位。你需要服务器,只需要几秒钟,就可以创建一台。你需要数据库集群,只需要鼠标点击几下,就可以开通。
相关技术:docker, Moby, kubernetes, Xen, CoreOS, Hyper-V, KVM, ...
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-12
看个人情况了,每个人的学习能力不同,接受能力不同,自然觉得难易度是不同的,不过相对于来说,Linux学习要比其他的编程语言更加简单一些,入门也是比较容易的,不过想要掌握好Linux技术,还是需要系统化的学习一些,这样才可以更好的掌握好,推荐可以看看小猿圈的视频,看看适不适合在决定要不要报名学习。
第2个回答  2018-01-29
总的来说,学习Linux系统的使用要比学习WINDOWS系统还是要难一些。但是如果一旦掌握了Linux系统的管理与维护,那么Linux 系统的功能还是要比WINDOWS强大得很多。尤其特别适合搭建各种服务器(例如:WWW服务器、FTP服务器、DNS域名解析服务器、sendmail邮件收发服务器等等)、以及 iptables 防火墙的搭建等。
如果已经打算学习 Linux 系统的管理和维护的话,那么也没有什么捷径可走。根据我的Linux管理经验就是:找一本适合自己的参考书(目前公认比较好的一本书是:《Linux就该这么学》),然后亲自动手从:建立 Linux 分区、选择需要安装的应用程序、直到安装完毕一个整个的 Linux 系统,亲自上机操作,体会Linux系统中的每一个命令。时间久了,就会找到Linux系统管理的窍门了。
第3个回答  2018-01-29

四川中公优就业的老师认为具体要看你想要学到什么程度。每个阶段的学习都是不一样的。但是只要你能坚持,有耐心就可以学会。

    你想学成什么样子?

    你觉得学习这个对你最大的难题是什么?(时间、教材或者其他)

    你计划学习多久

    我们马哥Linux团队专门是做Linux学习研究的,你可以借鉴一下。

    Linux运维学习阶段,需要分为四个阶段,linux初级入门-linux中级进阶-linux高级提升,和资深方向细化。

    第一阶段:初级入门

    初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。

    个人建议学习的路线如下:

    初级入门:

    1、Linux基础知识、基本命令(起源、组成、常用命令如cp、ls、file、mkdir等常见操作命令)

    2、Linux用户及权限基础

    3、Linux系统进程管理进阶

    4、linux高效文本、文件处理命令(vim、grep、sed、awk、find等命令)

    5、shell脚本入门(可边练习边学习)

    第二阶段:中级进阶

    中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。

    1、TCP/IP网络基础(差不多CCNA、NP的知识就够用)

    2、Linux企业常用服务(如dns、http、ftp、mail、nfs等)

    3、Linux企业级安全原理和防范技巧(系统性能/安全、安全威胁模型和保护方法

    4、 加密/解密原理及数据安全、系统服务访问控制及服务安全基础

    5、iptables安全策略构建

    6、shell脚本进阶(主要是结合一些应用,写一些案例)

    7、MySQL应用原理及管理入门(能管理和搭建一个个人博客站点)

    学到这里,掌握的基本技能,已经够用了,已经能做一些基础的运维工作和简单维护了。

    第三阶段:高级提升

    1、http服务代理缓存加速(其中主要学习varnish、nginx缓存系统,要对CDN的知识有所了解。)

    2、企业级负载集群(其中主要学习nginx、haproxy、lvs要对主要知识熟练掌握,对负载均衡算法有清晰认识,)

    3、企业级高可用集群 (其中需要对keepalived,heartbeat等进行深入讲解)

    4、运维监控zabbix详解(主要是zabbix、cacti、nagios等监控系统,现在用的比较多的是zabbix)

    5、运维自动化学习(需要学一些开源运维自动化工具的使用如ansible、puppet、cobbler等运维自动化工具)

    能掌握到这里,基本能处理搞定很多工作了,可以去面试高级运维工程师,差不多薪资能达到12-18K左右

    第四阶段:资深方向进阶

    1、 大数据方向(需要对hadoop、storm等常见开源大数据系统需要深入了解)

    2、 云计算方向(主要是openstack这套东西,当然像一些kvm等虚拟化技术,也是需要掌握的,现在docker也比较流行)

    3、 运维开发(主要是python运维开发)

    4、 自动化运维(在之前自动化基础上做深入)

    5、 运维架构师(主要需要广度,差不多5年左右以上经验,可以担当此职位)

第4个回答  2018-12-29
Linux的操作对于初学者来说,可能不是那么容易,我们大部分人习惯于Windows的操作,要想转Linux意味着习惯的改变,这对每个人都不是容易的事情,且运维这个行业因其行业特性极其注重经验和实操,虽然网上书籍和视频层出不穷,但是想深入学习Linux运维并非易事,这就需要坚持学习的毅力、勤于动手的自控力以及深入思考的能力,当然想要更快更容易的学习Linux运维,找牛人帮忙带路也是必不可少的一个环节。