前几天在招聘网上和豆瓣的一个运维开发类岗位负责人接触,出了一道笔试题。 我看了下原程序是 C 写的,但是自己看了看自认为虽然给我俩礼拜我学习一下应该能完成,但是短期内应该完成不了(半吊子运维出身代码能力不行) 于是给谢绝了。 不过还是很好奇,大概什么程度的码农能一天左右完成这题呢?
基于 ncdu 实现一个命令行工具,用来定位文件系统中占用了较大空间的文件、目录。 需求场景描述 在运维工作中,经常会遇到磁盘空间被写满的情况,大部分情况是根分区。这种情况需要尽快处理以免影响系统上其它服务。这时候就需要去定位是哪些文件、目录占用了较大空间,以此判断是哪个服务异常,进而解决问题。在文件系统中找出大文件是一件非常耗时的事情,当 inodes 数很大时尤甚。
好在 ncdu 高效地完成了扫描文件系统各文件、目录占用的工作,但是要达到我们的目标直接将大文件展示出来,还需要做一些额外工作。
要求说明 实现一个在 Linux 环境下运行的命令行工具,命令行参数符合规范。注意,是基于 ncdu 实现一个新的命令行工具。 以人为本,便捷易用,能够最大程度减轻 SA 的在这件事情上的时间消耗。
除命令帮助信息 -h, --help 外,对使用场景及对应的相关命令做简单文字性描述。
会从命令接口设计、代码实现、开发风格、使用场景设计、执行性能等角度去评价这个命令行工具。
推荐优先使用 Python 实现,但原则上实现语言不作为评价依据。
完成的项目需要放到 GitHub 上面,建议保留完整的 commit 历史,需要写清楚如何运行。
最终提交的是 GitHub Repo 页链接。
