针对你的问题,我认为与其花费大量时间在Linux系统上,不如花点时间把语言深层次的东西(Java知识点似乎真的不少)和一些基础的工具和服务了解一下,建立自己的技术栈和工具栈,例如GitRPCMysqlRedisJava的SSH框架,MQ,Nosql等等,Linux不过是一个生产环境,大部份操作都是非常基本的,相反这种技术栈是你要常常用到的,可以多深研究一些。
作为Linux多年用户,我来分几点简单谈谈:
WhyLinux?
知乎上有个问题,通常人用Linux算是找虐吗?我认为提这些问题的人是很苦恼的,他苦恼就彷徨在不晓得为何要用Linux,由于我们晓得在桌面操作系统,通常人的工作娱乐首选肯定是Windows,这个毋庸置疑,当你有个看法要尝试一种新的操作系统,这么你的看法来源是哪些呢?
想做个Geek,弄些低端的东西。不证实从好几六年前比尔盖茨哪个年代开始笔记本黑客的厉害就深入了广大群众的内心,例如做个个人网站,使用aircrack-ng破解个Wi-Fi密码之类的,那推荐使用Ubuntu,开箱即用,搜索『u盘安装』估计就有推荐搜索『硬盘安装Ubuntu』,作为Linux菜鸟,这个几乎是你的首选。
缘由有好多,文档非常多,别管都是相互抄了多少遍,而且就是多的不行,各类问题都能找到解决的方案,StackExchange甚至有专门的社区AskUbuntu,除此之外英语不好的国外英文用户一个绝佳的选择,那就是首页•Ubuntu英文峰会,里面有一大堆网友自己的分享,Ubuntu用户常搜的几个问题:换源,启动引导,网路配置,Wine,美化,安装QQ,在这儿都能找到一些贴子。
码农想提高自己对计算机,编程的整体认识。假如你对自己学习能力非常自信的话,直接上Arch/ˈɑrtʃ/linux,甚至可以尝试Gentoo/'dʒentu:/。为何不推荐Ubuntu了呢?由于这东西为了讨好更多桌面用户有的地方做的太便捷甚至无脑了,例如bootmanager,kernel,driver,locale,fstab,FileSystem,packagemanager的支持实在是太人性化了,想要晓得更多细节,你须要自己配置一下Linux,并且多年前我使用Ubuntu的时侯,时常出现Xorg崩溃,好多Ubuntu用户都对其常常崩溃的feature非议不已。
2.HowtolearnLinux?
无论是学习Linux还是一门新的编程语言,大胆的去用吧,『读万卷书,不如行万里路』,在我看来这句话想告诉我的是『实践才能理解地更深入』,作为一个技术人员,勇于折腾,擅于折腾,从折腾中温故知新,是非常宝贵的品质。
首先你要明白一点就是Linux严格的说是一个内核,只不过现今大都统一把基于Linux的完整操作系统称作Linux,下边接着之前的两个发行版来简单讲讲:
作为滚动升级Linux的代表发行版,Archlinux和Gentoo会帮助你更理解(Linux)操作系统,Archlinux无需编译内核,安装过程比起Ubuntu要冗长一些,由于要从头配置系统,假如对于安装过程足够熟悉,但是网速好,1个多小时即可安装成功。
Archlinux有一个相当优秀的英文社区/,里面有详尽的安装教程和各类配置linux 中文,硬件问题的讨论,详尽到安装只须要copy命令即可,从安装开始你将逐步理解(Linux)操作系统的UEFI模式,硬碟分区,文件系统格式,mount,fstab,locale,hosts,用户管理,alsa等硬件驱动的安装,desktopenvironment等等。
Gentoo也有一个比较详尽(和前几个不能比)的wiki,GentooWiki,和(就这么几个人的)峰会/,因为Gentoo几乎是最接近于底层的Linux发行版,所以先说明,坑好多,甚至网上无答案,得看源码,须要耐心,解决问题能力极强的人,而且Gentoo,却是能帮助你进一步理解Linux内核的。
从头编译内核,你须要看硬件
使用lspci查看硬件信息
之后按照硬件信息,到内核中找到驱动
你会明白内核中须要配置64-bitkernel,Filesystems,DeviceDrivers,Network,CPU,各类支持,以及引导过程中的kernel和initrd是怎样生成以及加载的,其实要想晓得具体的内容,你只能花费大量时间去看源码。
同时你会发觉Linux中的包管理器是可以自定义每位软件的依赖支持,以及怎样编译安装的
对于Linuxkernel,有一张不错的动漫生动地描述了kernel中几个部份是怎样工作的,可以看一下
英文剖析
3.Tools
图中给了大量Linux常用的性能观测工具,其中有系统安全方面的利器lsof(当你遇见Linux病毒的时侯,它会帮你大忙),网路监控相关的netstat,tcpdump,iptraf等等,io相关的iostat,功能较多的dmesg(显示linux内核的环型缓冲区信息,例如系统构架、cpu、挂载的硬件,RAM等多个运行级别的系统信息),sar等等。
假如你的工作是基础构架这么这种命令可能会用到,否则的话,可能只是时常就会用到。
4.Someadvice(折腾了无数次得来的经验)
BACKUP
tar cpf - | pv -s $(du -sb . | awk '{print $1}') | gzip > backup.tar.gz
RESTORE
pv backup.tar.gz | tar xzpf - -C
5.其它帮助资料(基本都是书籍,别去看视频了,看书吧)
6.Linux带给我哪些?
刚开始玩Linux的那几年,笔记本上多系统共存好多年,这么痴迷Linux带来的是哪些呢?我认为它带来的是一种全新的思维理念。
它如同积木
我们常用Free形容Linux,这儿的重点其实不是指免费,而是『自由』。这么对应的做一个比喻的话,我认为它如同积木,Linux的内核,驱动,文件系统,下层应用等等都好比是积木的一块linux 分区,它们之间通过约定的插口互相契合,协同工作,共同搭建了这样一个高效稳定的系统,积木的另一个特征就是灵活,好多积木的插口都是一致的,使用插口相同的其它积木也有可能带来意想不到的疗效,例如你把Filesystem从ext4换成了Btrfs或则ZFS(不建议如此做),可能会带来个别特点(和好多坑),又或则你把Linux的desktopenvironment从臃肿的KDE换成了XFCE,或则命令党的你直接使上了awesome(Windowmanager)。
这种都说明了Linux的灵活,这么放在编程的领域,这也许又和编程的插口理念一致。
只做一件事,把它做好
Linux中有大量极为优秀的包linux 中文,它们有可能是系统管理命令,监控命令,或则是生产力工具,提起它们的名子,就会让你想到输入命令后的结果,每位东西只负责一小块,这又和编程中的『高内聚,低耦合』的理念不谋而合,还有后来提出的『微服务』的概念,这样你才会在写程序的过程中不断反省,不断重新考量代码,什么部份是须要具象下来的,什么会被大量反复的使用,这都会帮助你养成良好的编码习惯和思维习惯linux之家,对后续的维护和构建,优化都有非常显著的帮助。
文章评论