如今有很多关于Linux的书籍,博客。大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多Linux初学者望而却步,未入其门就路过了。
下面笔者给大家找了一下一个资深Linux用户关于学习Linux的一些建议:
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。
作为一个 Linux系统管理员,我看了许多有关Linux的文档和书籍,并为学习Linux付出了许多艰苦的努力。当真正获得了一份正式的Linux系统管理工作后,我更加深刻地理解了Linux的灵魂:服务与多用户。
Linux系统知识是非常广博的,但是只要掌握了重点知识,管理它并没有想象中的那么可怕。在下面我会将作为系统管理员的一些工作心得和总结出来的经验系统地介绍给大家。
一、 学习的目的
通过Linux的学习掌握UNIX的目的想必不用多说了,在这个网络人才身价倍增的年代,想靠技术吃饭又不想掌握网络和编程技术是不明智的。当一人第一次听说Linux并跃跃欲试的时候,总会提出几个?
它是什么(What)? 为什么要用它(Why)? 怎样学习它(How)?
做为开放源码运动的主要组成部分,Linux的应用越来越广泛,从我们平时的娱乐、学习,到商业、政府办公,再到大规模计算的应用。为了满足人们的需求,各种各样的、基于Linux的应用软件层出不穷。
只要具备了LinuX的基本功,并具有了自学的能力之后,都可以通过长期的学习将专项内容予以掌握。
二、 从命令开始学习
常常有些朋友一接触Linux 就是希望构架网站,根本没有想到要先了解一下Linux 的基础。这是相当困难的。虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。
Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。
这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解 Linux系统:
- 安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
- 文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
- 系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
- 网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
- 系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho
三、 选择好的入门Linux书籍和相关视频
在各个Linux论坛中,我们看到最多的问题往往是某个新手,在安装或使用linux的过程中遇到一个具体的问题就开始提问,很多都是重复性的问题,甚至有不少人连基本的问题描述都不是很清楚。
这说明很多初学linux的人还没有掌握基本功。怎样才能快速提高掌握linux的基本功呢?
最有效的方法莫过于学习权威的linux工具书,工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。编者不再这里做过多推荐,建议入门的童鞋们多在网上搜搜相关书籍的评价以及介绍,切记零基础的童鞋不要选择内容过深的书籍。
目前网络上也有很多免费的相关视频,建议没有接触过或者刚接触运维行业的童鞋先多去看看一些免费的基础视频或者参加一些线下的免费行业介绍讲座,这样才能知道该如何入门,如何着手学习或者选择什么方式学习,这都是很重要的。
四 、养成在命令行下工作的习惯
一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。
从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外地远程系统。
五、用Unix思维思考Linux
由于Linux是参照Unix的思想来设计的,理解和掌握它就必须以Unix的思维来进行,而不能以Windows思维。不可否认,windows 在市场上的成功很大一部分在于技术思想的独到之处。
可是这个创新是在面对个人用户的前提下进行的,而面对着企业级的服务应用,它还是有些力不从心。多年来在计算机操作系统领域一直是二者独大:unix在服务器领域,Windows在个人用户领域。
由此可见,用户需求决定了所采用的操作系统。不管什么原因,如果要学习Linux,那么首先要将思维从Windows的“这个小河” 中拖出来,放入Unix的海洋。
六 、学习shell和Python
对于Shell(中文名称壳),习惯Windows的读者肯定是非常陌生的,因为Windows只有一个“Shell”(如果可以说是Shell的话),那就是Windows自己。用一句话容易理解的解释就是,shell是用户输入命令与系统解释命令之间的中介。
最直观的说法,一种Shell有一套自己的命令。举一个容易理解的例子,Linux的标准Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表现出来的。读者可能会不理解,Windows从命令行“进化”到了图形界面,那么Linux现在还使用命令行岂不是一种倒退?
当初刚刚接触Linux时就曾有过这种想法。可是后来发现,如果使用图形界面,那么分配给应用软件的资源就少了,在价格昂贵的服务器上,能够以较低的硬件配置实现同样的功能是非常重要的。
一台服务器有1GB内存,假设其中512MB用于处理图形界面,若要安装一个需要784MB内存的数据库软件,惟一的办法就是扩大内存。但是如果使用命令行,系统可能只需要64MB内存,其它的内存就可以供数据库软件使用了。使用命令行,不仅是内存,而且CPU及硬盘等资源的占用都要节省很多。
所以,作为服务器使用命令行是优点而不是缺点。既然Shell有这么多优点,就必须要学习它。
七、关注行业趋势更新技能
Linux运维的招聘要求感觉与往年同样薪资的招聘要求高了许多,又得会各种开源工具.还得懂K8S和docker。但凡15K以上的工资,都必须要会python,而且是要有一定的pythonweb开发能力,2016年这个时候一般的运维都是要求: shell/python/php,三选一,会点就行,但是2017年不一样了,python要具有一定的web开发能力才可以。如果不要求会python的,也势必要求shell很精通。
这里给出一点小的技能提升的建议: 大致需要学习下这四个部分:
- 自动化运维(Ansible,Puppet,Saltstack等)
- Devops(Docker,K8s,Jenkins,Jira等),
- 云服务技术(虚拟化、OpenStack、AWS及阿里云各种产品服务架构等)
- python