-
使用xargs -P加速你的命令
先简单说下xargs的用法,xargs可以按行执行多条命令。比如某个文件中包含了需要删除的文件列表,原先你可能需要写shell脚本来逐行执行,但是有了xargs之后一行就可以了。 cat files-to-delete | xargs rm -f
-
python tip 1
最近开始把python作为自己的第二编程语言,用来做shell处理起来比较麻烦的事情比如日志解析与统计之类的。以下是个人学到的一些tips。可能比较简单。 dict取出时或者设置值后返回 d = {} nd = d.setdefault(‘a’, {}) 如果’a’存在的话,就返回相应内容,否则就设置值为{}后返回{}
-
用shell简单实现类似git的子命令
git的子命令指的是类似git add,git commit这种。从命令上看git会对不同的子命令做分发,选择不同的函数/方法/功能,避免一堆的git-add git-commit暴露出来。 如果要实现类似功能,简单的就是根据$1选择不同的函数,额外要考虑的是没有输入啊和没有对应功能的情况。其次,对于子命令来说,同样希望获取命令行参数,这时就需要shift了。最后稍微整理下,以下是个人的实现版本:
-
关于jython脚本的java类库依赖
jython是python语言的java实现,理论上是支持无缝调用java类库,但在实际使用中经常会碰到类库设置问题,以下是我学习到的一些解决方法。 jython解释器启动时 $ jython -J-cp=foo.jar:bar.jar -J-cp的值会传递给jvm,具体可以参照jython –help。
-
linux命令使用小记3
感叹一下linux的命令真的是博大精深啊,刚装好的系统就有几千的命令。如果要全学真的不知道要花多少时间。 另外,深切感受到linux的shell对工作的帮助,大部分任务shell中就可以完成了,不需要windows中所谓小工具的东西,对工作效率的提高很有作用。 回到主题,下面说下最近学到的linux命令。
-
service, manager and dao
酝酿这篇文章其实有一段时间了,只是最近晚上回家之后没啥动力(颓废?),于是只能在某个休息日的早上写了。 首先说明一下service、manager和dao指的是java web中常见的分层,我要讲的是自己在这种分层设计上的进一步理解,基于从学java开始到现在工作两年左右的经验。 简略地概括下现阶段我对分层的职责的认识:
-
使用expect+python拉取数据并生成报表
虽然脚本周一的时候就写好了,但是昨天才是第一次正式使用。加上昨天写了第二篇shell的tips,所以expect+python的脚本gen_report今天才写。 首先说一下背景。由于工作需要,有时我需要ssh到服务器上拉取运行数据生成报表。整个过程很枯燥,就是登录服务器,输入密码,运行二三十条很像的命令,把数据复制到microsoft excel或者libre office calc中计算。一言以蔽之:整个人肉操作。 很明显,如果让我天天干,我肯定不愿意。但是即使不是天天干,一周干一次,我也不愿意,因为命令执行很慢,来回弄肯定要半天。按照《时间管理 给系统管理员》,这种时候最适合写脚本了。 常规策略是在服务器上写好一个脚本,ssh上去执行一下,再使用scp把结果下载下来,最后使用比如python来解析生成csv等报表。但是,不行。首先遇到的问题就是服务器貌似不支持publickey,其次服务器上命令有限制(很常见,你不是管理员),不支持publickey的直接后果是ssh后执行命令和scp无法使用,只能另外寻找方法。 由于某些原因,我知道expect。虽然交互式的命令很好,但是如果你要让交互式的命令自动化的话,却很麻烦,比如ssh,ftp。这个时候expect可以帮助你解决问题。证明是网上搜索expect ssh login一抓一大把。所以我现在的考虑是通过expect代替ssh登录服务器执行命令。因为不能用scp,所以考虑把expect通过重定向或者tee放入某个文件中,最后让python解析这个日志文件即可。(最近重新看了点expect的书,貌似expect可以直接设置日志文件,不用tee之类的重定向,之后有空可以尝试下。) 基本策略确定了,方向基本也清楚了。由于涉及expect和python两种语言和程序,所以我选择shell做总控制的脚本。以下是总控制脚本即gen_report的内容(部分和工作相关的内容已经做了修改):
-
linux命令使用小记2
距离上一次发博客有一段时间了,这段时间其实写了一个shell+expect+python的通过ssh拉取数据的脚本,又用jython调用Java写了一个公司内用的脚本,感觉linux在平时的工作里面越发重要的。 话说回来,linux平时的命令行的使用也有点小成果,在这里和各位分享。 xargs find -type f -name “*.xml” | xargs fgrep –color -m 10 -Hn FOO 从当前目录下所有XML文件中查找FOO。find中使用xargs的作用和 find -type f -name “*.xml” -exec fgrep –color -m 10 -Hn FOO {} \; 类似,不过可以用于别的命令。比如: cat files | xargs rm -rf 删除文件中指定的文件或者目录等等。
-
scala版本的grails分页代码
大家平时见过这样的分页么?见过的话知道怎么写么?没见过的话有思路么? Previous 1 .. 3 4 (5) 6 7 8 .. 10 Next 就本人的话,在用grails时见到了这个强大的分页功能,但是对于里面的代码和思路一知半解。 今天心血来潮想要重新理解下原理,所以花了点时间分析了下实现,最终在回家的地铁上基本明白了其中的逻辑,特此写文分享。 在展示最终的scala代码之前,先说下分页中的几个概念,同时为了方便,这里取用grails中的变量名:
-
网站内容定时备份
不消说,网站内容定期备份是很有必要的,以下就讲下上周末我学到的网站内容备份的东西。 首先,考虑到wordpress导出的内容可能缺少网站配置等东西,我选择备份的是数据库中的内容,另一方面是可以通过shell+cron的方式定时备份。 备份的主要原理是通过mysqldump导出数据库内容,做成压缩包。考虑到要定期备份,所以套一个cron,每天执行。最后,考虑一个星期把网站的最新内容scp到家里的机器,每月开始删除上个月的备份。 shell脚本如下: