【Linux学习】

参考链接

Linux学习原因

为什么学!
  很多服务器使用的是Linux系统,而作为服务器应用程序的开发者或者维护者,如果不了解Linux的基本使用,该如何进行开发或者维护呢?

  学习Linux主要有以下两点原因:

  • 编写运行/部署在Linux上的应用程序,如标准C/C++ 、Python,Java web服务程序;
  • 一探究竟。众所周知,Linux开源,windows并非如此;

Linux学习方向

  • 运维,维护Linux服务器;
  • 应用开发,开发Linux应用程序;
  • 底层开发;

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

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

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

Linux学习内容-针对应用开发

学什么!
使用命令而不用鼠标点击的原因:

  • 出于资源的考虑,绝大部分Linux服务器没有图形界面,所以Linux的学习很多会以命令为主;
  • 命令行便于自动化,将一系列操作写入脚本,可代替手动操作。

Linux的学习可以分为三阶段:

  • 基本使用
  • 开发调试
  • 系统认识

第一阶段,对于学习Linux来说,首先需要学会最普通的使用:

如何开关机
如何上网
如何打开命令行
如何使用命令行安装卸载软件
如何编辑文本
如何创建,移动,删除文件
如何查看文件内容,解压缩文件
……
这个阶段最难的就是从图形界面到命令行的转换

第二阶段,需要学会:

如何编写Linux应用程序
如何编译或者构建你的程序
如何运行你的程序
如何定位程序bug

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

理解并践行一切皆文件
ELF文件,Linux主要可执行文件格式
Linux各大机制的基本原理,如进程调度,内存管理,虚拟内存,文件系统等,既然要写Linux应用程序,怎么能不了解它所在平台的主要机制呢?

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

Linux学习方法

第一阶段
  可以先定个小目标,例如一段时间内学会在Linux下进行你的日常活动(玩游戏就算了),例如编写文档,看视频等等。
  同时建议:
  选择主流的发行版,如ubuntu,centos等,遇到问题时比较容易解决;
  在window下安装虚拟机,这样Linux环境就随你折腾了。

在这期间,你可能需要了解:
  使用apt-get或者yum安装或卸载软件;
  使用tar,unzip,zip,gz等解压缩软件安装包;
  了解运行环境,学会如何执行命令;

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

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

  • cd touch cp mv rm ls,find,切换目录,创建,复制,移动,删除,查看,查找等等;
  • vi/vim 编写代码,这里有一个在线练习网站;
  • gcc编译代码,后期可能需要学习makefile,cmake等构建工具;
  • 版本管理,git也是当前必备的一个工具了,学习资料推荐pro git;
  • gdb调试,可以参考 《GDB调试指南》
  • 问题定位,除了观察最基本的打印之外,还需要知道,如何查看进程信息(ps),如何查看网络连接信息(ss,netstat),如何强制停止进程(kill -9)如何查看进程文件打开情况(lsof),如何多种姿势查看文本文件(cat,tail,more,less)等等。;
  • 脚本学习,学习Linux,就不得不学习shell脚本了,它在很多时候能毫无抱怨地帮你做事,前提是你会调教。《Linux命令行与shell脚本编程大全》 也是调教教程之一。这里也有一些 《必备的shell知识》

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

但是有必要说明的是,开发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相关的学习内容和建议,实际上C/C++相关的同步学习也非常重要,包括相关数据结构与算法,系统编程,网络编程等内容的学习,否则看到很多命令的结果仍然会一脸懵逼。

最后,建议实践再实践。

Linux在线学习网站

几个在线能够学习Linux的网站,也不需要注册用户,可以直接使用。

Unix Terminal Online

这个网站也支持代码的编译运行,而且速度还可以。
地址:https://www.tutorialspoint.com/unix_terminal_online.php
可以直接点击:Unix Terminal Online

JS/UIX - Terminal

进入后,点击open terminal即可。它提供非常简单的终端环境,而且没有自带gcc等编译套件,不过练习基本命令和shell脚本还是可以的。整体使用起来也比较流畅。
地址:https://www.masswerk.at/jsuix/index.htm
   https://www.masswerk.at/jsuix/
可以直接点击:JS/UIX - Terminal

cb.vu 【×】

它使用的是 FreeBSD,整体也是非常流畅,不过同样不支持代码编译运行。
地址:http://cb.vu
可以直接点击:cb.vu

copy.sh

它可以全屏体验,让你感觉就是在一台真的Linux上玩耍,同时还支持多种发行版,想体验不同系统的可以试试。
地址:https://copy.sh/v86/?profile=linux2
可以直接点击:copy.sh

jsLinux

它提供多种系统选择,你也可以在上面编译运行代码。
不过整体感觉不是很流畅。
地址:https://bellard.org/jslinux/
可以直接点击:jsLinux

Bash Shell

这里可以专门用来练习shell编程
地址:https://www.jdoodle.com/test-bash-shell-script-online/
可以直接点击:Bash Shell

paiza

同上,可以用来学习shell脚本。
地址:https://paiza.io/en/projects/new?language=bash
可以直接点击:paiza

ShellCheck

就像它的名字一样,它是用来检查你的脚本可能存在的问题的。
写好的脚本就是没有如预期一样运行?不如shellcheck一下?
地址:https://www.shellcheck.net/
可以直接点击:ShellCheck

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值