学Linux到底学什么

技术标签: c++  c  linux  

来源:公众号【编程珠玑】

作者:守望先生

网站:https://www.yanbinghu.com/2019/09/25/14472.html

前言

​我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到底要学什么?

为什么要学Linux

在回答学什么之前,我们先看看为什么要学。首先我们需要认识到的是,很多服务器使用的是Linux系统,而作为服务器应用程序的开发者或者维护者,如果不了解Linux的基本使用,该如何进行开发或者维护呢?

当然,也有可能你听说Linux更高大上,或者是说Linux对开发者更加友好(Windows用户把刀放下),这都是题外话了。

在我看来,学习Linux主要有以下两点原因

  • 使用标准C/C++ 编写运行在Linux上的应用程序

  • 编写部署在Linux上的应用程序,如Python,Java web服务程序

  • 一探究竟。众所周知,Linux开源,windows并非如此。

而对于Python,它有Python解释器,Java有Java虚拟机,他们实际上对Linux的需求是没有C/C++来的高。即便如此,Linux也是值得Python/Java开发者去学习的。如果你是做C/C++开发,那么Linux是必备的,还记得当前被VC6支配的恐惧吗?

Linux学习方向

那么一般说的学Linux是要学什么呢?方向不同,要学习的内容也不同,可以大致分为这么几个方向:

  • 运维,维护Linux服务器

  • 应用开发,开发Linux应用程序

  • 底层开发

我本人是做Linux应用开发的,因此对于运维方向和底层方向不是很了解,这里仅简单说一下。

运维Linux主要需要学会对服务器的基本部署,监控,配置,管理等等, 你可以认为,这些机器归你管了,7*24小时保障它能正常提供服务(删库跑路就别做了),所以7月24日请对运维的朋友好点。也欢迎运维的朋友留言纠正或者补充我的说法。

底层开发需要了解uboot,文件系统,内核等底层相关内容,主要工作可能涉及文件系统裁剪,驱动开发,内核模块定制(如内存管理,进程调度)等等。底层开发总体来说要求比较高。

应用开发自然是需要学习如何开发在Linux上运行的应用程序,如何定位Linux应用程序问题等等。

来源:公众号【编程珠玑】 作者:守望先生

Linux应用开发学什么

Linux的学习很多会以命令为主,因而初学会觉得枯燥甚至疑惑,鼠标点点点就能完成的事,为什么要劈里啪啦敲这么多?这里给出两点理由,也欢迎你补充:

  • 出于资源的考虑,绝大部分Linux服务器没有图形界面

  • 命令行便于自动化,将一系列操作写入脚本,可代替手动操作

而它的学习我把它分为这么几个阶段:

  • 基本使用

  • 开发调试

  • 系统认识

这三个阶段对知识积累的要求不一样,但总体来说并没有严格的先后之分。

类于windows,当年你学习windows的时候学了什么?

  • 开关机?

  • 安装卸载软件?如安装视频播放器,音乐播放器(为啥要安这玩意?)。

  • 如何打开安装的软件?如打开浏览器上网,打开编辑器写文档

  • 如何存放自己的资料?移动,创建,删除等等

  • 如何使用office 办公软件

  • ……

是不是想想好像也没有特意地去学习?

那么对于学习Linux来说也是类似的,就是学会这些最普通的使用,

  • 如何开关机

  • 如何上网

  • 如何打开命令行

  • 如何使用命令行安装卸载软件

  • 如何编辑文本

  • 如何创建,移动,删除文件

  • 如何查看文件内容,解压缩文件

  • ……

这个阶段最难的就是从图形界面到命令行的转换

那么第二阶段呢,就需要学会:

  • 如何编写Linux应用程序

  • 如何编译或者构建你的程序

  • 如何运行你的程序

  • 如何定位程序bug

而第三阶段,则是一个需要漫长的学习过程,但都是为开发服务,包括:

  • 理解并践行一切皆文件

  • ELF文件,Linux主要可执行文件格式

  • Linux各大机制的基本原理,如进程调度,内存管理,虚拟内存,文件系统等,既然要写Linux应用程序,怎么能不了解它所在平台的主要机制呢?

越是疑难问题,越需要这些最基本的知识。

怎么学?

来到了大家最关心的问题了,同样的,每个人的情况不太一样,这里只给出我的个人建议。

关于第一阶段,你可以先定个小目标,例如一段时间内学会在Linux下进行你的日常活动(玩游戏就算了),例如编写文档,看视频等等。同时建议:

  • 选择主流的发行版,如ubuntu,centos等,遇到问题时比较容易解决

  • 在window下安装虚拟机,这样Linux环境就随你折腾了

在这期间,你可能需要了解

这里的学习你可以通过网上搜索资料或者购买相关书籍进行操练。如果你不想安装虚拟机或者docker,你可以通过一些在线的Linux来体验。

第二阶段也是主要的阶段,这一阶段要学习的东西非常多,多是命令的学习,这里同样可以参考《鸟哥的Linux私房菜》。不过初期阶段建议抱着一个目的去学习,就是如何在Linux写一个完整的程序,为了达到这个目的你需要学习

这个过程涉及到的命令非常多,但是不建议每一个都去细学,首先知道有这么一个命令即可,然后需要的时候能够快速找到用法,如通过man命令查看手册。总之,记住你的目标就是流畅地进行开发调试,而在达成这个目标地过程中,你自己自然会慢慢接触很多东西。

但是有必要说明的是,开发Linux应用程序并不一定要在Linux下编写代码,你可以选择利用samba等工具在windows和linux之间共享文件,然后再在windows下熟悉的工具中或者你认为比较强大合适的工具中编写代码,在Linux下进行编译调试即可。当然你也可以选择Linux下的IDE,或者将vim调教一下也是可以的。

第三阶段要求是比较高的,这个时候你应该学习过操作系统的相关课程(如,《现代操作系统》,《操作系统原理》等),然后你可以通过诸如《Linux内核设计与实现》,《深入Linux内核架构》,《深入理解Linux内核》等书籍进行相关概念学习,也可以通过阅读源码进行深入学习,最终,你需要了解堆和栈,内存管理,进程调度,虚拟内存,文件系统等相关知识。
当然相关命令学习也必不可少,例如readelf,nm,ipcs,iostat,objdump,free,chrt,pmap,uptime,top,pidstat等。

以上就是三个阶段Linux相关的学习内容和建议,实际上其他相关内容的同步学习也非常重要,包括相关数据结构与算法,系统编程,计算机网络等内容的学习,否则看到很多命令的结果仍然会一脸懵逼。

最后,建议实践再实践

总结

限于本人知识水平有限,以上属个人建议和看法,仅供参考,欢迎留言说说你为什么要学Linux,有什么学习方法?

推荐阅读:

linux常用命令--开发调试篇

Linux常用命令--文本查看篇

Linux常用命令--系统状态篇

Linux常用命令-解压缩篇

关注公众号【编程珠玑】,获取更多Linux/C/C++/Python/Go/算法/工具等原创技术文章。后台免费获取经典电子书和视频资源

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hyb612/article/details/101561520

智能推荐

bigdecimal 平均数_BigDecimal精确计算工具类_weixin_39609354的博客-程序员ITS304

前言在实际开发中,遇到例如货币,统计等商业计算的时候,一般需要采用java.math.BigDecimal类来进行精确计算。而这类操作通常都是可预知的,也就是通用的。所以,写了个工具类来方便以后的工作。这是仓库地址:仓库地址BigDecimal的构建一般而言,我们主要从int,long,double,float来进行计算,在构建的时候推荐使用BigDecimal BigDecimal(String...

【CS231n】斯坦福大学李飞飞视觉识别课程笔记(十五):神经网络笔记2(下)_我是管小亮的博客-程序员ITS304

【CS231n】斯坦福大学李飞飞视觉识别课程笔记由官方授权的CS231n课程笔记翻译知乎专栏——智能单元,比较详细地翻译了课程笔记,我这里就是参考和总结。【CS231n】斯坦福大学李飞飞视觉识别课程笔记(十五):神经网络笔记2(下)损失函数我们已经讨论过损失函数的正则化损失部分,它可以看做是对模型复杂程度的某种惩罚。损失函数的第二个部分是数据损失,它是一个有监督学习问题,用于衡量分类...

华为零售商品识别一等奖方案_datayx的博客-程序员ITS304

向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayx商品识别在零售行业的应用一、图像识别的应用场景,以及对零售行业的变革1.以图搜图,拍照购物说到图像识别,...

element-ui的基本使用_是草莓味的啊的博客-程序员ITS304

1.基本介绍element-ui是基于vue.js的后台组件库,方便进行页面的快速布局和构建element-ui网站element-ui组件库element-ui、bootstrap和ant design的关系都是成熟的第三方组件库区别在于组件库,element-ui和ant design是Vue写的原生组件库,而Bootstrap的组件库是用jQuery开发2.安装npm i element-ui -S3.基本使用<!DOCTYPE html><html

如何卸载twincat3_EtherCAT 基础之TwinCAT3安装_基础数学的博客-程序员ITS304

1、需要在 BIOS 中把 VT-X 选项设置为 Enable 因为在 TC3 说明书上明确提到 64 位系统要运行 TC3,VT-X 是必须要支持的。 原理:CPU 运行有 Ring0~Ring3,一些底层操作必须 Ring0。如果没有 VT-x,虚拟机软件只能到Ring1,那么有些内核级别的东西就必须靠软件模拟,而效率降低。有了 VT-x,相当于多出来一套虚拟机的 Ring0~Ring3,这样...

UnrealEngine_ironldk的博客-程序员ITS304

源码编译UnrealEngine背景准备工作背景其实从来没有记笔记的习惯,总觉得理解了就行了,奈何年纪大了,有些东西不记一下确实容易忘,复用的时候还要再花同样长的时间重新学习,效率太低了,为了提高生产力还是记一下。准备工作创建Epic Games账号关联Github账号安装Visual Studio Community 2019installer中勾选Git,不需要再单独安装Git了,Visual Studio的Git是一样的,而且Program Files里和VS安装目录里都会有git.e

随便推点

android8.1 用 Native AudioTrack 直接播放PCM源音频文件_老理说的好的博客-程序员ITS304

此篇博文是笔者验证通过远程MIC采集音频输入送至android8.1系统进行播放,可以理解为给本地的安卓系统添加远程的MIC录音功能。本地播放pcm的音频数据使用libmedia库直接调用native的接口,创建AudioTrack播放。044100构造audioTrack过程,首先newandroidAudioTrack()对象,然后通过androidAudioTrackset()方法来配置该对象;1。...

java 实时播放android采集的音频,android 使用 audiorecord 和 audiotrack 实现实时录音播放..._Clarlie的博客-程序员ITS304

基本思路就是用 audiorecord不断获得音频数据,而后使用audiotrack 播放html//获得音频javapackage com.ysg.audiotest;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;import android.content....

python numpy.tile函数_lxg0807的博客-程序员ITS304

由于思维定势,刚刚接触这个函数导致了理解错误. tile函数的作用是将矩阵进行扩展. 数组的扩展一定要从低维考虑。分为两种情况:A[2][2] = [[1,2],[1,2]]为一个2维数组1.如果矩阵的维数小于所需扩充的维数,则:tile(A,(2,1,2))其中A可以首先扩展到相同的维度,A的原来形状为2x2的二维数组,由于需要扩展的维度为三维,因此可首先将A变为形状为1x2x2的三维数组。t

appium ios环境搭建——Appium概述_weixin_34220623的博客-程序员ITS304

本文的有关内容可能会引用网络上的内容,在此感谢原作者,具体内容不再一一列出。1、Appium介绍Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持iOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框...

谈谈最近的面试感悟和人生_吧主的博客-程序员ITS304

点击上方 "程序员小乐"关注公众号,星标或置顶一起成长每天凌晨00点00分,第一时间与你相约每日英文Some happened could not forget, even forget also only temporarily don't remember.有些事发生了就不可能忘记, 即使忘记也只是暂时的记不起。每日掏心话对自己狠一点,逼自己努力,再过五年你将会感谢今天发狠的自己、恨透今天...

linux查看进程的内存使用情况,[转]linux下查看进程内存使用情况_zh1470406723的博客-程序员ITS304

动态查看一个进程的内存使用1、top命令top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage)静态查看一个进程的内存使用1、pmap命令pmap pid2、ps命令ps aux|grep process_name3、查看/proc/process_...

推荐文章

热门文章

相关标签