怎样全方面系统的学习linux技术

全世界60%的人都在使用Linux几乎所有囚都受到Linux系统的“恩惠”,我们享受的大量服务(包括网页服务、聊天服务等)背后几乎都是由Linux系统支撑的服务器超过20亿人每天都随身携带基于Linux内核开发的 Android手机出门,Linux也广泛应用在嵌入式系统上

因此学习Linux系统变得尤为重要,对于普通用户而言平面式的学习Linux系统的基本使用巳经足够,但对于开发者或者运维人员而言深入学习Linux的多个层次尤为重要。

我接触Linux陆陆续续有接近6年成功的从对其一无所知到应用自洳,目前也还在持续地学习更深层次的核心知识接下来将以一个学习者的身份将我的“学习计划”分享给大家。这篇文章不会从技术细節的角度大展篇幅主要介绍学习路径和方法论。

作为一名对Linux毫无认知的新手首要的第一步就是选择一款适合上手的Linux发行版系统(个人建議可以选择使用习惯偏windows的Linux桌面操作系统,如Ubuntu、openSUSE、Fedora等)Linux操作系统的安装是入门必备的技能(包括MBR、EFI两种引导方式的安装,故障排查和解决的能仂等)

当Linux投入日常的使用后,我们会渐渐去学习一些便捷的操作习惯(基本的命令操作、快捷键配置、软件安装和卸载、系统管理等)当我們发现在Linux操作系统下无法驾驭某一个点时,我们会通过查阅工具书到查看博文和问答系统去解决直到有一天,我们发现日常的使用已经無法满足我们的求学欲望了

由于日常的Linux使用技巧已经能够非常熟练地使用了,由此对一部分系统盎然的同学会触发深入学习的欲望这個学习阶段将不再是一个零散的知识点和技能学习了,Linux的开源精神带动了一代又一代的前辈他们将学习经验总结和整理成各种知识档案,通过整合这些资源我们能够进行合理系统的Linux学习。

说在前面:系统地进行一个操作系统的学习之前扎实的计算机基础知识掌握(操作系统、计算机基础、计算机网络等)是极其必要的,否则在后续的学习过程中将会遇到非常棘手的基础技术壁垒,如专业术语、基础概念鈈清晰

简言之,这是学习过程是整合资源进行系统学习解决问题和学会思考的阶段。敬上系统吸收Linux系统的技巧

  1. 提出解决问题的方案嘚技能:学会通过搜索引擎和社区(google、stackoverflow等)寻求问题的解决方案,通过符合(提问的智慧规范)的方式向前辈们提问

  2. 学会思考和总结:徘徊在学習和解决问题的过程中,定然会让你刨根问底的浸入思考将这些思考的东西沉淀下来,做以总结将学习的路径传承和延续下去,继续發扬Linux的开源精神

  3. 实验和应用:动手去玩弄你的Linux系统吧,尽可能给自己搭建一个可以肆意妄为的操作环境吧!

3应用和知识体系的形成

前言裏面已经介绍了在实际生活环境下Linux系统的一些应用场景,实际上Linux的应用也是非常的广泛在熟练掌握得前提下,则足以开始大展身手应鼡于工作和生活中了从网站的日常部署和维护、到网络环境管理、到各种应用服务的使用,几乎一切我们享受着的IT服务都能通过Linux系统來完成。

当你开始思考Linux的运行机制、系统架构、IO复用甚至开始动手改造协议栈的时候,别忘记理清楚自己所掌握的技能图谱别忘记分類和记录你踩过的每一个坑,关注的细节点这些东西层层相关,这条学习路径将会组成属于你的Linux知识体系

4深度学习和Linux职业化发展

说实話对于Linux的学习笔者也仅是暂时止步于阶段3,阶段4算是对前辈们的一些总结以及对未来学习路线的规划

运维和(内核/应用)开发是Linux深度学习者嘚两条截然不同的发展路线,运维工程师更注重于Linux的应用和维护技巧以及维护工具的使用和开发,而开发工程师们需要深入去学习内核源码解读、驱动开发、嵌入式系统开发、应用程序开发等

学习阶段的划分对于学习固然有偌大的帮助,但其实更重要的找到适合自己的荿长方式和节奏

Linux云计算免费课程火热开启中,最后2天免费课程抢先中运维干货内容免费听,点击文末“阅读原文”即可免费听运维课火速抢先~~~~

PS:记得查收小编送你的免费大礼包呦~

▼▼点击【阅读原文免费听5天Linux运维干货分享课,火热开讲中速来抢!

本篇Linux系统运维指南将会大家总结┅些知识点看完这篇文章会让你对linux有更加清晰的理解和运用。

Linux博大精深我只在此讨论一些我对线上Linux机器维护人员的基本需求,比如装機加硬盘,配网络只讨论CentOS 6,或者类似的RHEL当然Ubuntu也可以此类推,但是一些新特性不予讨论因为我不懂,比如CentOS 7的xfs不予讨论并不是说xfs不恏,而是以目前我的Linux水平需要更新很多xfs的知识驾驭需要时间。CentOS 7将ifconfignetstat等原来常用的命令也干掉了,用iplsof替换是更加好的工具,但是大部分嘚线上机器都应该还没有更新到 CentOS 7下面我们以CentOS 6作为基础,谈我认为最基本的4点

CentOS有一个minimal版本,相对于标准版去掉了很多Service比如Network Manager,安装最小蝂本以后的网络配置是需要admin进行写配置文件的我个人认为这样是比较好的,因为这样才能知道Linux内核真正关心的是 哪些配置文件直达核惢。一些必要的监控工具完全可以通过yum install来完成。作为线上机器还是最小化安装,做到能不开的服务就不开能关掉的端口就关掉,这樣既能将宝贵的硬件资源留下来给应用程序也能够做到更加的安全。

除了将能关的端口关掉能不用的服务关掉以外,安全还需要做到特定的服务只能访问特定的内容哪怕是root账户,不能访问的文件和文件夹还是不能 访问更加不能操作。开启SELinux以后能够做到在不修改SELinux的凊况下,指定的服务只能访问指定的资源对于ssh要做到关闭账户密码登 录,只能通过秘钥登录这样在保证秘钥不被盗用的情况下是最安铨的。

$1.3 资源按需调度

我们经常会遇到这样一个问题假设将磁盘sda挂载到/var目录,但是由于log太多或者上传的文件等等其他因素将硬盘吃光了洅创建一块sdb 磁盘就无法挂载到/var目录了,其实Linux自带的lvm已经解决了这个问题并且CentOS默认就是用lvm来管理磁盘的。我们需要学会如何格式 化一块硬盤为lvm然后挂载到对应目录,在空间被吃光前能够添加一块硬盘就自动扩容

Linux本地要利用好net_filter,也就是iptables来规划服务哪些网络流量,抛弃哪些网络流量以及在进行组网的时候需要用 router来进行网关的创建,在遇到网络问题的时候通过netstat来查看网络访问异常网络这块内容很多很杂,各种参数TCP/IP协议栈等等, 但是往往问题还就是出在网络这块所以要给与高度的关注。

小谈几点我对Linux的认识

Linux将所有的事物都看成文件,这一点人尽皆知我想说的是,除了传统的ext文件系统Linux在抽象不同的资源的时候其实有各种不同的文 件系统,都是从需求和使用出发仳如proc文件系统就是针对进程的抽象,使得修改对应进程的值就可以直接改变进程的行为再比如,对于远程ssh登录的 pts设备Linux有对应的devpts文件系統。看下面表哥的type一栏

Linux的-rwxrwxrwx权限管理也可谓人尽皆知,其实Linux自己也意识到了这样的权限管理所带来的一些局限性首先rwx的权限管理是基于鼡户和组的,并且只是大致的分为owner|group|other这三类无法再作更加细粒度的划分。有鉴于此Linux目前默认是有ACL(Access Control List)管理的,所谓ACL就是能够提供更加细粒度嘚用户和组管理比如可以明确哪个user可以有什么样的权限。如下示例

而SELinux提供了不基于用户与组的权限管理SELinux是基于应用程序的,什么样的應用程序可以使用什么资源对于这些资源这个应用程序能干嘛,这个就是SELinux的管理方式

/usr/local/bin等目录下,一般而言配置文件在/etc/app_name下还有一个chkconfig的笁具来管理各个runlevel下需要启动的Service。这样的约定俗成使得管理员在配置和使用的时候非常方便Linux标准的Service都会将log记录到/var/log/messages中,使得系统管理员不需偠翻阅各种log直接在/var/log/messages中就可以找到绝大部分的log来判断当前系统是否正常。更甚者syslogd被rsyslogd替换以后,可以将/var/log/messages中的内容通过UDP发送到远端用专业的log汾析工具进行分析我们需要学习Linux上Service的这些优秀的编程习惯和技巧。

根据$1中的需求下面是我记录的一些基本的磁盘操作。

df -lah 查看磁盘的使鼡情况

fdisk -l 查看插入到磁盘驱动器中的硬盘; sd(a,b,c)(1,2,3)其中a是第一块磁盘,b是第二块磁盘1,23表示磁盘上的主分区,最多4个用fdisk从磁盘创建分区并且格式化。

LVM(logical volume manager)主要就是满足加硬盘就能直接写数据的功能,而不会出现磁盘满了新的磁盘只能挂载其他目录的情况。lvm有几个概念VG, PV。将磁盤lvm格式化创建PV, 创建VG,将创建的PV加入VG然后在VG中创建lvm,然后就可以动态增加大小了注意,将磁盘格式化为lvm但是lv的格式化需要用ext,然后 財能mount上去参考这篇文章CentOS 6 卷组挂载硬盘教程

磁盘IO效率(IOPS)需要用vmstat, top等工具来查看。和性能相关的调优和监控留待后续文章详述

网络的坑很多,需要把网络搞通没个34年很难。下面从网络的配置文件着手简单理一下网络方面的内容。网络最难的方面应该是如何搭建一个合理的高效的局域网或者城域网这个需要有专业的网络知识。

$4.2 与网络有关的一些命令

router -n查看路由的命令特别是要看带G的,表示gateway而带U的表示up。

PAM只需要简单了解就行是一个可插拔的认证模块。我的理解是:开发Linux的极客们搞出来的可复用的一个组件举个例子,现在有一个app想要验證当前的登录用户是否有权限操作某个目录,那么在PAM里面有现成的模块app只需要include这个模块,给出一个配置文件就可以了。有一个非常好嘚关于PAM的视频教程请看这里

PAM是应用程序用来进行身份验证的。早期的身份验证和应用程序本身耦合后来把身份验证单独抽出来,通过PAM來进行管理

SELinux也有一个非常好的视频教程请看这里

SELinux对“运行程序”配置和检查其是否有权限操作“对象”(文件系统),而普通的ACL(rwx)就是根據文件所属owner及其组来判断SELinux是看可执行文件的type和目录文件的type是否兼容,来决定可执行文件是否能操作资源

先删掉全部规则然后添加,比較简单添加的时候,先添加策略再添加细部规则。一般来讲我们需要关注的是filter这个表的INPUT与OUTPUT

sar -W 1 查看swap,查询是否由于内存不足产生大量内存交换

lsof -i:port 查询哪个进程占用了这个端口号

希望这篇文章可以帮助到你总之,同学们你想要的职坐标IT频道都能找到!

Minix是一个迷你版本的类Unix操作系统,由塔能鲍姆教授为了教学之用而创作采用微核心设计。它启发了操作系统的创作

你可能不知道,但是在你的英特尔系统里除了你嘚主操作系统之外,还有一个操作系统在运行这就是 MINIX。

早在今年 5月EFF 就发布了一篇文章,介绍了自 2008 年以来这十年间英特尔发布的所有處理器都运行了一个修改版的 MINIX 3,它被称之为“管理引擎(ME)”这个由计算机科学教授 Andrew Tanenbaum (对,就是那位早期曾经和 Linus Torvalds 论战过的教授)作为一個教育工具开发的类 Unix 操作系统内置于每一款新英特尔处理器内

MINIX 运行在你的 CPU 的 “Ring -3”(负数 3) 层上,虽然是你的 CPU但是你无权访问它。你能夠实际访问的最低的 “Ring” 是 “Ring 0”你的操作系统(比如 Linux)内核就运行在这一层,而大多数用户程序则运行在 “Ring 3”(正数 3)上

完整网络堆棧、文件系统、许多驱动程序 (包括 USB、网络等),以及一个 Web 服务器!

没错Web 服务器。在你的 CPU 里面有一个秘密的 Web 服务器您是不允许访问的,而苴显然,英特尔并不希望你知道我们不知道这个 Web 服务器究竟有什么用途,也许是 CPU 厂商会用它来访问一些数据或者进行一些控制但是這一切,你都不知道

据称,Google 正在积极从其内部服务器上移除这个管理引擎显然 Google 对其安全风险感到忧虑。

这个事情有两个有趣或者说疯誑的地方:

首先由于英特尔 CPU 的流行,所以世界上最流行的操作系统恐怕不是 Windows,也不是 Linux而是这个 MINIX——我们都是 MINIX 用户!

其次,由于你根夲没权限访问到“Ring -3”而这个 MINIX 却能够完全访问你的整个系统——这就是一个巨大的安全风险,运行权限极大但是从不更新。

在过去几天哆家媒体报道了这一消息以至于惊动了 Andrew 本人。他在个人网站上发表了公开信强调自己并没有直接参与这个项目,如果这个系统有后门嘚话这与他无关(他对此并没有明说只是暗示)。

Andrew Tanenbaum 称MINIX 3 在 2000 年决定采用 BSD 授权,原因是企业不喜欢 GPL 许可证认为 GPL 会让他们花费许多时间精力金钱去修改代码,然后免费提供给竞争对手他说,英特尔的工程团队在几年前接触了他询问了 MINIX 3 大量的技术问题,要求他对 MINIX 3 进行大量改變减少内存占用,选择性的关闭不需要的功能

在短暂的活跃之后双方进入了静默,直到现在媒体报道英特尔处理器都运行了 MINIX 3 他才知道他对此感到吃惊,但并不在意因为该操作系统是 BSD 授权,英特尔不需要付钱给他他只是希望英特尔在部署了 MINIX 3 之后能通知他一下,这只昰礼貌问题

本文地址:编辑:郑帅,审核员:逄增宝

本文原创地址:编辑:公共, 帐号审核员:暂无

我要回帖

 

随机推荐