Linux

诡异的现象:df报文件系统满,但du看差别很大

今天在处理一个问题,最后发现是文件系统满(file system full)造成的,df看一下,果然/opt文件系统的Use%变成了100%。于是马上到/opt目录下用du命令看一下是哪个地方出现了大文件把文件系统撑爆了:du -sm | sort -nr /opt目录分配了30G的空间,我看了一下前几名的占用也不过10G左右。进一步,直接执行du -sh /opt 发现/opt目录的文件总和也不过12G,这就奇怪了,莫非18G被系统吃了??? 无奈Google了一下du df different results,发现原来是系统存在删除的文件没有释放导致。 具体来说是,某进程持有对某文件的引用,

  • maoshuai
2 min read

Headless Browser与服务器端HTML转PDF

最近的项目,要求生成PDF格式的报告书供客户下载或直接发送到Email地址。而且,报告书含有很多图表,基本上是前台HTML页面看到的一样。 这个是一个报表生成的需求,首先从实现的位置看,有两种方案: 由客户端,借助浏览器渲染并生成PDF。 优点:减轻服务器压力,使用HTML转换,与客户端浏览器保持一致。 缺点:无法脱离客户端,遇到需后台发送email的情况,无法实现;不同浏览器无法保证一致性的生成效果。 由服务器端渲染并生成PDF。 优点:可以完全控制生成PDF的效果;可以选择各种语言实现方案 缺点:对服务器压力大;如果用非HTML实现,很难做到和前台一致的效果。 经过比较,结合我需要发送Email的需求,最终选择了服务器端生成。服务器端生成一般有几种方案: 直接操作PDF(比如用Apache的pdfBox)

  • maoshuai
3 min read
Linux

超详细举例看懂Unix的diff格式(1/3):diff的常规模式

在使用git的过程中,难免会用到git diff命令,用于比较文件差异。但初学者对这个命令的输出格式几乎都是一脸懵逼,需仔细研究一番。 我读过阮一峰的《读懂diff》,收获颇大,但还是写了本文。一来,阮一峰文章中的举例过于简单和特殊,有些问题没有解释清楚;二来,也是自己的一份总结。 背景 git的diff,源于Unix的diff命;因此,追本溯源我们要从Unix的diff命令说起。 Unix的diff命令由于历史原因,又分为三种输出格式: 常规格式(normal diff) 上下文格式(context diff) 合并格式(unified diff) 本文是系列的第一篇,介绍diff常规输出格式。

  • maoshuai
12 min read