专栏首页java一日一条我的 Linux 一万小时

我的 Linux 一万小时

这不是一篇鸡汤文,因为我并没有在使用 Linux 一万小时后成为 Linux 达人,甚至在很多方面,我连新手都算不上。我走的这些弯路能篇成一本很有参考价值的反面教材,下面,我来讲讲我用 Linux 都折腾了啥。

Gentoo

在 Ubuntu 还没有出生的年代,各种发行版百花齐放。以包管理机制区分的话,可以分为两派:直接安装二进制可执行文件的和下载源码自行编译的,Gentoo 算是后者中一个比较知名的项目。为了使硬件发挥出更好的性能,Gentoo 的 emerge 命令提供了不少编译参数让用户调教。从内核到日常用的所有工具,都需要用包管理工具自动下载源码后编译,这对于像我这样的 Linux 新人来说的确能学少不少东西。而且每次编译满屏幕日志飞滚非常酷,改用绿色文字就有种黑客帝国的即视感。

不过,这个机制有个显而易见的缺点,有时候做一些很小的事情都需要花上好长时间编译大量的依赖包。而像我这样的强迫症,总觉得下一次编译换一个参数也许可以使程序运行得更快,以至于很多常用工具我都编译了不下三遍。另外编译内核和格式化硬盘重装 Gentoo 的事真是数也数不清了。最惨的是,有次同事让我帮忙装一台 1U,他用 Debian 可以分分钟把 LAMP 搞定上架,而我硬是想用 Gentoo 压榨性能。我编译了一个下午,反复编译内核浪费了大量时间没能把两块网卡搞定,最后无奈的让他上了 Debian。

Gentoo 给我的教训是,大量零散的编译调优时间累积在一起会消耗很多宝贵的青春和电费,它们带来的收益微乎其微,不如直接买更好的硬件。选一个有成熟包管理机制,社区活跃的发行版能节省大把精力把真正要做的事做好。这也是后来我只用 Debian 的一个主要原因。

桌面美化,WM

曾经每天看 DistroWatch.com,除了了解各种发行版的动向,还希望看到一个界面更加美观的发行版,因为感觉大部分发行版的开发者审美太非主流。我用了很长时间尚且还看得过去的 XFCE 和 FVWM-Crystal,也用过臃肿浮夸的 KDE 和 Gnome。试了不少布局和配置,下载过很多 GTK 皮肤和图标库,玩过酷炫的 Compiz,调教过中文字体的显示效果。但不管怎么改都感觉哪儿不完美,直到后来接触到同事 Apple iBook G4 上的 Mac 系统,便掉进了在 Linux 上模仿 Mac 系统界面的深渊。这个 Flickr 相册 里有不少那些年的痕迹。

这同样是一件没有什么收益的事情,2006 年后我放弃治疗,改用 Mac 系统。

wine

周围的人问我为什么不用 Windows 这种主流的操作系统,倒喜欢用小众的操作系统的时候,我都只是一笑而过,后来我用 Mac 的时候也常常遇到这样的问题。有意思的是,现在这个问题在大部分互联网公司里变成了:『为什么你不用 Mac?』

我一开始用 Linux 作为开发主力机的确发现有诸多不便。比如同事给我发个 Microsoft Office 生成的文件;比如做网页要在 Internet Explorer 里调试;比如要上 QQ。不过我并没有感觉到 Linux 不主流,有很多在线论坛有大量热心的 Linux 用户能帮你解决各种技术问题。而同一时期那些 Windows 相关的社区全在共享盗版软件。

在还没有虚拟机技术的时候,很长一段时间里我是用 GRUB 启动多系统的。后来渐渐地用 wine 这个工具跑起了大部分 Windows 下的程序,接着完全干掉 Windows,再后来因为要流畅地跑魔兽世界内测不得不装回 Windows。

生产工具海选

对于开发人员来说,一个非常费神的事情是开发工具,尤其是文本编辑器。我用遍了市面上几乎所有收费或免费的编辑器,都没有找到一款像 Windows 下的 EditPlus 那样好用的产品。主流的推荐是 Vim 和 Emacs,我试着去学好 Vim,但当时并没有多少好用的插件,加上自己不熟悉各种快捷键,文本编辑效率并不高。幸好后来改用 Mac,很长一段时间被 TextMate 拯救了。

在我的 title 还是前端开发工程师和 Flash 开发工程师的日子里,在 Linux 下绘图也不是一件轻松的差事,我一直用不惯 GIMP 和 InkScape。有试着用 wine 跑过 Flash 的 IDE 和 Macromedia Fireworks。为了能在 Linux 下愉快地开发 Flash 程序,我还把整个项目改用 MTASC 编译。我很后悔没有早点明白,在 Linux 下绘图这件事就是自讨苦吃,同一时期在 Windows 下的各种绘图体验会愉快很多。

运维

因为会使用 Linux,所以在开发过程中时不时地会承担一些简单的运维任务。为什么只是简单的,因为更复杂的任务会由那些有 RedHat 证书的专业运维负责。在我这些年的工作经历中,我曾跑过十多次机房,管理过一些 1U 服务器,但都只停留在装系统和配置服务环境的阶段,并没有机会接触那些需要大量服务器携同工作的任务。而这些安装和配置的任务,在 Debian 下又过份地简单,apt-get install 装好的东西一般不用再多折腾就能很好地使用。所以我没能在运维这一块更加深入,只是变成一个初级熟练工而已。

前几年因为虚拟币的泡沫,我开始有动力自学配置管理工具,学了一点点 Chef 和 Puppet,感觉略复杂个人用不上,所以学了相对简单好用且不需要 master 服务器的 Ansible。有一段时间我控制近 50 台虚拟机挖虚拟币,最高的一个月有 6000 元的收入。

随后我试着把一些日常开发中经常需要反复做的事写成 Ansible Playbook,于是便有了ios-dev-playbook。期间为了和墙做斗争,从 V**-deploy-playbook 这个仓库中也学到不少实用技能。但是,很多线上服务其实比某些开源的程序做得好,有时候自己运维往往省不下几个钱。举个例子,Git 仓库,我曾经很喜欢自己在 Linode 虚拟器上搭建 GitLab 或者 Gogs,但是后来发现 GitHub 无论是在社区工具链集成度以及易用性上都甩开其它竞品好几条街。

另外,这几年,为了满足各种创业公司对高生产效率和低成本的需求,IaaS、PaaS、SaaS 以及 Docker 开始流行,创业公司不再需要专职的运维,开发人员写几个配置文件,在网页里点几下鼠标就能把一个完整的系统弄上线。

所以,我掌握的这些简单的 Linux 运维的技能,几乎已经被淘汰完了。

我试着去学 Goolge Kubernetes 和 AWS Lambda,但感觉业余精力不够,也没有项目可以实践。

总结

如果我晚十年出生,或者早点用上 Mac OS,或者考了一张 RedHat 证书,应该就不会这么折腾了。

本文分享自微信公众号 - java一日一条(mjx_java),作者:收听我

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 新手容易犯的 7 个错误

    改变操作系统对于任何人来说都是迈出的一大步,特别是当许多用户不确定操作系统究竟如何的时候,尤其如此。

    哲洛不闹
  • 【Spring源码分析】Bean加载流程概览

    之前写文章都会啰啰嗦嗦一大堆再开始,进入【Spring源码分析】这个板块就直接切入正题了。

    哲洛不闹
  • Java Spring中同时访问多种不同数据库

    开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中。使用Spring框架时,...

    哲洛不闹
  • Linux入门、深入

    学习步骤如下:              1、Linux 基础             安装Linux操作系统              Linux文件系...

    猿人谷
  • 超全的 Linux 机器的渗透测试命令备忘表,共16表128条命令

    如下是一份 Linux 机器的渗透测试备忘录,是在后期开发期间或者执行命令注入等操作时的一些典型命令,设计为测试人员进行本地枚举检查之用。 系统信息命令 对于...

    小小科
  • 超全的 Linux 机器的渗透测试命令备忘表

    如下是一份 Linux 机器的渗透测试备忘录,是在后期开发期间或者执行命令注入等操作时的一些典型命令,设计为测试人员进行本地枚举检查之用。

    HACK学习
  • DeepMind综述无监督学习:通用智能路上的踏脚石,让AI更聪明

    在过去十年中,机器学习在图像识别、自动驾驶汽车和围棋等领域取得了前所未有的进步。这些成功在很大程度上是靠监督学习和强化学习来实现的。

    量子位
  • 那些年删过的库,跑过的路,你从中找到解决方法了吗?

    导读:本文我们盘点了往年发生的一些删库事件,我们该如何做到更好地预防和处理删库实践呢?

    数据和云
  • Linux 应用开发自学之路

    在 「关于我 」那篇博文里,朋友们应该知道了我不是科班出身,是由机械强行转行到Linux应用开发方向。下面我就详细向大家介绍自己这一路上的转行历程,希望对大家有...

    用户6543014
  • 零基础到精通Linux,从这篇文章开始

    正好在最近,看到了一篇不错的资料,其中对于Linux入门学习的描述极其详尽,因此特别摘抄其中段落,制作成思维导图分享给大家。

    马哥linux运维

扫码关注云+社区

领取腾讯云代金券