只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  运维工程师必须掌握的基础技能有哪些?


运维工程师必须掌握的基础技能有哪些?

发布时间:2019-09-01 20:05:44  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
谢邀,问题很好,。楼上那位已经回答的很全面了,我补充一点点:1.关于运维工程师 百度百科给出的说法是运维工程师,集合网络、系统、开发工作于一身的“复合性人才”。实际上也差不多随着IT信息系统的发展
运维工程师必须掌握的基础技能有哪些?谢邀,问题很好,。楼上那位已经回答的很全面了,我补充一点点:
1.关于运维工程师
百度百科给出的说法是运维工程师,集合网络、系统、开发工作于一身的“复合性人才”。
实际上也差不多
随着IT信息系统的发展,运维岗位进一步细分
A.根据面向对象的不同有:
基础运维 应用运维 系统运维 虚拟化运维 存储运维 linux运维 网络运维/IDC运维
B.根据职业发展层次的不同阶段又有:
桌面运维-->系统运维--->开发型运维--->系统架构师

所以必须掌握的基础技能也有大概的几个方向:路由交换/系统平台/脚本开发/系统架构/信息安全
分别由浅入深,类比一些认证所代表的知识层次(在这里证书不代表能力,只是作为一个参照物):
路由交换:
参照cisco的基准 CCNA-->CCNP-->CCIE
系统平台:
WIN参照微软 MCTS-->MCSE/MCITP Linux参照redhat RHCE--->RHCA
虚拟化有商业上的思杰/VMware 开源有openstack/cloudstack
脚本开发:bashshell /powershell / VB /python/Ruby / C /c++ / Go #开发语言我就列出看到过有运维人在用的,偶尔看到有BT用lisp。。。
信息安全:ISO27001你得知道是什么。乌云得经常去逛逛。
------------------
对于软件的使用,得仁得智,我个人是拥抱开源的,商业化产品过于追逐利益。
运维工程师 是从一个呆逼进化为苦逼再成长为牛逼的过程(请宽恕我的用词),前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化。
不要过于在意商业产品的部署和企业方面的技术认证,这玩意变化太快。
关键是通过前期的广泛吸收打好基础,进而找到今后要走的路,从而抓住一个方向深入。最终要成为一个方面的专家而不是什么都会什么都不精通的普工!
虽然操不着系统架构师的心,但也要有尽量靠齐的大局观和视角。以项目来促进成长,以压力为动力继续前行~!做一个有价值,有成就,有原则,有妹子的四有运维工程师!!

《海量运维》这本书里面整理了一个大概的运维体系框架,我很喜欢,借用一下:

相关书籍:
路由交换:
《TCP/IP协议》 第三卷 | cisco教材
linux:
(鸟哥 全套) | Linuxshell脚本攻略 | 深入理解linux内核 | linux内核完全注释
win:
教材/白皮书/google
服务部署:
构建高性能WEB站点 |高性能网站建设指南 -steve souders | puppet实战 | 大话存储 2 |Mysql 性能调优与架构设计 - 简朝阳
信息安全:
Web前端黑客技术揭秘 | 白帽子讲web安全 |
脚本开发:
深入理解计算机系统 | 编写可读代码的艺术 | Python核心编程 | 笨办法学Python
启发思路:
淘宝十年 | 海量运维 |大数据时代 | 思科九年 |我这一代京东人最后更新:2015-08-27

这个问题挺好的,回答这个问题也是对自身的审查,看看自己还欠缺哪些。(所以我估计得好好思考下,也许下一刻我就会突然惊醒,发现我还是战⑤渣)

首先限定在Linux运维工程师

回答仅代表我想到,不代表我都会 :(

技能

1. Linux基础

包括对Linux整体的理解/使用和基本命令:
  • 了解Linux FHS : Filesystem Hierarchy Standard,国人写的这本书不错 Linux系统架构与目录解析 (豆瓣)
  • 入门Linux:鸟哥的Linux私房菜.基础学习篇(第三版) (豆瓣) 个人认为鸟哥的这本书是一本非常好的入门书
  • 基本操作命令:Google,如Linux command cheat sheet
  • 熟悉至少一个内置编辑器: vi, nano
  • 至少熟悉一个发行版(或系列),建议作为服务器常用的如Centos, Debian, Ubuntu,可以了解多个常用发行版
  • 个人使用/开发尽量在Linux上,比如我前期选择了 Gentoo Welcome – Gentoo Linux ,非常Cool的一个Linux发行版,配合官方的 Handbook Handbook:Main Page,可以学到很多东西

2. 运维的命令:

运维相关的工具(命令),了解它能解决很多问题。

前几天刚回答了一个问题:如何才能更深入的学习linux?

里面的图在这里也可以用到:

可以对着图对学习了解这些命令 (抱歉图片的原始来源我没有搜到,如果有朋友知道,麻烦告诉我,谢谢 感谢 @jeremy yang 的提示,已经搜到来源 http://www.brendangregg.com/linuxperf.htmlhttp://www.slideshare.net/brendangregg/linux-performance-analysis-and-tools)。

另外我个人也会对平时用到的这些工具做一个整理和记录,总结到我的个人维基上:Wiki · Tanky Woo

3. 基础服务:
  • LAMP或LNMP :Apache/Nginx,MySQL,PHP/Python/Perl LAMP (software bundle)
  • FTP
  • DNS
  • SAMBA
  • EMAIL
  • NTP
  • DHCP
  • ...

可以本地搭建练练手

这里推荐鸟哥另外一本书 服务器架设篇: 鸟哥的Linux私房菜 (豆瓣)

4. 运维平台工具:

也在这个问题 如何才能更深入的学习linux? 里提到了:
  • Nagios
  • Puppet
  • Zabbix
  • Cacti
  • SaltStack
  • ....
可以选择性的折腾下,因为这个涉及到业务,没有实际环境,很难去理解他们的功能和特点。

5. 脚本:
  • 必备:Shell
  • 额外:Python,Perl...

6. 底层:
  • Linux C,内核

7. 网络:

网络是非常重要的一块
  • 把《TCP/IP协议详解》多看几遍,理解。
  • 熟练使用tcpdump等抓包工具

8. 安全:
  • 防火墙配置,如 iptables, ipset

9. 硬件:
  • 接口类型
  • 查看硬件信息
  • 知道各类型服务器,如塔式、机架式、刀片式

10. 其它:

了解更多特定技能要求的方式:

Google搜"Linux运维工程师 招聘",看看他们的需求。

最后推荐一本书:Unix/Linux系统管理技术手册 UNIX/Linux 系统管理技术手册 (豆瓣)

后续想到再做补充

素养/处理方式

除了技能,我觉得素养(态度)也可以谈谈

这个正好看到右边相关问题:运维工程师需要具备哪些性格特质?

1. 安全

运维人员的权限很大,所以一定要保证帐号/私钥的安全。
  • 最好使用加密工具存储。比如truecrypt,1password
  • 基于本地存储。切勿用网盘,也不建议用lastpass等
  • ssh私钥添加密码

以上任何一点都很重要,否则弄丢了,风险会非常大。

2. 责任心

如上面那个帖子里 @山大 提到的 Owner 意识
  • 遇到报警,第一时间处理,而不要等着他人去处理
  • 如果无法处理,应该第一时间让同事协助帮忙,而不要禁止报警,让问题掩盖

3. 细心

你的任何一个操作,都可能造成系统的损坏、业务出问题。所以敲命令时一定要细心、再三确认。你敲的再快,也就节省那么一点时间,出了问题才是大事。

4. 推进/改善

如果代码有问题,导致系统开销很大,比如负载,io等。应该第一时间和开发部门确认,要求优化代码。

5. 进取心/不断学习

运维的知识范围很广,要不断学习。遇到问题,做好分析记录,事后还可以在部门内分享交流。

这也是我为什么热衷于写技术博客和维基的原因,好记性不如烂笔头。记录整理的过程也是一个思考升华的过程。



再给一个干货,我们公司(知道创宇)的技能表:http://blog.knownsec.com/Knownsec_RD_Checklist/v3.0.html,里面的技能点非常全面,也包含了运维相关


欢迎评论补充

其它的一些回答都非常棒,强烈建议也看看!基础如@Tanky Woo所说.我来补充一点
1.对业务的了解
不了解业务,当出了问题,你什么都做不了,当你对业务足够了解时,你就能很快troubleshooting,瓶颈定位
2.系统的思维
也就是操作系统,计算机原理的深入理解,只有这样才能把业务逻辑和系统融合在一起.这样能对付,当业务上线时,就能很好的评估和预测将来会出现什么问题,当出现时应该怎么处理.而不是当出现问题时无从下手
3.对应用的了解
也就是对FTP,DNS等原理的熟悉,一样是为troubleshooting准备,只是部署上线是不够的
4.扩充眼界,修炼基本功
基本功一定要扎实,多修炼内功.就想张无忌的九阳神功一样,杨鼎天没有九阳神功护体,练乾坤大挪移把自己练死了.说白了就是,有些人之修炼各种招式,如docker,openstack,saltstatck,而不明白底层原理,早晚会把自己玩死限定在linux运维
1:第一名的列的那张图上的命令基本过一遍,能知晓用处,基本上对着系统就不会发怵了。
2:无论如何,要有一个你自己的测试机器(建议装centos,更贴近企业现状),从头到脚的折腾。
3:英语要好,如果man一下都看不懂的话,我觉得接下来很多解决方案你会找不到。
4:要有一颗平常心,面试的时候和你谈架构,谈大数据,最后发现90%的时间是在做一些基础的东西,而这恰恰是最重要的。我见过很多基础做着做着就烦了,就迷失然后日复一日做无用功。
5:一个健壮的身体,来应付7*24可能出现的报警。
6:一颗偷懒的心,能用脚本坚决就用脚本,能自动化跑的就设法实现自动化。

智联上搜了下运维,发现被阿里刷屏了,截取一个比较通用的要求
1、大学本科及以上学历,计算机或者相关专业。
2、熟悉Linux以及主要Unix系统,了解网络基本技术,熟悉TCP/IP协议工作原理;
3、熟悉WEB相关技术,包括apache/nginx,tomcat/jboss等应用的管理、配置和优化;
4、熟悉shell,perl,python,java,php脚本或开发语言一种以上。
5、具有较强的故障定位排错和应用优化能力。
6、责任心强,积极主动,热爱学习和分享,有良好的沟通能力和团队合作能力。
7、具有大型网站的运维经验;有参与开源项目等优先;有java,C++开发经验优先。

这个点回复问题,可以肯定我是一个合格的运维人员....创宇的Tanky Woo兄弟已经概括的很好很全面了, 下面根据工作常用内容再补充细化一下,分两个层面吧,从技能上,以及意识上写一写(高手见笑):
l 技能篇
一、 基础工具(操作流):
  1. vi ,这个是必须的,因为服务器的运维多用远程登录,没有GUI。一些对服务器资源占用要求严格的公司会在安装时就要求最小化安装,然后再按需安装业务程序的依赖软件。这种情况默认桌面环境甚至Xserver是不安装的。不会用vi,会很痛苦。vi较常用的:查找,精确复制粘贴,精准定位至要编辑的行,表达式作字符串替换。
  2. 熟悉windows与linux之间相连接的工具。(Secure CRT, vnc, rdesktop,winscp),提到上面几个工具是因为你有可能在你的同事或者客户的windows机器上连linux server
  3. 此条多是照搬rhct的内容: 懂fdisk/parted分区工具,管理swap,管理用户,查看主机配置(主机型号,cpu型号,物理内存数量(比如看到有16条单根8G的内存),如果是代客户运维,这些东西与客户采购与系统扩容联系紧密,扯远了),lvm管理,文件系统管理,网络配置管理/多网卡绑定,各发行版上 二进制/源代码包的安装,软件包依赖关系解决,查看系统当前负载(内存占用top 10进程列表,cpu占用top10进程列表,IO负载),熟悉常用系统日志的查看方法
  4. 服务器配置安装部分:熟悉最常用 的ftp,http,nfs,samba,dns,dhcp,mail的一般配置方法。
  5. 熟悉系统常用中间件/数据库的安装(tomcat,jboss,was,oracle),可以不熟悉它们的配置
  6. 理解“环境变量”及其作用,能写shell script ,知道一点expect/sed/awk, 会使工作有效率


二、 进阶篇(分析流)
  1. 熟悉HA集群以及负载均衡(lvs)集群的配置
  2. 熟悉多路径(multipath)的配置和管理,熟悉san/nas的概念与区别
  3. 熟悉各发行版二进制包的制作过程与二进制包的安装原理或过程
  4. 分析系统性能瓶颈点(IO/memory/cpu,常用工具,top命令中shift组合键的特殊用法,Sar/vmstat/iostat/ipcs)
  5. 理解Xwindow大致原理,用ssh或 定义DISPLAY 作x server的任意跳转
  6. 熟悉PXE+kickstat作无人值守的批量部署
  7. 熟悉以源代码方式安装硬件驱动


三、 深入进阶篇
  1. 分析部分程序不能运行或没有按预想结果运行的原因,strace对程序运行跟踪,查看系统调用的过程,
  2. 较深入的系统瓶颈点分析(swap使用频率,硬件驱动的中断请求在各core的分布,高手见笑,我只用过这两个)
  3. 熟悉kdump的大致原理,nmi的大致原理,分析系统crash时dump出的文件。(如果能看到dump文件的话,里面记录的还是比较清晰的,日志会记录到crash时每个core上运行的进程正在执行的系统调用,有遇到过:几次系统总是在某个系统调用发生时crash,后来百度了资料,才知道这个系统调用存在bug,最后单升级kernel就好了。 现在让我很蛋疼的是很多时候机器hang掉,不会产生kdump文件,尽管设置了内核的oops/nmi相关参数,如果有高手碰巧看到,希望能请教一下)


l B,意识篇

1) 安全意识:关于这个,有创宇的兄弟在,不敢班门弄斧


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


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


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


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


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

以下是针对刚刚入门的运维工程师说的:
  • 首先要对操作系统有所了解(含Windows和linux,也可能需要aix等系统)
  • 至少掌握简单的shell脚本,学有余力最好掌握python。
  • 能处理简单的系统故障,以及分析问题的能力。
  • 学习能力,能在最短时间内掌握应用的布署和简单操作。
  • 至少懂得一种监控平台的使用(cacti/nagios/centreon等)
剩下的就是在工作中慢慢积累经验了依次为:
《鸟哥的linux私房菜》
《**脚本从入门到精通》
《**脚本编程指南》
《计算机网络基础》
《nginxapacheIIS调优指南》
《Linux内核入门》
《Linux内核调优指南》
《西藏自由行手册》
《论佛经与故障处理》
《抑郁症的自我康复》
要学会以下内容

负载均衡
冷备
热备
高可用
异地容灾
故障监控
确保备份可用
避免单点

要确保你女友或者老婆不知道你学会了以上这些内容运维的家伙们,赶紧学python开发吧,这是我跟好几个企鹅资深运维工程师聊天得出的结论。未来越来越多的业务会在云上docker上,那种传统干运维的方式,比如收到问题单后登上服务器敲几个命令或者写几个脚本的方式已经越来越不适应时代了,未来的运维一定是大量工具化和自动化的,运维工程师,会转变为运维开发工程师,运维经理,会转变为运维软件开发经理。企鹅每天上万的告警,大量都是自动化处理的。操作系统:Centos,Ubuntu,Redhat,suse,Freebsd
网站服务:nginx,apache,lighttpd,php,tomcat,resin
数据库:MySQL,Mysql-proxy,MariaDB,PostgreSQL
DB中间件:MyCat,atlas,cobar,amoeba,MySQL-proxy
代理相关:lvs,keepalived,haproxy,nginx,heartbeat
网站缓存:squid,nginx,varnish
NOSQL库:memcached,memcachedb,MongoDB,Cassandra,redis,CouchDB
存储相关:Nfs,Moosefs(mfs),Hadoop,glusterfs,lustre,FastDFS
版本管理:svn,git
监控报警:nagios,cacti,zabbix,munin,hyperic,mrtg,graphite
域名解析:bind,powerdns,dnsmasq
同步软件:scp,rsync,inotify,sersync,drbd,csync2,union,lsyncd
批量管理:Ssh Key,Saltstack,expect,puppet,ansible,cfengine
虚拟化:kvm,xen
云计算:openstack,docker,cloudstack
内网软件:iptables,zebra,iftraf,ntop,tc,iftop
邮件软件:qmail,posfix,sendmail,zimbra
远程拨号:openvpn,pptp,openswan,ipip
统一认证:openldap
队列工具:ActiveMQ,RabbitMQ,Metaq,MemcacheQ,Zeromq
打包发布:mvn,ants,jenkins,svn
测试软件:ab,JMeter,Webbench,LoadRunner,http_load,tcpcopy
带宽测试:smokeping,iozone 磁盘测试 iozone
性能测试:dd IOPS测试 fio
日志相关:rsyslog,Awstats,flume,storm,ELK(Elasticsearch+Logstash+Kibana)
搜索软件:Sphinx,Xapian,Solr
无人值守:kickstart,cobbler
软件安装:rpm,yum(设计rpm包定制及yum仓库构建)
大数据:HDFS,Hive,Hbase,Zookeeper,Pig,Spark,Mahout
开发语言:Shell,Python
-------来源2016年linux运维人员必会开源运维工具体系
感觉这个还是很完善的,其中有一部分是新手必须会的。

linux运维人员常用工具介绍

1.很多地方经常会用到的rsync工具 实施几台服务器的同步效果

我们公司就是使用这个工具完成服务器的游戏的服务端和客户端同步,有几个文章例子

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

inotify+rsync+mutt+msmtp 实现linux文件或者目录自动更新并且实现发邮件给管理员

2、网络服务,服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如FTP, DNS,SAMBA, 邮件, 这几个大概学一下就行,LAMP和LNMP是必须要熟练,我所指的不是光光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是WEB服务器,所以nginx和apache要熟悉,特别是nginx一定要很熟悉才行,至少有些公司还会用tomcat,这个也最好学一下。其实网络服务方面不用太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯定是编译安装多,那些模块要熟悉一下他的作用,特别是PHP那些模块。这面2点只是基础,也是必要条件,不能说是工具,下以才是真正的要掌握的工具。

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

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

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

linux 下构建DHCP服务器

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

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

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

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

sed 简明教程

5、文本处理命令,sort , tr , cut, paste, uniq, tee等,必学,也是结合第3点时一并学习的。

6、数据库,首选mysql,别问我为什么不学sqlserver和oracle,因为linux用得最多绝对是mysql,增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。

Mysql(手动编译详细思路,以及增删改查,授权,备份还原)

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

防火墙(二)SNAT和DNAT

8、监控工具,十分十分重要,我个人建议,最好学这3个,cacti,nagios,zibbix,企业用得最多应该是nagios和 zibbix,反正都学吧,但nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。

CentOS 6.2+Nginx+Nagios,手机短信和qq邮箱提醒

服务器集中检测Cacti

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

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

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

nginx 缓存配置及报错解决

10、数据备份,不学不行,工具有很多,但至少要把RAID的原理弄懂,特别是企业最常用的1+0或0+1,自己做实验也要弄出来,备份工具有很多,如tar, dump,最好多了解一下。算了,说到这10点已经够你受了,应该可以入门了,因为有些技术会比较难学,例如apache和nginx中还有些很重要的技术,如系统调优和服务优化,还有程序优化,这些在没接触工作前很难学习到的,所以先把这10点学了吧,估计要学熟至少3个月不止,就脚本那部分已经让你很吃力了,我建议是先学熟shell,等工作后再学另一门脚本语言,这样会比较好。

常见的MySQL命令大全

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

————————————————

在Linux系统下,说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。那么Linux系统运维工程师的基本技能有哪些?

下面跟汤哥一起来看看!

1.Linux系统基础

这个不用说了,是基础中的基础,参考书籍,至少要掌握这书60%内容,没必要全部掌握,但基本命令总得会!

言归正传,linux基础包括了些什么内容?笔者认为有如下几方面。

- Linux命令大全

- Linux文件系统标准(FilesystemHierarchy Standard)。

- 至少熟悉一个内置编辑器:vi、nano、vim。

- 至少熟悉一个linux发行版:Redhat、Ubuntu、Suse等。

- 至少熟悉一个远程登录linux工具:putty、xshell等

- Linux服务,服务器配置安装:ftp、http、nfs、dns、samba、DHCP、mail等

- 至少熟悉一种脚本语言:shellscript、perl、Python等

- 防火墙:iptables、ipset、firewalld等

2.网络服务

服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如FTP, DNS,SAMBA, 邮件,这几个大概学一下就行,LAMP和LNMP是必须要熟练,所指的不是光光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是Web服务器,所以nginx和apache要熟悉,特别是nginx一定要很熟悉才行,至少有些公司还会用tomcat,这个也最好学一下。其实网络服务方面不用太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯定是编译安装多,那些模块要熟悉一下他的作用,特别是PHP那些模块。

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

3.shell脚本和另一个脚本语言

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

4.sed和awk工具

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

5.文本处理命令

sort , tr , cut, paste, uniq, tee等,必学,也是结合第3点时一并学习的。

6.数据库

首选MySQL,别问我为什么不学SQL Server和Oracle,因为linux用得最多绝对是MySQL,增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的Linux系统运维工程师基本技能点汇总文章Linux系统运维工程师基本技能点汇总出自http://www.gkstk.com/article/wk-78500000841939.html,转载请保留此链接!。

7.防火墙

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

8.监控工具

十分十分重要,个人建议,最好学这3个,cacti,nagios,zibbix,企业用得最多应该是nagios和 zibbix

璧合但nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。

9.集群和热备

这个很重要,肯定要懂的,但到了公司就不会让你去弄,因为新手基本不让你碰,集群工具有很多,最好学是LVS,这是必学,最好也学学nginx集群,反向代理,还有热备,这个就更多工具能实现了Linux系统运维工程师基本技能点汇总Linux认证。

10.数据备份

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

有些技术会比较难学,例如apache和nginx中还有些很重要的技术,如系统调优和服务优化,还有程序优化,这些在没接触工作前很难学习到的,所以先把这10点学了吧!建议是先学熟shell,等工作后再学另一门脚本语言,这样会比较好。

以上就是踏入Linux运维工程师需要掌握的工具,其实还有很多工具要掌握的,但你在学习环境中是很难学到,最后再提醒一下,这里所指的工具相当于技能,而不是像Windows或ubuntu那些图形化工具,学Linux就别装图形界面,这样虚拟机就不用吃太多内存。

你想更深入了解学习Linux知识体系,你可以看一下我们花费了一个多月整理了上百小时的几百个知识点体系内容:

【超全整理】《Linux云计算从入门到精通》系列实战笔记全放送

好多高票答案都挺老的了,14年15年的。到了今天,运维的技能标准又发生了一些变化,整个行业的大环境也发生了一些变化。今天我们不谈“术”,术会更新、会过期、会淘汰,所以我们来谈谈“道”。

运维必须掌握的基础技能有哪些?这个问题可以有无数种回答,因为运维职业本来涉及的知识面就非常之广,要单个罗列恐怕要累死。但是,如果我们说最重要的一项,那必然是学习能力无疑。

先看一篇短文,运维再不学习,可能你连蹲机房的机会都没有了! - 运维派

之前运维派整理过一份运维头衔大全,罗列了30多个运维领域的岗位,其中最明显的变化就是各个企业对“运维开发”这个职位的需求多起来了,同样对运维人员的技术栈也有了新的要求,最直接的就是运维必须会Python开发,有些甚至还需要会JAVA,但小编我的建议是:运维要学编程,还是先从Python下手吧,会写Shell再学Python,没你想象那么难。
铺垫了这么多,就是想提醒广大运维的兄弟姐妹们要保持持续学习的态度。之所以要提这事,是小编我看到一篇16年的老新闻,说是中国电信的机房运维都已经推出了“机器人管理员”,据说这个“机器人管理员”的长手臂还能进行插拔设备网线等操作。这不摆明了要抢咱们机房运维兄弟们的饭碗吗?
这个“机器人管理员”拥有多个传感器,可以对设备机房的温度、湿度宏观调控。同时,将机房分为热通道和冷通道两个气流传输通道,分别监测两个通道的温度。这样,可以比传统的温度监测节省能源消耗。
试验室设备很多,如果设备过热,实验室很有可能遭遇火灾危险。“机器人管理员”还可以及时探测到火情,然后迅速切断电源,之后应急灯会点亮,同时开启水雾灭火设备做到水雾灭火从而将机房损失降到最低。
这些机器人除了越来越聪明,能替代一些运维工作外,更要命的是机器人是不知疲倦的,所以时代变化比我们想象要快,趁年轻抓紧学习吧!


不知道大家看到这条消息怎么想。虽然这个机器人目前还只能做一些机房管理员的工作,但是Alpha Go的进展大家也都看到了,人工智能正在快速成长,重复性工作被消灭的时间点可能会比我们想象的提前很多。一旦人工智能取得突破,非创造性的工作岗位会被快速消灭。

所以,运维最要紧的,就是从事创造性的、机器无法取代的、有价值的工作,这就对运维人员的学习能力提出了很高要求。

到底怎么学?一些常见套路就不说了,这里放一下我的四个习惯,也许不是普适性的,给大家个参考吧:

攻击观点

这里的攻击不是让你对观点作者进行人身攻击,也不是单纯放嘴炮,而是要对一个问题进行自己的思考,并且沿着逻辑线深入下去。

先问你一个问题,你懂什么,“什么都不懂”,好,你懂不懂IP地址怎么写吗?OK,写出来,请问“为什么要用IP地址?”。

不断思考

收到一个报文后,怎么解封装?发送一个报文,如何封装?

单纯的概念记忆毫无用处,只会操作又流于表面。

你必须通过思考把流程理顺,把具象的信息转换成抽象的信息存储在大脑里,并且逻辑和系统同步,不断训练思考才能做到。

尝试忘却

都看过倚天屠龙记,张无忌学会太极拳的标志是什么?“全忘了。”

大牛回答问题时,经常会说:“这个问题我没遇到过、这个问题我不清楚、这个问题我不懂。”但是后面半句话,大牛从来不说出来,“只要我想去了解和解决,只需要5-10分钟就能找到答案。”

几乎所有对套路、案例的记忆都有着极强的环境限制,换一套生产环境立刻歇菜。大脑里只保存思路和方法,而不是细节,可以迅速解决任何问题,问问题的人,只记住很多具体的解决方法,超出这个范围就不会了。

真正的忘却不是因为记忆的衰退,而是放下来,问题本身已经完全被粉碎于无形之中。

联系表达

很多时候,我们研究一个案例之后,自认为早已对其中关节掌握的清清楚楚。然而在给别人讲解的时候,却说了个稀里糊涂。

自认为学会了不是真正的学会,真正的学会,在于能够讲出来,使一个初学者也能够听得明白,才能算是学会了,不会表达,永远学不会。懂了,却举不出例子来,怎么能够叫做懂了呢?


你想更深入了解学习Linux知识体系,你可以看一下我们花费了一个多月整理了上百小时的几百个知识点体系内容:

【超全整理】《Linux云计算从入门到精通》系列实战笔记全放送

时代变迁,低端运维前途暗淡,光会点shell和服务器管理是不行的(十年前还行)。

php和python最好得熟悉一些,能开发一些带界面的工具。运维这种岗位,切忌去小创业公司,小创业公司的运维必然是打杂的,你想想看,公司都没盈利,服务器也不多,老板怎么可能重视运维,而且规范性流程性必然也差,运维在里面就是一苦力,楼下列了这么多知识菜单,实际上,即使大部分掌握了,也是一苦力,因为在老板看来,你是没啥产出的。产品不出故障,老板不知道养你何用,产品经常出故障,老板也是问养你何用,这就是小公司老板对运维的认识。运维只有往一个方向深入做才有点前途,这个只有在大公司才有空间。

写完另一个问题的答案,正好看到这个问题,已经有非常多的优秀回答了,还是过来强答一下。偷懒直接引用我另一个回答的内容。

运维工程师的晋升体系,每个阶段所需要掌握的技能知识点有哪些?

运维工程师现在也越来越多元化,并不是每一个阶段掌握的技能都是一样的,发展方向不一样则掌握的技能也会不一样。以下排除掉网络运维、IT运维、存储网络/安全等特种设备运维的方向,列举了几个运维比较常见的发展方向,从基础、进阶到高级三个级别来说明大体需要掌握的技能,有可能不全面。

应用运维方面

  • 基础:Linux基础/对应的语言环境,如tomcat/LAMP/LNMP这些要能掌握安装、配置、日常维护操作
  • 进阶:Linux存储管理/安全加固/进程资源管理/网络管理,其他应用中间件如缓存(redis/memcached)、MQ(ActiveMQ/RabbitMQ等)、服务发现和治理中间件(如zookeeper)、配置管理工具(如Puppet/Saltstack/CFengine等)
  • 高级:Shell脚本可以信手拈来,Linux内核/网络等常用参数的配置原理和优化场景,资源消耗的排查和优化,熟练掌握iptables,pam,selinux等安全机制。JAVA运行环境还需熟悉JVM优化、GC日志分析、Java线程堆栈分析等。
  • 额外,需要了解一些:
    • 虚拟化技术,如VMware/VirtualBox/KVM
    • 虚拟化管理技术,如vSphere/convirt/oVirt/OpenNebula等
    • Docker基本使用和管理
    • 私有云平台,如Openstack/CloudStack等
    • 公有云平台,如阿里云/AWS
    • 基础网络技术,如IP网络基础、OSI七层、HTTP/HTTPS/RPC协议、VLAN、路由、NAT、ACL等概念及相关配置技术


虚拟化和云运维方向,如以商业化的VMware为例:

  • 基础:ESXi安装、配置、单主机管理;各种概念,如VM/datastore/vSwitch等;vCenter的基本管理,如模板、网络配置、克隆、迁移等
  • 进阶:vCenter高可用性、vSphere HA高可用性、vSphere Fault Tolerant、VMotion;如使用共享存储还需要了解FC SAN/iSCSI存储网络知识
  • 高级:vSphere Site Recovery/vSphere Data Protection/vSAN管理等
  • 额外,如果使用VMware的其他产品,如NSX/vRealize等,则要学的东西更多。


综合发展,则还有如下一些需要掌握:

  • 基础:监控,如Nagios/Zabbix等基础配置;DNS/NFS/FTP等服务配置;Docker基本使用和管理
  • 进阶:网络分析,如抓包tcpdump/wireshark;性能分析工具,如nmon/iftop/iotop;负载均衡,如nginx/LVS/haproxy。学习一门脚本语言,如python/perl/go等。
  • 高级:进程跟踪和故障分析,如strace/kdump/gdb。Docker编排体系,如kubernetes/swarm等。还有日志分析ELK;指标数据库influxdb/promethus等


上面看起来眼花缭乱,其实并不是每项都需要掌握。以下几个方面都可以成一个单独的发展方向,如果能独立搞定一个方向,就已经迈入运维架构师的层面了。

  • 虚拟化及私有云管理方向,如独立搞定OpenStack上生产,随便搭个测试环境玩玩不算。
  • Docker和编排体系方向,如独立搞定Kubernetes上生产。
  • 精细化的监控告警设计和实施,不仅仅是单一的搭建zabbix这类监控工具针对简单的资源、网络、应用可用性监控等。还应包括日志分析、精细指标监控等。
    • 如主导研发规范日志,使用ELK进行日志分析并针对详细业务场景出具精准监控和业务数据可视化报表。
    • 再如使用influxdb/grafana或promethus等系统,收集硬件传感器/cpu/mem/io/eth/vm/docker等信息,然后构建精细化的资源使用报表等。
    • 然后再整合日志分析/精细化资源监控打通从业务->应用->资源->硬件的一体化监控联动
  • 自动配置管理方向,简单点的使用puppet/saltstack等平台加一些定制脚本来管理,高级点的开发一个管理平台,并UI化。


需要看实际工作中的应用场景、管理规模、自动程度、监控需求等来配合使用。每个人的精力是有限的,一个优秀的运维最需要的是一颗时刻保持学习的心和强大的自学能力。

为了对系统运维工程师有个系统的了解,整个回答会分为几个部分:

一、系统运维是什么

二、系统运维工程师分类

三、系统运维工程师技能

四、系统运维工程师考证

五、系统运维学了之后能做什么


一、系统运维是什么

简单来说运维(Operation and maintenance)是指对公司硬件和软件的维护。

硬件包括:机房、机柜、网线光纤、PDU、服务器、网络设备、安全设备等

软件包括:

1、系统运维软件:

  • 操作系统:Linux、Windows
  • 数据库:Oracle、Mysql、SQL Server、非结构化数据库
  • 中间件:Weblogic、Tomcat等
  • 虚拟化:VMware、KVM等
  • 云平台:Openstack、Docker等

2、系统运维支持软件:

  • 监控系统:监控机房、硬件、操作系统、数据库、中间件等
  • 备份系统:备份重要数据
  • 身份认证管理系统:也叫4A系统,认证Authentication、授权Authorization、记账Accounting、审计Audit
  • CMDB系统:CMDB存储与管理企业IT架构中设备的各种配置信息
  • ITSM系统:IT服务管理系统一套帮助企业对IT系统的规划、研发、实施和运营进行有效管理的系统,可管理问题工单、变更工单、事件工单等。
  • 自动化运维系统->智能化运维系统
  • 私有云系统

3、业务系统:

企业的业务系统,比如核心业务系统、APP、网站、ERP系统、CRM系统等


二、系统运维工程师分类

系统运维工程师从硬件到软件逐级向上可大概分为:

1、布线工程师、机房工程师:负责机房布线和机房里设备维护

2、驻场工程师:由乙方派到甲方公司的驻场工程师

3、实施工程师:由乙方派到甲方做实施

4、桌面运维工程师:维护笔记本电脑、邮箱等

5、网络运维工程师:负责网络运维

6、系统运维工程师:主要负责操作系统、数据库、中间件、虚拟化等

7、数据库运维工程师:负责数据库运维

8、运维开发工程师:负责DevOps的运维开发

9、应用运维工程师:负责应用运维


三、系统运维工程师技能

系统运维工程师不仅需要有Linux基本操作技能,还应该会服务器硬件、以及企业里常用的双机集群、Windows、VMware、数据库等技能,这样才能有担任合格的系统运维工程师。

需要特别注意企业里物理机都是用双机集群,一定要掌握双机集群的技能,包括Linux双机集群、Windows双机集群、Oracle Rac数据库集群、SQL Server数据库集群等。

Windows技能
VMware技能
Linux技能
数据库技能
企业里实战技能
云计算和大数据

四、系统运维工程师考证

系统运维领域的证书体系有操作系统、数据库、虚拟化、网络等分类

中级证书费用在7K-10K,高级证书费用在30K左右。

中级考出来月薪大概在15K,高级考出来月薪大概在20K-30K。


五、系统运维学了之后能做什么

系统运维工程师职业发展比较广阔,从入门级初级系统运维工程师月薪10K,到金融领域系统运维总监年薪80万。


贴几个JD大家感受下:

【1】、岗位:初级系统运维工程师

月薪:8K-15K

技术:服务器硬件、Linux、Windows、VMware、部署优化、高可用

岗位职责:

1、负责服务器、数据库日常运行管理,保障高可用性;

2、负责网络、邮件、防火墙、系统安全、病毒防护方案的部署与管理;

3、负责产品的版本发布、系统部署、日常故障处理,参与系统的监控方案、容灾方案、自动化运维方案的制定和实施;

4、熟练Linux、Windows操作系统,熟练部署并维护及其各类服务;

5、熟悉Nginx/LVS/HAproxy等主流的负载均衡方式并实现

6、熟练Apache、Tomcat、Mysql、Nginx等主流服务的部署及运维;

7、能熟练使用Shell、Perl、Python(一种或几种)语言

任职资格:

1、计算机软件及相关专业 大专及以上学历,1年以上相关IT运维工作经验;

2,熟悉Linux、Windows、VMware操作系统的安装部署及优化;

3,具有良好的故障排查能力,良好的逻辑分析能力及技术敏感度;

4,熟悉掌握使用shell、python脚本语言,能熟练进行脚本/工具开发,对自动化运维有较深入的理解或者经验者优先;

5,高度的责任感,较强的故障分析及排查能力,善于在工作中学习,能承受工作压力。


【2】、岗位:中级系统运维工程师:

月薪:15K-30K

技术:Linux、Python、Hadoop、Openstack、监控、架构

【岗位职责】:

1、负责线上应用和配置的部署、发布、监控、维护和优化;

2、负责网络、服务器、数据库与支撑系统的建设、运维和监控,保证各业务系统正常运营;

3、负责开发运维相关脚本,提高执行效率;

4、负责突发事件管理,问题跟踪与管理,提供运维报告;

5、记录维护的日志和故障报告,编写运维文档;

6、主动发现生产环境的问题和隐患,通过开发或推进自动化运维工具来降低手工操作的维护成本;

【岗位要求】:

1、5年以上相关云运维工作经验;

2、熟练掌握Linux/Windows操作系统的管理;

3、熟练掌握Shell、Powershell、Python(或者Perl)中的一种或多种;

4、熟练掌握MySQL、Nginx、Tomcat等;

5、熟练掌握Zabbix or Nagios、Cacti等监控工具;

6、熟悉Hadoop体系结构、分布式计算、流式计算、分布式存储

7、具有主流公有云维护经验,懂得公有云架构设计;

8、有丰富的系统故障排查和解决经验,突出的分析和解决问题的能力;

9、熟悉Openstack及分布式存储相关技术,了解虚拟化及云技术的最新发展趋势;

10、有大型互联网公司自动化运维经验,了解存储、负载均衡设备配置者优先;


【3】、岗位:高级系统运维工程师

月薪:25K-45K

技术:自动化、DevOps、云服务、Docker、kubernetes、安全

职位一

【岗位职责】:

1、制定和优化运维解决方案,包括但不限于柔性容灾、智能调度、弹性扩容与防攻击;

2、推动及开发高效的自动化运维、管理工具,提升运维工作效率;

3、探索、研究新的运维技术方向。

【岗位要求】:

1、本科及以上学历,3年以上的Linux系统使用和管理经验;

2、熟悉 Linux 操作系统原理、TCP/IP 以及常用RPC协议;

3、熟悉脚本语言Bash/Python等脚本语言的一种并有相关开发经验;

4、熟悉Docker、Kubernetes等开源软件;

5、熟悉常见应用配置及优化,如Nginx/Haproxy/MySQL/DNS/Redis/MongoDB等;

6、熟悉常用的监控系统,如 Zabbix、Nagios 和 Ganglia 等;

7、熟悉systemtap、perf、oprofile 等分析调试工具;很强的Troubleshooting能力、且能够推动业务问题改善和解决;

8、具有良好的的沟通、执行能力和强烈的责任心;

9、耐心、细致、学习能力强,较强的工作计划;

10、在开源社群活跃并有积极贡献者优先,


职位二

【岗位职责】:

1、负责公司内部信息安全平台的基础运维工作,处理值班问题,确保系统服务稳定性;

2、负责运维自动化/标准化方案设计,自动化工具及平台研发,提升运维效率;

3、负责生产、测试、灰度多套环境的部署和维护,配合研发、测试团队进行应用部署;

4、制定信息安全集群监控和报警方案,处理报警问题;

5、定位与分析运维问题,给出解决方案。

【岗位要求】:

1、计算机相关专业,本科及以上学历,至少2年以上的大规模系统运维经验,2年以上运维开发经验,有deveops开发经验或有中大型互联网公司运维自动化经验者优先;

2、具备openstack或docker集群运维经验;

3、掌握shell/python/perl/php其中一种脚本语言,有Python实际项目经验,熟练掌握Django、Tornado等任一Web开发框架者优先;

4、掌握互联网常用的中间件维护、管理,例如redis、mongodb、kafka、memcached、dubbo等;

5、掌握tomcat、nginx等常见应用的搭建、配置、优化;

6、掌握zabbix、nagios、elk等系统的搭建、配置、优化;

7、掌握一种大规模自动化运维工具(saltstack、ansible、puppet),有二次开发经验优先;

8、熟悉linux/uinx,windows操作系统基础原理及常用操作;

9、熟悉常见运维配置及优化,如Svn/git/Ansible/Nginx/Tomcat/salt等;

10、熟悉TCP/IP、HTTP等协议,有良好的网络、数据传输、安全、计算机体系结构方面的知识;

11、认同DevOps文化,重视自动化方式处理各种问题;

12、具备良好的项目规划、推进能力;

13、具有良好的沟通协调能力、较强的团队合作精神、优秀的执行能力;

14、有很强的分析和解决问题的能力。


【4】、岗位:系统运维总监

月薪:50K-80K

技术:管理、运维体系、商务、数据中心、网络

职责描述:

1.负责改进完善现有运维业务体系,并且支持各子公司IT运维工作;

2.负责完善现有IT服务体系,改进、完善IT服务流程、标准和操作规范;

3.保障运维安全,处理运维事故,优化各项维护工作标准操作规范,不断降低系统风险,能7X24处理各类应急事件,建立合适的应急预案并组织演练;

4.负责整体构建和完善运维队伍,计划、组织、协调、监控和评价ERP、BI、OA、IT基础设施等运维部门和团队的工作;

5.负责制定运维资源需求计划,并管理和合理使用运维资源,有效控制整体运维成本;

6.负责运维收费项目、云服务项目的计费和收费体系建设及持续改进。

任职资格要求

1.计算机网络或计算机相关专业,校全日制本科以上学历;

2.有8年以上运维经验,有最少3年以上的运维管理经验;

3.熟悉大型企业集团整体信息系统架构,熟悉主数据和数据仓库在集团信息化架构中的地位、作用及运维要求;

5.在数据中心机房、服务器、网络和存储日常运维工作点及应急事故处理方面具有丰富经验

6.良好管理能力、沟通能力、团队精神、服务意识和敬业精神,能很好地组织并实施技术相关工作;

7.具备面对压力,较好的解决问题能力;具有优秀的自主学习能力,自我管理能力,具有高度责任心。


最后的最后,系统运维方面的问题可以在评论里和私信里问我,想学习系统运维的可以关注我们有用IT哦

对于到底应该如何学习掌握Linux运维必备基础技能,我总结各位大佬的观点:

首先你需要知道的是:Linux运维工程师必备“技能”= Linux运维工程师必备“工具”

意思就是:你学会了“工具”的使用,你就掌握了“技能”的使用。这样一说有没有觉得原来“技能”的学习是如此简单。(心虚,哈哈哈!!!)

以下就是我梳理的必备“技能”的学习:

Linux基础入门:

(1)Linux命令大全——基础必备(基础命令学习参考:

Linux命令大全(手册)_Linux常用命令行实例详解_Linux命令学习手册



(2)Linux内置编辑器Vi/Vim——类似于windows系统中的办公软件Word的使用(Vim学习参考:

在线VIM模拟学习 在线Emacs模拟学习 - aTool在线工具

/

Linux vi/vim | 菜鸟教程



(3)远程登录到Linux系统工具——实属“居家旅行,学习必备”,哈哈哈(运维XShell学习参考:

https://blog.csdn.net/mengzuchao/article/details/80072416


(4)Linux基础服务——HTTP,DNS,DHCP,NTP,FTP,NFS,Samba,Mail等等


(5)Linux脚本语言——基础必备:Shell 加分项:Python ,Perl,PHP(shell学习参考:shell入门教程:http://www.runoob.com/linux/linux-shell.html/

Shell 教程 | 菜鸟教程

/ shell在线工具:

菜鸟教程在线编辑器



(6)网络基础——基础入门:CCNA 中级进阶:CCNP高级深入:CCIE(举例:思科认证)


(7)数据库——首选:MySQL 其次:Oracle,NoSQL


(8)防火墙——安全必不可少,常用工具:iptables


(9)监控工具——老牌监控:cacti,nagios 王牌监控:zibbix


(10)集群/高可用


(11)数据备份——一定要多掌握工具:tar,dump,rsync等等

没有备份的服务器,就是在作死!!!

没有备份的服务器,就是在作死!!!

没有备份的服务器,就是在作死!!!

重要的事情说三遍!!!

(12)其他



最后总结一下

  1. 以上几点的学习应该可以帮助你该如何入门了(个人建议:若是在Linux运维方面没有学习的打算,最好不要入门,以了解为主,然而,如果你想成为别人眼里的“大牛”的话,还是老老实实学技术吧)。这其中有些技术会比较难学,例如apache和nginx中还有些很重要的技术,如系统调优和服务优化,还有程序优化,这些在没接触工作前很难学习到的;还有脚本那部分的学习也是很吃力的,我建议是先学熟shell,等工作后再学另一门脚本语言,这样会比较好。所以,如果你想好了,那么就开始你的Linux的学习之旅吧
  2. 以上就是踏入linux运维工程师需要掌握常见的基础必备工具,其实还需要学习的工具远不止于以上的介绍,具体的使用在学习时需要用到再学习。最后我再提醒一下,这里所指的工具相当于技能,而不是像windows或ubuntu那些图形化工具,那些工具没用的,还有,学linux就别装图形界面,这样虚拟机就不用吃太多内存。

无论是系统运维,还是应用运维,均可分为“纯手工”——> “脚本化”——> “自动化”——>“智能化”几个阶段,其中自动化阶段,主要是将一些重复性人工操作和运维经验封装为程序或脚本,一方面避免重复性操作及风险,另一方面提高执行效率。在自动化运维的转变过程中,经常使用的可能就是shell脚本了,今天主要分享下shell脚本开发在运维工作中的一些经验总结。

小脚本有大智慧,别小看几十行代码,夹杂着系统设计、代码规范和操作经验等等细节,在建设自动化运维的工作中,还是很值得我们研究学习的,下面总结这些也都是源于各位脚本达人和我们在自身工作中“遇到的坑”、“摔过的跟头”和“排过的雷”,与大家共享。

这里主要介绍并参考我行已经形成的一些shell编写规范,编写时严格遵守这些规范,不仅使编写人受益,同时也能提高使用者的执行效率。

1)脚本开头部分应有脚本功能说明、参数使用说明、作者姓名、创建/修改日期、版本信息,格式为:

2)脚本编写时,注意格式对齐,如所有的循环或者判断语句前后的语句进行对齐,以及case的选取完全,如:

3)脚本开头执行时,执行如下命令,在执行过程中若遇到使用了未定义的变量或命令返回值为非零,将直接报错退出:

4)建议将命令行的每个参数放在单引号、双引号中,特别是rm、mv等可能对生产现有数据造成修改的操作,建议使用垃圾箱策略:rm操作转意为mv操作,制定文件保存目录,以防回退,并定期清理:

5)命令行中参数需要使用‘*’、‘?’通配符的,应依据最精确匹配原则,如能确定文件、目录名称的前缀、后缀、扩展名及其他可识别关键字的,须在参数中包含该信息,如能确定文件、目录的长度应使用‘?’通配符,不得使用‘*’,推荐的使用方式:

不推荐使用的方式:

禁止使用的方式:

6)给数值型变量的赋值后,需由手段保证变量的值为数值型,避免在后续的处理中出现异常:

7)在判断条件中使用的变量,必须包含在双引号中,如:

禁止使用的方式:

8)对文件进行打包备份时,必须使用相对路径进行打包,如:

严禁将全路径打入tar包, 如:

9)对于打包后还需进行压缩的文件,建议使用管道进行处理,如:

不建议两部分分开执行:

10)使用ps命令筛选进程时,如能确定进程所属用户,必须在参数中指定用户名称,如其输出作为kill命令的输入,则必须指定进程所属用户,如:



这里介绍的主要是日常shell编写中遇到比较隐蔽或看似简单,却难以发现的“坑”,编写中应尽量避免使用,使用更优的方法避免重蹈覆辙。

1)更新文件使用>不用cp

使用>修改和回退文件时,保留原文件的属组和权限,避免使用cp时权限属组被修改。

2)使用kill前确认

关键字用-w 精确匹配字段;

kill前后都保留现场, 两次ps -ef|grep -w 关键字|grep -v grep >>/tmp/kill_进程名_.backup;

删除前要校验,获取进程号是否唯一,避免多杀或误杀的情况。

3)使用rm前确认

删除前备份删除对象信息,避免使用变量,直接使用文件和目录名;

如果必须使用时,删除前,建议检查避免误删,删除目录和文件信息保留:





建议禁用find遍历根目录进行查找,同时删除前进行确认,避免多删或误删的情况。

4)For循环的坑

for循环的in条件按空格来区分,避免进入不正确或死循环。





5)while循环的禁忌

如果还想使用循环中的变量,不要while结合管道使用。





6)慎用cp

这句话基本上正确,但同样有空格分词的问题。所以应当用双引号:





但是如果凑巧文件名以 - 开头,这个文件名会被 cp 当作命令行选项来处理。

可以试试下面这个:





但也可能再碰上一个不支持 -- 选项的系统,所以最好用下面的方法:





7)慎用cd

避免使用cd到操作目录再操作的方式,可能导致进入目录失败,误删除,如:





建议如下:





8) 用[[ ]]代替[ ]





当$var为空时,上面的命令就变成了[ ="bar" ]

类似地,当$var包含空格时:

[ space words here = "var" ]两者都会出错。所以应当用双引号将变量括起来:

[ "$var" = var ] 几乎完美了。

但是,当$var以 - 开头时依然会有问题。在较新的bash中你可以用下面的方法来代替,[[ ]]关键字能正确处理空白、空格、带横线等问题。





另注意,[[适用于字符串,如果是数值,要用如:(( $var > 8 ))


9)管道操作中不要同时读写文件





你不能在同一条管道操作中同时读写一个文件。根据管道的实现方式,file要么被截断成0字节,要么会无限增长直到填满整个硬盘。如果想改变原文件的内容,只能先将输出写到临时文件中再用mv命令。





10)cd的易错问题

cd 有可能会出错,导致要执行的命令就会在你预想不到的目录里执行了。所以一定要记得判断cd的返回值。





如果你要根据cd的返回值执行多条命令,可以用 ||。





关于目录的一点题外话,假设你要在shell程序中频繁变换工作目录,如下面的代码:





不如这样写:





括号会强制启动一个子shell,这样在这个子shell中改变工作目录不会影响父shell(执行这个脚本的shell),就可以省掉cd - 的麻烦。





目前行里自动化工具越来越多,无论是应用的MAOP或系统的SMDB,自动化实现都还是日常运维脚本的调用,结合日常运维的一些经验,脚本中就更需要考虑周全和控制风险。这里介绍一些结合运维场景的脚本应用,希望规避以前犯过的错,重点在控制风险。

1) 支持交互式脚本的应用

很多脚本中需要进行交互,在规避风险的同时,需要通过自动化工具发布来支持交互,可以使用expect,示例如下:





也可以使用curl工具来替代简单的交互:

#FTP SFTP下载

curl-u ftpuser:ftppassword -O "sftp://ftp_ip:ftp_port/pathfile"

#FTP SFTP上传

curl-u ftpuser:ftppassword --ftp-create-dirs-T upfile "sftp://ftp_ip:ftp_port/filepath/upfile"

2)脚本规范执行和日志追溯

直接执行的脚本很危险,要提示用户如何使用脚本,并记录日志以便跟踪。

示例如下:





3)脚本的并发锁控制

避免多人同时执行或并发同时执行的异常问题,建议增加锁机制,示例如下:





4)控制脚本不退出的风险

周期频繁执行的脚本,需要防止脚本hang住不退出,导致后续脚本再次执行。





5)避免集中发布脚本造成的风险

使用ftp、sftp传输、下载文件,或者集中访问存储端口时,尽量增加发布对象散列,避免集中操作造成存储端口拥堵,跨防火墙流量超限报警等影响。





6)避免文件无限增长的风险

向一个文件中追加数据时,一定要设置阀值,必要时清空,避免文件无限增大:





目录增加清理过期文件策略,避免产生的文件越来越多,造成文件节点用尽:





目录中的文件过多,会报参数太长错误无法删除,建议放在循环中遍历删除:





总结:

鉴于以上脚本,我们可以从中汲取一些经验,规避一些风险:

通过增加日志记录输出和脚本执行的方法说明,并自动交互和传递参数,避免执行脚本的操作风险;利用文件锁机制和运维中一些规避风险的方法,使得脚本自动执行起来更便捷更安全。

1. 通过规范类脚本的定义,标准常量定义、清晰的注释、函数和变量大小写用法,细节中可以看出严谨,即使只有几行,也能体现出一名优秀脚本开发人员的素质。

2. 通过易错类脚本中的“坑”,使得 shell面向过程的编写更得心应手,让脚本规范的同时,逻辑也更严谨清晰,避免了错误,也提高了脚本的开发效率。

3. 通过运维场景的脚本应用,规避各种开发和执行过程中的风险,使得shell脚本不仅能支持自动化发布,更可以全面智能化的为运维服务。

通过学习别人优秀的脚本,不断吸取经验,拓宽运维脚本的开发思路。虽然你现在还不是shell专家,但是想成为shell专家关键在于能否将日常经验及时进行总结和思考,并用创造性的思维去解决问题,不断积累!不断提高!大家共勉!

本文转公众号:LD 匠心独运维妙维效

运维工程工程师需要掌握的技能有哪些?来看这张图就够了!

Linux运维学习路线图(含所需要掌握的技能哦):

各阶段学习可掌握的核心能力

Linux运维学习资源:

网络安全运维基础入门

链接:https://pan.baidu.com/s/14O6z1-fDQkdC7htBMPv-LA 密码:y5xn

网络安全+运维进阶教程-学以致用,得心应手

链接:https://pan.baidu.com/s/13ySgg7pHENYyP0Ud905tQQ 密码:v4ri

Linux运维工作场景解决方案零基础到就业

链接:https://pan.baidu.com/s/1DL4A3WqLouzQVJ0dT3VXeQ 提取码:1ey9

http://yun.itheima.com/course/363.html?stt

链接:https://pan.baidu.com/s/1nvAQ-0QECVDueNjYAK245w 密码:emem

使用Jumpserver 管理“绝地求生:刺激战场”数万台游戏服务器

资料链接:https://pan.baidu.com/s/1SMZENPd67C3oMfnYPwLiFA

提取码:3nq5

Hi,题主,

我想从以下几个方面来介绍可能要学习的基础技能

操作系统

操作系统是一切运行的地方,拥有相关的基础知识十分重要。Linux 是你最有可能每天使用的操作系统,尽管有的组织会使用 Windows 操作系统。要开始使用,你可以在家中安装 Linux,在那里你可以随心所欲地中断,并在此过程中学习。

脚本

接下来,选择一门语言来学习脚本编程。有很多语言可供选择,包括 Python、Go、Java、Bash、PowerShell、Ruby 和 C / C++。我建议从 Python 开始,因为它相对容易学习和解释,是最受欢迎的语言之一。Python 通常是遵循面向对象编程(OOP)的准则编写的,可用于 Web 开发、软件开发以及创建桌面 GUI 和业务应用程序。

学习了 Linux 和 Python 之后,我认为下一个该学习的是云计算。基础设施不再只是“运维小哥”的事情了,因此你需要接触云平台,例如 AWS 云服务、Azure 或者谷歌云平台。我会从 AWS 开始,因为它有大量免费学习工具,可以帮助你降低作为开发人员、运维人员,甚至面向业务的部门的任何障碍。事实上,你可能会被它提供的东西所淹没。考虑从 EC2、S3 和 VPC 开始,然后看看你从其中想学到什么。

编程语言

如果你对 DevOps 的软件开发充满热情,请继续提高你的编程技能。DevOps 中的一些优秀和常用的编程语言和你用于脚本编程的相同:Python、Go、Java、Bash、PowerShell、Ruby 和 C / C++。你还应该熟悉 Jenkins 和 Git / Github,你将会在 CI / CD 过程中经常使用到它们。

容器

最后,使用 Docker 和编排平台(如 Kubernetes)等工具开始学习容器化。网上有大量的免费学习资源,大多数城市都有本地的线下小组,你可以在友好的环境中向有经验的人学习(还有披萨和啤酒哦!)。

其他的呢?

如果你缺乏开发经验,你依然可以通过对自动化的热情,提高效率,与他人协作以及改进自己的工作来参与 DevOps。我仍然建议学习上述工具,但重点不要放在编程 / 脚本语言上。了解基础架构即服务、平台即服务、云平台和 Linux 会非常有用。你可能会设置工具并学习如何构建具有弹性和容错能力的系统,并在编写代码时利用它们。


关于更多和运维工程师,DevOps 相关的知识,你可以参考我的这篇文章:

Linux中国:如何转职为 DevOps 工程师

以及,如果你对 Linux、运维等感兴趣,你可以关注我的知乎账号,查看更多文章。

责任编辑:
热门阅读排行
© 16货源网 1064879863