1. 浅谈如何学习linux(强烈推荐)
随着互联网的迅猛发展,Linux得到了广发的应用,目前市场是百分之八十服务器端都在使用Linux操作系统,小至私人企业,大至世界百强企业,均有Linux操作系统使用者,因此,Linux就业前景很不错,很多人想学习Linux,那么Linux好学吗?一般多长时间能学会?
Linux的学习说难不难,说容易也不容易,这就要看你是否掌握了合适的学习资源和方法,以及持之以恒的学习精神,如果这些都具备了,恭喜你,Linux运维工程师的大门已经向你敞开了!
对于想学好Linux的人员,可以参考一下大纲进行学习:
第一阶段:linux基础入门
Linux基础入门主要包括: Linux硬件基础、Linux发展历史、Linux系统安装、xshell连接、xshell优化、SSH远程连接故障问题排查、L inux基础优化、Linux目录结构知识、Linux文件属性、Linux通配符、正则表达式、Linux系统权限等
第二阶段:linux系统管理进阶
linux系统管理进阶包括:Linux定时任务、Linux用户管理、Linux磁盘与文件系统、Linux三剑客之sed命令等。
第三阶段:Linux Shell基础
Linux Shell基础包括:Shell编程基础、Linux三剑客之awk命令等。
第四阶段:Linux网络基础
第五阶段:Linux网络服务
Linux网络服务包括:集群实战架构开始及环境准备、rsync数据同步服务、Linux全网备份项目、nfs网络存储服务精讲、inotify/sersync实时数据同步/nfs存储实时备份项目等。
第六阶段:Linux重要网络服务
Linux重要网络服务包括:http协议/www服务基础、nginx web介绍及基础实践、nginx web、lnmp环境部署/数据库异机迁移/共享数据异机迁移到NFS系统、nginx负载均衡、keepalived高可用等。
第七阶段:Ansible自动化运维与Zabbix监控
Ansible自动化运维与Zabbix监控包括: SSH服务秘钥认证、ansible批量自动化管理集群、 zabbix监控等。
第九阶段:大规模集群高可用服务(Lvs、Keepalived)
第十阶段:java Tomcat服务及防火墙Iptables
第十一阶段:MySQL DBA高级应用实践
MySQL DBA高级应用实践包括:MySQL数据库入门基础命令、MySQL数据库进阶备份恢复、MySQL数据库深入事务引擎、MySQL数据库优化SQL语句优化、MySQL数据库集群主从复制/读写分离、MySQL数据库高可用/mha/keepalved等。
第十二阶段:高性能数据库Redis和Memcached课程
第十三阶段:Linux大规模集群架构构建(200台)
第十四阶段:Linux Shell编程企业案例实战
第十五阶段:企业级代码发布上线方案(SVN和Git)
第十六阶段企业级Kvm虚拟化与OpenStack云计算
第十七阶段公有云阿里云8大组件构建集群实战
第十八阶段:Docker技术企业应用实践
第十九阶段:Python自动化入门及进阶
第二十阶段:职业规划与高薪就业指导
2. Linux学习书籍求推荐
Linux学习书籍求推荐
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata著
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明著
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
硬件基础
1、《ARM体系结构与编程》杜春雷著
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O’Hallaron著
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
入门篇
《LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux 。另外比较热门的也可以看看《鸟哥的私房菜》等书,偏管理类的书。如果想做server方向的可以找来看看。
驱动 篇
《LINUX设备驱动程序 》就是网上说的“LDD”,经典之作,必备书籍。国产经典《Linux驱动详细解》也是一本非常不错的书,很实用,书中源代码分析比较多,基于2440的,对linux外围驱动有很全面的讲解
内核篇
浙江大学的《LINUX内核源代码情景分析》,外国鬼子的《莱昂氏UNIX源代码分析》还有《深入理解linux内核》都是出名的经典巨作。另外赵 炯的《LINUX内核完全剖析–基于0.12内核》也非常不错,对内核代码进行了详细的注释,非常有助于对内核的理解和代码的分析。
shell篇
《LINUX与UNIX Shell编程指南》
应用 编程
不用说了肯定是《unix环境高级编程》被称为unix编程的圣经。
TCP/IP篇
《TCP/IP详解》作者W.Richard Stevens也是《unix环境高级编程》的作者,牛人出的书没有一本不是经典的。但是英年早逝,默哀一下。
c语言
《The C Programming Language》正是作者造出来的c语言,书能垃圾就怪了
《c和指针》和《c缺陷和陷阱》两本必备。包含了c语言最容易出错的地方,加深c语言功力的好材料。
关于算法
《算法导论》
1 熟悉linux基本环境 >>> 《鸟哥的私访菜》《unix初级教程》 《linux编程宝典》(市面上无,图书馆有), 等等。
2 熟悉操作系统的基础知识 >>> 《现代操作系统》 《操作系统概念》
3 熟悉系统编程 >>> 《unix环境高级编程第二版》《unix操作系统设计与实现》
4 内核 按先后顺序: 《 linux内核设计与实现》 《linux设备驱动程序》 《深入理解 linux内核》 《linux内核源代码情景分析》 《深入理解linux虚拟内存系统》
5 其他一些书籍: 《freebsd操作系统设计与实现》 《solaris内核结构》 《unix高级教程:系统技术内幕》 《现代体系结构的unix系统:内核程序员的smp与cache技术》 《保护方式下的80386及其编程》 (后3本市面上没了,大学图书馆里一般都有》 《Intel64 and IA-32 Arichitectures Software Developer’s Manual》
6 其实内核玩深了,体系和编译也要学好 《计算机体系结构:量化研究方法》 《编译原理》(龙书)
Linux编程推荐书籍一览表
shell 编程
《LINUX与UNIX SHELL编程指南》
BASH宝典:
Advanced Bash Scripting Guide (如果你使用的是 GNU/Debian 系统,可以用 apt-get install abs-guide 安装该文档)
BASH Programming – Introction HOW-TO
Bash Man
用户级编程书籍:
Advanced Programming in the UNIX Environment(中文版《UNIX环境高级编程》第二版) 作者 W.Richard
Stevens/尤晋元等
GNU/Linux编程指南 作者 Kurt Wall
Linux 程序设计权威指南 作者 于明俭、陈向阳、方汉
《The Art of Unix Programming》作者 E.S.R
Computer Systems A Programmer’s Perspective
(中文名)《深入理解计算机系统(修订版)》
《Unix Systems Programming》(中文版《UNIX系统编程》)作者: (美)KAY
A.ROBBINS, STEVE ROBBINS 译者:陈涓 赵振平
网络编程:
Unix Network Programming V1 & V2,Unix网络编程卷1、2 作者 W.Richard Stevens
《unix网络编程》
XWindow编程
Definitive Guides to the X WindowSystem 作者 Dan Heller, Paula M. Ferguson
内核源代码阅读(结合源代码)和编程
(入门)
《边干边学Linux内核指导》
(高级)
《Linux Kernel Development》
《Linux内核源代码情景分析》
《深入分析Linux内核源代码》 陈莉君
《 Understanding Linux Network Internals 》即《 深入理解Linux网络内幕(英文影印版)》Christian Benvenuti
内核模块编程
《The Linux Kernel Mole Programming Guide》
Linux设备驱动编程
Linux设备驱动程序/Linux Device
Drivers 作者 Alessandro Ruibini
多线程编程
《多线程编程指南》
3. 自学Linux运维可行吗以后工作前景如何
自学Linux运维可行,以后工作前景非常好。
目前大部分网站都运行在linux的系统上,做Linux运维还是有很大前途的。同时要兼具网络能力,安全管理能力,尤其是开发能力,才会有一定发展。
但是,这岗位在被重视的程度相对研发过程其它岗位要差,工资比开发低,做事情不易被领导重视,缺乏成就感。
相关资料
应用运维的话,这个相对于对于技术能力要求会比较高一点,市场上软件的更新换代比较快,这边需要自己有足够的自学能力,和抗压能力。
当然,薪资较高,这个需要会各种应用。现在比较火的大数据,对于大数据就又好多种软件,不是说你都会,但是你要熟悉其中2-3中,才能说自己是大数据的应用运维工程师。还有各大网站,你要对于变更上限,发布流程相当熟悉,你才能说自己是一名web应用运维工程师。
4. 关于linux kernel-2.4.18重新编译的问题
.... 你太牛x了
第一 内核和 initrd文件是统一的 ,也就是说 你编译了一个内核 如果使用initrd的话 必须是你编译的内核生成的initrd ,不过这个不是必须存在的, 不过你这里必须吧 Initrd /initrd-2.4.20-8.img 这一行删除
第二, hdc=ide-scsi 这个你为什么要加载? 让系统自动处理最好, 此外 vmware下面 如果使用scsi硬盘, 那么默认的磁盘应该是 sda , 光驱一般是 hdc
还有, 内核里面的选项有3个 , Y的意思是编译进内核 也就是你这里的bzImage-2.4.18test1 文件, N是不编译, M是编译为模块,如果你的 SCSI驱动编译为模块的话 那才需要 initrd ,否则就不需要
另外 ,我想你似乎搞错了 scsi low-level drivers 这个不旁举卖是很重要好像 都编译为模块即答轮可 重要的是上面的几个scsi支持 ,这里不方便赘述,给你找个参考资料 , 你那本书太老了运逗实在
http://lamp.linux.gov.cn/Linux/kernel_options.html 这里有个很好的内核选项介绍
事实上, 不需要在内核编译上耗费太多的时间,选项没必要太精细面面俱到,基本上 ,基础的东西和文件系统驱动都编译进内核,其他的都编译为模块即可,系统会自动加载需要的 , 除非你要做深入的内核驱动程序分析 ..
5. linux内核代码编写求教
骚年,给你个提示,内核模块中可以用current,遍历进程链表,所有的进程都可以顺藤摸瓜了亲
6. 学习Linux有没有前途学Linux都能干什么现在做Linux工作的人工资能 有多高求专
我今年大一,测控专业,但是我不喜欢我的专业,也不知道他是干嘛的。所以我就 想学点别的,我在学Linux和软件开发之间徘徊,不知道那个更有潜力,哪个更赚 钱??求专业人员给我指条明路,万分感谢……
Linux能做的多了.它是一个平台,具体还要看怎么利用这个平台.
1.Linux内核开发.这里基本都是比较有难度的.像华为,小米这种的硬件公司一般有 这个职位.工资也是很高的.知识相对单一,但是操作系统底层的硬件更新也比较快. 操作系统理论也很灵活,深入不容易.主要研究的方向可能和职位也比较相关.招聘 单位也少.
2.Linux嵌入式开发.这个就是通过移植Linux到硬件平台上,然后写一些应用程序. 这个相对1来说简单不少,也好入门.薪水也行,但是工资的成长上限比较低.软硬通 吃之后才能高薪,也好自己单干.
3.Linux运维.这个得看公司了.一般大公司运维还要懂内核以及C编程之类的.但是 小公司完全就是打杂的.也用不到多少开发的知识.如果说开发是DPS,运维更像是辅 助加血什么的.这个可以报个班考个RHCE来入行.薪水起点应该是最低的吧.
4.Linux服务器开发.如果是用C/C++之类的话,要求也很高,和1差不多.因为互联网 行业才人流动性相对大,所以工资可能超过1.特别是对优化延迟什么的了解很深入 的,发展前景是最好的.这个招聘量较少,但相对内核来说多些.专业知识要求比较全 面.并且深入研究还有分布式,并行算法,集群之类的方向.想要发展的好几乎CS的基 础科目都要有非常深入的理解.
5.云运维.实际上也是运维的一种.对硬件的安装什么的较3来说应该比较少.对原理 性的东西也要求比较高,我记得前些天还在培训机构上看到有红帽云认证的.可以去 考一个.小公司对云还是有需求的.工资应该比3高点,具体我也不清楚.
6.云平台开发.现在大的云平台基本都是基于Linux的KVM的.这个也是软硬兼修的. 并且还要求掌握虚拟化技术.公司也少,国内主要有网络,华为,阿里,腾讯一些大公 司在搞.门槛高,需要的知识也比较多.大公司,自然工资很高.
如果要深入,都是需要对硬件有深入了解的.如果没有硬件基础可能会比较难理解一 些东西.总而言之在Linux平台来说对于专业的计算机人员来说比较适合.如果是跨 专业,搞Linux可能有些难度.个人建议2,3.5.这些都有培训,对于跨专业比较好吧.
windows在没落,Linux前途是一定很好的,android就是基于Linux内核的.但是你只 会Linux的话只能做3.其他的至少还要学门正统的编程语言吧?IT行业能做事都不是 只靠一个东西就能做事的.要有很多相关的背景知识.比如语言,数据库,数据结构, 网络.这都是必不可少的.
当然,你学个java,有jvm这种神器很多都不用学了.但是说实话,国内java很多岗位 难度比传统的开发难度低多了.专业知识背景要求少多了.去学个java也可以.发展 就看自己造化了.如果深入jvm难度不亚于1,4,6.
工资什么的就不用担心了.今天国家统计局不是发布数据了吗,IT排在金融之后.而 且IT做技术的比金融的平均薪水还要高.学得好肯定不会少你钱的.但是像你这种跨 专业的,具体发展我也不好预测.但是就CS的一般硕士来说,学得好的年薪基本都是 15W起步的.好的本科也有10W.好多做了7,8年多开发的能到30~40W.更高的能过60W, 甚至YY这公司传说有个年薪百万的程序员.当然这都是牛人了.反正相对其他行业是 要好不少了.一般不是混过来的话,3年拿个10W应该没问题.
IT行业对物理思维和数学要求都比较高.如果你这两个科目学得不咋的,那么还是多 想想吧.
顺带说句实话,Linux和软件开发根本不矛盾.感觉你很浮躁,像是逃避学习测绘才想 学IT的.IT也是个大坑,不要看着好就向往里跳.
更多linux相关信息,请参考《linux就该这么学》
7. 怎样阅读Linux源代码
听我的就是,问那么多干嘛,我在你身边,你还走错路!跟着我!不能给你幸福是我的错,但谁让你不幸福,我TMD去砍了他 查看文章
如何阅读linux源代码2007-09-01 14:04着linux的逐步普及,现在有不少人对于Linux的安装及设置已经比较熟悉了。与Linux 的蓬勃发展相适应,想深入了解Linux的也越来越多。而要想深入了解Linux,就需要阅读和分析linux内核的源代码。
Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码。另外还可以从互连网上下载,解压缩后文件一般也都位于linux目录下。内核源代码有很多版本,目前最新的稳定版是2.2.14。
许多人对于阅读Linux内核有一种恐惧感,其实大可不必。当然,象Linux内核这样大而复杂的系统代码,阅读起来确实有很多困难,但是也不象想象的那么高不可攀。只要有恒心,困难都是可以克服的。也不用担心水平不够的问题,事实上,有很多事情我们不都是从不会到会,边干边学的吗?
任何事情做起来都需要有方法和工具。正确的方法可以指导工作,良好的工具可以事半功倍。对于Linux 内核源代码的阅读也同样如此。下面我就把自己阅读内核源代码的一点经验介绍一下,最后介绍Window平台下的一种阅读工具。
对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。对于linux内核源代码来讲,我认为,基本要求是:1、操作系统的基本知识;2、对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。我们知道现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内 核源代码就可看出,各个目录大致对应了这些方面。Linux内核源代码的组成如下(假设相对于linux目录):
arch 这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。
include 这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分别有一个子目录。
init 此目录包含核心启动代码。
mm 此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,如对应于X86的就是arch/i386/mm/fault.c 。
drivers 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。
ipc 此目录包含了核心的进程间通讯代码。
moles 此目录包含已建好可动态加载的模块。
void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);
fs Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。
kernel 主要核心代码。同时与处理器结构相关代码都放在arch/*/kernel目录下。
net 核心的网络部分代码。里面的每个子目录对应于网络的一个方面。
lib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下。
scripts此目录包含用于配置核心的脚本文件。
Documentation 此目录是一些文档,起参考作用。
清楚了源代码的结构组成后就可以着手阅读。对于阅读方法或者说顺序,有所谓的纵向与横向之分。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是分模块进行。其实他们之间不是绝对的,而是经常结合在一起进行。对于Linux源代码来讲,启动的代码就可以顺着linux的启动顺序一步一步来,它的大致流程如下(以X86平台为例):
./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的start_kernel()。而对于象内存管理等部分,则可以单独拿出来进行阅读分析。我的体会是:开始最好按顺序阅读启动代码,然后进行专题阅读,如进程部分,内存管理部分等。在每个功能函数内部应该一步步来。实际上这是一个反复的过程,不可能读一遍就理解。
俗话说:“工欲善其事,必先利其器”。 阅读象Linux核心代码这样的复杂程序令人望而生畏。它象一个越滚越大的雪球,阅读核心某个部分经常要用到好几个其他的相关文件,不久你将会忘记你原来在干什么。所以没有一个好的工具是不行的。由于大部分爱好者对于Window平台比较熟悉,并且还是常用Window系列平台,所以在此我介绍一个Window下的一个工具软件:Source Insight。这是一个有30天免费期的软件,可以从www.sourcedyn.com下载。安装非常简单,和别的安装一样,双击安装文件名,然后按提示进行就可以了。安装完成后,就可启动该程序。这个软件使用起来非常简单,是一个阅读源代码的好工具。它的使用简单介绍如下:先选择Project菜单下的new,新建一个工程,输入工程名,接着要求你把欲读的源代码加入(可以整个目录加)后,该软件就分析你所加的源代码。分析完后,就可以进行阅读了。对于打开的阅读文件,如果想看某一变量的定义,先把光标定位于该变量,然后点击工具条上的相应选项,该变量的定义就显示出来。对于函数的定义与实现也可以同样操作。别的功能在这里就不说了,有兴趣的朋友可以装一个Source Insight,那样你阅读源代码的效率会有很大提高的。怎么样,试试吧!
8. 如何学习linux买了鸟哥的linux私房菜和服务器架设,一边看书一边实践,已经看了三遍了
谈谈如何学习Linux
1、假如你从来接触过Linux的话,首先要做的就找一本指导书来学习
2、现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面
鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇
3、“鸟哥的私房菜”讲的很全面,可能会包括一些已经过时的知识点,但是这本书是入门Linux必备
9. 边干边学linux内核怎么样
要看你学的怎么样了,如果你会拿边学边干还差不多,不过建议还是先自己先练练手,免得到时候出现问题了解决不了。
10. 如何学习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等运维自动化工具)
第四阶段:资深方向进阶
1、 大数据方向(需要对hadoop、storm等常见开源大数据系统需要深入了解)
2、 云计算方向(主要是openstack这套东西,当然像一些kvm等虚拟化技术,也是返裂需要掌握的,现在docker也比较流行)
3、 运维开发(主要是python运维开发)
4、 自动化运维(在之前自动化基础上做深入)
5、 运维架构师(主要需要广度,差不多5年左右以上经验,可以担当此职位)