深入linux(linux最好用的系统)
Linux基础命令-lsmod
深入理解Linux内核模块管理:lsmod命令详解
lsmod:Linux核心模块状态的窗口
lsmod命令,如同内核模块状态的透明视窗,它揭示了Linux内核中加载的模块详情。这个命令以一种格式化的形式呈现/proc/modules文件内容,提供了关于当前加载模块的详细状态信息。
探索lsmod的展示内容
每个模块的信息由以下字段构成:
Module:模块的名称,通常对应于模块文件(.o或.ko)的名称,但有时也可能使用自定义名称,这个名称会在模块插入时通过insmod命令的选项指定。
Size:模块占用的内存空间,以字节为单位,直观展示了模块在系统内存中的占用情况。
Used by:表示模块实例的使用情况。数字表示正在使用的模块实例数,若为零则表示当前未使用。数字后附带的文本可能揭示了模块的具体用途,如设备名称、文件系统标识符,或是另一个模块的名称,帮助你追踪模块的使用路径。
实例应用:查找ip_vs模块
想要确认ip_vs模块是否已加载?使用lsmod| grep ip_vs命令,它将筛选出所有包含"ip_vs"关键词的模块信息,让你快速定位到目标模块的状态。
通过lsmod的强大功能,你不仅能了解模块的加载情况,还能深入分析它们如何影响系统性能和功能。熟练掌握lsmod命令,是理解和优化Linux内核管理的关键一步。
如何更深入地学习 Linux
linux包含的东西很多,首先你要明白自己究竟是想学哪方面的,比如开发、运维还是应用。开发也分内核开发,应用开发等等,运维也有系统本身的运维和搭建环境的运维,linux的网络方面应用的也很多,你看看自己究竟想学什么,确定下学习目标。
确定好目标,接下来就要多看多动手,linux里有个哲学就是linux本身并没有什么功能强大的软件,它解决问题是靠很多小的软件来逐步排除问题的,最后解决大的问题。所以linux的东西比较多,多动手这样一方面记忆会比较深,另一方面也能锻炼自己解决问题的能力。经常会遇到自己貌似懂了,但是就是配不出来的问题。
报班考证,别不舍的钱。实实在在有个证拿在手里比简历里说什么都有说服力。
不舍得钱就去淘宝买,从入门到高级全都有,很便宜的。不过你看不懂也没有人能给你解惑。
推荐一个网站51cto,你百度一下51cto就有,里面的学院有好多免费的课程,不单是linux的其他的编程啊开发啊windows的都有都是IT课程,有的是免费的(大部分是基础课),有的是收费的。
在51CTO上开个博客,作为自己的学习笔记,常整理常翻看,也看看自己关心的技术方向的一些大牛的博客,往往会有意向不到的收货。
冰冻三尺非一日之寒,那些我们仰望的大牛他们的技术也不是一蹴而就的,坚持下来早晚我们也会是别人仰望的大牛。
如何深入了解Linux
如何深入了解Linux
想深入了解Linux操作系统却找不到入手点建议是:
学会C,C语言和*UIX是一块成长起来的,所以Linux操作系统的API都是用C语言描述的。
所以C语言是深入学习Linux的一个必备技能,大家可以看那本绿皮书入门,虽然黑的人很多,但入门足矣。
然后就是一本必读书目APUE(UNIX环境高级编程),英语好的同学建议阅读英文原版《Advanced Programming in the UNIX Environment》。
下一步就是多去阅读优秀的Linux项目的 C代码。
碰巧读过之前大家提到的一些开源项目网络编程:
redis是单线程异步网络编程的范例
nginx是多进程网络编程的巅峰,模块化
memcached虽然是C++,但是C style的,多线程网络编程的巅峰
数据结构&数据库:
SQLite,数据理论的范例。注意要去读非合并源文件版的(为了方便编译器优化,有个单文件版的)
大杂烩类型:
Coreutils- GNU core utilities,大多数Linux系统命令的实现
Python源代码(CPython,注意不是Cython),多少次遇到百思不得其解的问题,我都是去看看Python是怎么封装成简单可靠的接口的,比如我回答的Linux TCP connect with Select() fails at testserver,还有怎么实现一个可靠的带自定义超时的connect(),你都可以从Python源码里找到答案。
找虐:
The BIRD Internet Routing Daemon Project,宏玩得飞起
Kernel,很容易挫伤初学者积极性
glibc、ssh,这类程序都是上个世纪的大神们的作品,从编程风格和整体架构上都属于晦涩难懂的,代码风格也是现代编程所不推荐的,建议初学者远离。