学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/算法/工具等原创技术文章。后台免费获取经典电子书和视频资源

  • 595
    点赞
  • 2725
    收藏
  • 打赏
    打赏
  • 74
    评论
Linux命令大全完整版 目 录 目 录 I 1. linux系统管理命令 1 adduser 1 chfn(change finger information) 1 chsh(change shell) 1 date 2 exit 3 finger 4 free 5 fwhois 5 gitps(gnu interactive tools process status) 5 groupdel(group delete) 6 groupmod(group modify) 6 halt 7 id 7 kill 8 last 8 lastb 8 login 9 logname 9 logout 9 logrotate 9 newgrp 10 nice 10 procinfo(process information) 11 ps(process status) 11 pstree(process status tree) 14 reboot 15 renice 15 rlogin(remote login) 16 rsh(remote shell) 16 rwho 16 screen 17 shutdown 17 sliplogin 18 su(super user) 18 sudo 19 suspend 19 swatch(simple watcher) 20 tload 20 top 21 uname 21 useradd 22 userconf 22 userdel 23 usermod 23 vlock(virtual console lock) 24 w 24 who 25 whoami 25 whois 25 2. linux系统设置命令 27 alias 27 apmd(advanced power management BIOS daemon) 27 aumix(audio mixer) 27 bind 29 chkconfig(check config) 29 chroot(change root) 30 clock 30 crontab 31 declare 31 depmod(depend module) 32 dircolors 32 dmesg 33 enable 33 eval 33 export 33 fbset(frame buffer setup) 34 grpconv(group convert to shadow password) 35 grpunconv(group unconvert from shadow password) 35 hwclock(hardware clock) 35 insmod(install module) 36 kbdconfig 36 lilo(linux loader) 37 liloconfig 38 lsmod(list modules) 38 minfo 38 mkkickstart 39 modinfo(module infomation) 39 modprobe(module probe) 39 mouseconfig 40 ntsysv 41 passwd(password) 41 pwconv 41 pwunconv 42 rdate(receive date) 42 resize 42 rmmod(remove module) 42 rpm(redhat package manager) 43 set 46 setconsole 47 setenv(set environment variable) 48 setup 48 sndconfig 48 SVGAText Mode 49 timeconfig 49 ulimit 50 unalias 50 unset 51 3. linux文档编辑命令 52 col 52 colrm(column remove) 52 comm(common) 52 csplit(context split) 53 ed(editor) 53 egrep 54 ex 54 fgrep(fixed regexp) 54 fmt(fromat) 54 fold 55 grep 55 ispell(interactive spelling checking) 57 jed 58 joe 58 join 60 look 61 mtype 61 pico 62 rgrep(recursive grep) 62 sed(stream editor) 63 sort 64 spell 65 tr(translate character) 65 uniq 65 wc(word count) 66 4. linux压缩备份命令 67 ar 67 bunzip2 68 bzip2 68 bzip2recover 69 compress 69 cpio(copy in/out) 70 dump 72 gunzip(gnu unzip) 73 gzexe(gzip executable) 74 gzip(gnu zip) 74 lha 75 restore 76 tar(tape archive) 77 unarj 80 unzip 81 zip 82 zipinfo 83 5.linux文件管理命令 85 diff(differential) 85 diffstat(differential status) 86 file 87 find 87 git(gnu interactive tools) 90 gitview(gnu interactie tools viewer) 91 ln(link) 91 locate 92 lsattr(list attribute) 92 mattrib 93 mc(midnight commander) 93 mcopy 94 mdel 94 mktemp 95 mmove 95 mread 95 mren 96 mshowfat 96 mtools 96 mtoolstest 96 mv 97 od(octal dump) 97 paste 98 patch 99 rcp(remote copy) 101 rhmask 101 rm(remove) 101 slocate(secure locate) 102 split 102 tee 103 tmpwatch(temporary watch) 103 touch 103 umask 104 whereis 104 which 105 cat 105 chattr(change attribute) 106 chgrp(change group) 106 chmod(change mode) 107 chown(change owner) 108 cksum(check sum) 109 cmp(compare) 109 cp(copy) 110 cut 111 indent 111 6.linux文件传输命令 115 bye 115 ftp(file transfer protocol) 115 ftpcount 115 ftpshut(ftp shutdown) 115 ftpwho 116 ncftp(nc file transfer protocol) 116 tftp(trivial file transfer protocol) 116 uucico 116 uucp 117 uupick 118 uuto 119 7. linux磁盘管理命令 120 cd(change directory) 120 df(disk free) 120 dirs 121 du(disk usage) 121 edquota(edit quota) 122 eject 122 lndir(link directory) 123 ls(list) 123 mcd 125 mdeltree 125 mdu 126 mkdir(make directories) 126 mlabel 126 mmd 127 mmount 127 mrd 127 mzip 127 pwd(print working directory) 128 quota 128 quotacheck 128 quotaoff 129 quotaon 129 repquota(report quota) 130 rmdir(remove directory) 130 rmt(remote magnetic tape) 130 stat(status) 131 Tree 131 umount 132 8. linux磁盘维护命令 133 badblocks 133 cfdisk 133 dd 134 e2fsck(ext2 file system check) 134 ext2ed(ext2 file system editor) 136 fdisk 137 fsck.ext2(file system check-second filesystem) 137 fsck(file system check) 138 fsck.minix(file system check-minix filesystem) 139 fsconf(file system configurator) 139 hdparm(hard disk parameters) 139 losetup(loop setup) 141 mbadblocks 141 mformat 141 mkbootdisk(make boot disk) 142 mkdosfs(make Dos file system) 143 mke2fs(make ext2 file system) 143 mkfs.ext2 144 mkfs(make file system) 144 mkfs.minix 145 mkfs.msdos 145 mkinitrd(make initial ramdisk images) 145 mkisofs(make iso file system) 145 mkswap 147 mpartition 148 sfdisk 148 swapoff 149 swapon 149 symlinks(symbolic links) 149 sync 150 9. linux网络通讯命令 151 dip 151 getty(get teletypewriter) 151 mingetty 152 ppp-off 152 smbd(samba daemon) 152 telnet 153 uulog 154 uustat 154 uux 155 cu(call up) 156 dnsconf(dns configurator) 157 efax 158 httpd(http daemon) 159 ifconfig 159 mesg 160 minicom 161 nc 161 netconf 162 netstat 162 ping 163 pppstats(point to point protocol status) 164 samba 164 setserial 165 shapecfg(shaper configuration) 165 smbd(samba daemon) 166 statserial(status ofserial port) 166 talk 166 Tcpdump 167 testparm(test parameter) 168 traceroute 168 tty(teletypewriter) 169 uuname 169 wall(write all) 170 write 170 ytalk 170 arpwatch(ARP watcher) 170 apachectl(Apache control interface) 171 smbclient(samba client) 171 pppsetup 172 10. linux电子邮件与新闻组命令 173 archive 173 ctlinnd(control the internet news daemon) 173 elm 173 getlist 174 inncheck(inn check) 174 mail 175 mailconf 175 mailq(mail queue) 175 messages 176 metamail 176 mutt 177 nntpget 178 pine 178 slrn 180 11. linux其他命令 181 reconfig 181 startx(start X Window) 181 xconfigurator 181 XF86Setup 182 xlsatoms 182 xlsclients 183 xlsfonts 183 yes 184

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 74

打赏作者

守望之名

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值