新手如何自学linux

初学者学习Linux需要自行制定详细的学习路线和学习内容。
可以按照以下思路来学习:第一层次:Linux基础入门。
Linux基础介绍主要包括:Linux硬件基础知识、Linux发展历史、Linux系统安装、xshell连接、xshell优化、SSH远程连接故障排除、Linuxx基础优化、Linux目录结构知识、Linux文件属性、Linux通配符、正则第二阶段:高级Linux系统管理高级Linux系统管理包括:计划Linux任务、Linux用户管理、Linux硬盘与文件系统、Linux三剑客的sed命令等第三阶段:LinuxShell基础LinuxShell基础包括:shell编程基础、Linux三剑客的awk命令等。
4:Linux网络基础第5阶段:Linux网络服务Linux网络服务包括:启动实际的集群架构并准备环境,rsync数据同步服务、Linux全网络备份项目、NFS网络存储服务详解、Inotify/Sersync实时数据同步/NFS存储、实时备份项目等第六阶段:重要Linux网络服务重要Linux网络服务包括:HTTP协议/WWW服务基础知识、Nginxweb介绍及基本实践、Nginxweb、LNMP环境部署/数据库异地迁移/共享数据异地迁移到NFS系统、Nginx负载均衡、keepalived高可用等。
第7级:Ansible自动化运维和Zabbix监控。
Ansible自动化运维和Zabbix监控包括:SSH服务密钥认证、Ansible批量自动化管理集群、Zabbix监控等。
Level9:大型集群高可用服务(Lvs、Keepalived)Level10:JavaTomcat服务和防火墙IptablesLevel11:高级MySQLDBA应用实践扩展MySQLDBA应用实践包括:MySQL数据库入门基本命令、高级MySQL数据库备份恢复、MySQL数据库事务引擎详解、MySQL数据库SQL语句优化、MySQL数据库集群主从复制/读写分离、高可用/MHA/KeepalvedMySQL数据库等第十二阶段:高性能数据库Redis和Memcached课程第13级:构建Linux大规模集群架构(200学分)第14级:企业案例中的LinuxShell编程第15级:企业级代码共享和在线计划(SVN和Git)第16期企业级KVM虚拟化和OpenStack云计算第17期公有云阿里云8大组件集群实践第18期:Docker技术公司应用实践第19级:Python自动化入门与开发第20级:职业规划与高薪就业建议Linux学习周期因人而异。
如果你有比较好的学习时间,每天学习4到5个小时,坚持3到6个月,应该就能掌握Linux的基本功能了。
不过,如果你只有计划而没有实施,那就另当别论了,如果你想更深入地学习Linux操作系统,为了节省时间,建议报读课程。
效果会更加明显!

关于Linux下的crontab,你不知道的那些知识点

在Linux系统管理中,crontab是一个不可或缺的工具。
它可以定期执行任务,类似于Windows下的计划任务。
crontab的使用不仅仅局限于企业环境,还涵盖了数据备份、系统检测、数据收集等日常运维操作。
让我们深入了解一些crontab实用知识和常见问题的解决方案。

crontab的功能和使用

crond守护进程负责定期检查任务列表并执行预设的任务。
crontab任务分为系统任务和用户任务,广泛应用于定时备份、系统监控、数据采集等领域。
crontab的命令格式为:

分钟小时日月周命令

每个字段都有特定的含义和特殊字符,如星号(*)代表所有可能的值,逗号(,)用于指定范围,斜杠(/)定义时间间隔。

实例分析与调试

例如可以设置crontab每3小时重启一次apache服务(0/3/usr/local/apache2/apachectlrestart),或者运行备份脚本每周六03:30(3036/webdata/bin/backup.sh)。

系统级任务调度在/etc/crontab中配置,包括环境变量和定时任务列表的设置。
Crontab的基于Web的分析工具(例如crontab.guru)可帮助用户快速测试和了解任务执行时间。

使用crontab时出现的问题及解决方案

当遇到环境变量问题时,应确保crontab使用与shell相同的环境。
例如,使用绝对路径,避免因路径不同而找不到命令。
配置crontab定时器时,要注意定时器的正确写法,例如02***命令。

特殊字符如%需要在crontab中进行特殊处理使用回车符号以避免误解。
输出重定向是防止电子邮件占用磁盘空间的关键。
您可以设置MAILTO=""来关闭电子邮件输出。

排查crontab问题时,检查/var/log/cron日志,分析时间语句和crond服务状态,并通过输出重定向查找错误。

分享学习资源

对于Linux学习者,我收集了丰富的学习资料,包括视频教程、电子书和PPT,帮助大家提高技能。
访问我的个人网站或关注我@opensourcelinux以获得这些免费资源。

小白看过来,新人如何入门嵌入式

新手如何学习嵌入式Linux

原文链接:网页链接

新手如何学习嵌入式Linux?这个问题我已经被问过很多次了,所以我决定写这篇文章来回答这个问题。

在学习嵌入式Linux之前,你必须有C语言的基础。
有没有汇编基础也没关系(汇编指令只有几条,看到就用)。
C语言需要学到什么程度?当然,如果不熟悉的话,还是越熟悉越好。
例如,键入要排序的数组、键入要求和的数字等。
学习C语言的唯一途径就是多写程序、多练习。
编译有错误没关系,可以自己解决。
我以前用VC练习C语言,也经常尝试写一些C语言竞赛题。
它们是纯C、纯数学和纯逻辑问题,不涉及接口和其他内容,非常适合磨练你的编程技能。

回到主题,首先我们要明白你的目的是什么。
一般来说,所谓的嵌入式Linux可以分为底层系统和应用开发两部分。
如果要做应用程序开发,就应该学习C语言、数据结构、JAVA等。
嵌入式应用程序开发和PC上的应用程序开发没有什么特别需要注意的。
也许你说嵌入式系统上需要做一些优化是的,需要优化,但是未优化的程序和PC上的程序开发没有区别。
另外,当你有优化的能力时,你就不再需要问这个问题了。
具体来说一个具体的例子,比如开发界面,我们在PC上嵌入式Linux中使用VC,也许我们使用QT或Android,此时你应该学习QT和Android编程。
但基础还是C或者JAVA,在此基础上你可以了解他们的接口。
如果您学过VC,您还需要花时间理解这些类和控件。

如果你的目的是学习底层系统,这是我的专长,但我可以说一点。
在回答这个问题之前,我先回答一下:很多人问我到底该学开车还是应聘?

我只能说是基于兴趣,驱动和应用并不是完全分开的

我们所说的驱动不限于硬件的操作,以及操作系统原理和进程睡眠和唤醒调度等概念。
如果你想写出一个好的应用程序,想更好的解决应用程序面临的问题,这些知识你应该知道

创建应用程序的门槛很低,尤其是现在的ANDROID,是纯JAVA的。
我个人认为应用开发的发展路径就是业务专业知识。
比如通信行业、IPTV行业、手机行业,你了解行业的需求。
因此,申请的大多是管理者。

实际上,我不会称之为“创建驱动程序”,而是“创建底层系统”。
如果我们做得好,它将杀死所有行业。
我做了几年手机、IPTV、会议电视,但这些产品对我来说没有什么区别,因为我只做底层。
他们的事与我无关。
当应用出现问题他们解决不了的时候,我会从核心角度给他们想法,给他们工具。
关于底层的发展方向,我个人认为我是一个技术专家。

实际上,到之间没有限制做底层、做应用如果你有底层做应用的经验,你就会感到非常有信心。
凭借业务经验和对底线的了解,您可以快速组建团队。

回到如何学习的问题。
嵌入式Linux底层系统包括哪些内容?别担心,给我举个例子你就知道了。

当计算机打开时,谁会显示这些界面?它是BIOS吗?它有什么作用?一些自检,然后从硬盘读取Windows并启动它。
同样,这个BIOS对应于嵌入式Linux中的bootloader。
该引导加载程序应从闪存读取Linux内核并引导它。

启动windows的目的是什么?当然是在线聊天什么的。
这些互联网和聊天工具在哪里?

C站和D站。
因此,Windows首先要识别C盘和D盘。
在Linux下,我们称之为根文件系统。

Windows可以识别C盘和D盘,所以它必须能够读写硬盘。
这涉及到一个叫做驱动程序的东西。
当然,不仅仅是硬盘,还有网卡、USB等。
嵌入式Linux可以从Flash中读取和运行要运行应用程序,您需要Flash驱动程序,当然不仅仅是Flash。

我们先来说说这个。
嵌入式LINUX包含四个主要部分:引导加载程序、内核、驱动程序和根文件系统。

1.Bootloader:

这是一个有点复杂的程序。
但要理解和编写这个裸板程序却一点也不容易。
Windows下的用户友好工具削弱了我们的编程能力。

很多人玩嵌入式的时候都会用到ADS和KEIL。
你能回答这些问题吗?

1当处理器开启时,从哪里获取执行指令?

答:通常命令来自Flash。

2但是Flash通常是只读的,不能直接写入,如果我使用全局变量,这些全局变量在哪里?

答:全局变量应该放在内存中

3那么谁把全局变量放在内存中呢?

解答:长期使用ADS和KEIL的朋友,您能解答一下吗?这就需要“动”。
在ADS或KEIL中,移动代码是由制造这些工具的公司为您编写的。
你有去读过吗?

4.内存这么大,如何知道内存中“读取原来存储在Flash中的内容”的哪个地址呢?

答:这个地址是由“链接脚本”决定的。
ADS中有分散文件,KEIL中有类似文件。
但你研究过吗?

5你说move将程序从Flash复制到内存中,那么这个程序可以读取Flash吗?

答:可以,您必须会操作Flash。
当然不仅仅是这些,还有设置时钟,让系统运行得更快等等。

您的问题和答案到此结束。
>ARM系统处理器的操作了解程序的基本概念:移动、堆栈、代码段、数据段、BSS段等。

硬件操作一定要阅读原理图和芯片手册。
这需要一定的硬件知识。
不要求你会设计硬件,但你至少必须能够理解数字电路。
我在学校学到了这个技能,这两本书(我忘记了书名)就足够了。
但我怀疑你是否有耐心读完这两本书。
不知道现在有没有更快的书。
如果你想快速完成,请先删除这部分。
如果不懂就GOOGLE问或者发邮件问。

另外,一定要看芯片说明书,不要找中文的,看英文的就可以了。
一开始很痛苦,但后来你会发现,一旦熟悉了语法和词汇,读起来就很容易了任何芯片手册。
要了解ARM系统处理器,可以看杜春雷的《ARM系统架构与编程》,里面讲了汇编指令、异常模式、MMU等。
这是您需要了解的三个内容。

编程的基本概念当然是看编译原理。
可惜这样的书绝对是一本天书。
我建议你不要读它,除非你是超级天才。
只要看《嵌入式Linux应用开发完全手册》和我写的第一个视频就不用担心,不需要花钱。
跟着视频并做硬件相关的实验后,这些概念就会变得清晰。
我还没有找到关于这些概念的其他书籍或视频。

学习时,我首先阅读《ARM架构与编程》,然后编写自己的程序来实验不同的硬件,例如GPIO、时钟、SDRAM、UART和NAND。
把它们都搞清楚了,放在一起就很容易理解u-boot了

总结一下,要看懂硬件原理图和芯片手册,需要自己去找资料。
其余的,只需按照《完整的嵌入式Linux应用开发手册》中的章节列表和第一个视频即可。

2核心:

想要快速学习的人应该先跳过学习核心,直接学习编写驱动程序。

想要成为高手,必须对核心有深刻的理解。
注意,我说的是理解,我并没有想到要写一个内核。

你需要了解调度机制、内存管理机制、文件管理机制等。
里面。

推荐两本书:

1阅读《Linux内核完全笔记》,看博的书(社区猛,注意速度,哈)。

2选择阅读,如果你想知道读哪一部分,就阅读该部分

3驱动程序:

驱动程序由以下部分组成:分为两部分:硬件本身的运行和驱动框架。

又是硬件,还是要能看懂原理图和芯片手册,多练习。

当我们谈论驱动框架时,有一些书籍对其进行了介绍。
LDD3,即,是老外写的一本书。
它介绍了很多概念,值得一读。
然而,它的作用仅限于介绍概念。
我基本上在开始之前用它来熟悉概念,开始之后就扔掉它。

对驱动比较全面的介绍应该是宋保华的《Linux设备驱动开发详解》说实话我只看了目录。
很多人都说我推荐这里。
如果你想深入了解某个特定领域,《Linux内核场景分析》绝对是超5星推荐。
别指望能完成它。
该书长达1,800多页,由两卷组成。
当我不清楚某个特定部分时,我就会跳过它。
这本书任何部分都可以涵盖200或300页,非常详细。
它将引导您有针对性地分析核心源代码。
以Linux2.4为例,但原理是相同的,适用于其他版本的Linux。

还有其他介绍吗?哈哈,当然,魏东山Linux视频版2.《嵌入式Linux应用开发完全手册》关于驱动的讲得不多,不够深入。
所以我录制了这个视频。
它不仅教你如何编写和修改驱动程序,还教你为什么要这样编写和修改驱动程序。

每个司机都现场写着:

用画板画图并讲解——类似于学校老师在板上画图。
这很直观,绝对不是看PPT。

使用sourceinsight从第1行开始就地编写程序,并在每节课中执行此操作。
我讲了20多个驱动程序,写了20多个程序。

编写完成后编译并测试。

非常全面,包括字符设备驱动、块设备和网卡驱动,还有硬件介绍、驱动框架分析和测试。

教育机构教授的内容远没有这个视频丰富。
我在很多教育机构讲课,从来没见过有哪个老师敢现场讲解每节课,现场写代码,现场测试,除了我!我还没有看到哪个培训机构讲完这个内容——由于时间不够至少需要一个月才能讲完,但这部分基本上只有两周的教学时间。

尝试为您拥有的开发板中涉及的所有硬件编写驱动程序。
当你遇到问题时,先“痛苦地思考”,在思考的过程中,你会连接很多不相关的知识,最终解决它。

4根文件系统:

你有没有想过这两个问题:

1.Linux做的一些产品是用来做监控的。
有的生产手机,有的生产平板电脑。
那么在内核启动并挂载根文件系统之后,应该启动哪个程序呢?

答:内核不知道也不关心启动哪个用户程序。
它只是启动init应用程序,该应用程序对应于/sbin/init。
当然,这个应用程序必须读取配置文件并根据配置文件启动用户程序(监控、手动界面、平板界面等)。
这个问题提醒我们,文件系统的内容有一些约定,比如/sbin,是不是需要一个配置文件

2在你写的hello和world程序中,你有没有想过是谁实现了printf其中使用了那个。

答:这个函数不是你自己实现的,而是库函数实现的。
当它运行时,它需要找到该库。
这个问题提醒我们,文件系统中也存在库。

简单的自问自答到此结束,如果想了解更多,可以看一下busybox的init.c,了解init进程做了什么。
当然也可以阅读《嵌入式Linux应用开发完全手册》中关于构建根文件系统的章节。

说说我的学习经历吧。

当我上学时,我主修物理电子学。
该课程实际上并没有教授如何构建电路,而只是教授了一些电子电路知识。
我在实验室自学PCB设计。
我只设计过2层卡,现在我几乎忘记了它。
但它保留了阅读原理图和芯片手册的能力。

我获得了软件学位,对软件设计很感兴趣,但只学了C语言和数据库。
出于兴趣去做。
有很多竞争性的问题。
我没有机会参加比赛,但是我把C语言训练得很扎实。

在实验室和第一家公司,我们设计了一些简单的PCI卡并编写了Windows驱动程序

在第二家公司,我们使用51个微控制器来制造汽车电话,走上了纯软件的道路。

我开始感受到单片机的缺点,于是退出,闭门学习Linux半年,从如何操作redhat开始。
步骤是先阅读《ARM架构与编程》,然后编写自己的裸板程序来操作硬件,然后分析u-boot。
另请阅读以了解LINUX框架。
当你写一个裸表,建议大家加强对中断的理解内核利用中断来完成各种功能。

分析完u-boot后,我们开始简单的驱动编程。
此时我们的能力还很弱。

我开始在中兴工作,工作了2年,编写各种驱动,解决各种问题(驱动问题,帮助查找应用问题),技术得到了磨练。

总结:

1硬件书籍:微型计算机原理、数字电路、大专院校教材。
毕业已经很多年了,我都忘了自己的名字了。

2.关于Linux的书籍:

<嵌入式Linux应用开发完全手册>

,作者写的书老外

3没有。
第1期(基于S3C2440录制):ARM实验、u-boot、文件系统、主驱动

魏东山Linux视频第1期(基于S3C6410录制):裸板程序

魏东山Linux视频第2期:高级驱动

魏东山Linux视频第3期:项目实践

魏东山Linux视频第4期:Android驱动

之前视频信息请见网页链接

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

版权声明:本文为原创文章博主“魏东山”遵循版权协议CC4.0BY-SA。
转载时请注明原始出处链接及本免责声明。

原文链接: