Nginx是Linux服务器上常用的反向代理服务器,由于其具有高性能和轻量级的特点,已经逐渐被各大网站接受和使用。
今天介绍的ngxtop就是实时监控Nginx的一个应用,它会读取Nginx的日志信息并将结果用易于理解的形式动态的表示出来。
使用教程:
$ pip install ngxtop
$ ngxtop
看到pip就知道,这个东西是用Python开发的,有机会去研究研究它的代码。
看下运行效果吧:
可以看到对于被访问URL的次数统计、数据量统计、每秒请求数统计等等信息,一目了然。
除此之外,ngxtop还提供了一些其他功能,比如统计访问IP、对结果进行过滤等等,感兴趣的朋友可以去项目首页看看。
ngxtop项目首页:https://github.com/lebinh/ngxtop#rd
GitHub Tips:
今天讲merge和rebase的区别。
先说merge:
假设当前工作分支为master,另一个分支为B,我们运行"git merge B",效果是把B分支上从分支点开始的改动都合并到master上。为什么是从分支点开始呢?因为分支点之前根本就没有B分支。
运行完命令之后,分支B是不会消失的。
运行结果:
下面看rebase:
rebase不太好懂,大家一定要仔细看。
假设当前工作分支为master,另一分支为B,运行"git rebase B"之后会发生三件事:
1.把master分支自分支点之后的所有commit撤销,并把它们暂存起来,也就是说把master分支回退到分支点
2.把B分支自分支点之后的所有更改全部应用到master分支
3.把第一步暂存的更改再应用到master分支
好像有点乱是吧,我解释一下。
base的意思是“基础”,我们可以理解为“开始”。
而rebase的意思,就是“重新设定开始”。
看图:
灰色是运行之前的状态,B分支和master分支分别指向不同的版本,它们的分支点是B点。
运行之后,master生成了一个新的版本E,大家看出来区别了吗?
B分支并没有发生改变,它仍然指向C版本,它的分支点也还是B点。
master分支生成了一个新版本E,我们可以理解,因为合并了修改嘛。但是请注意,master的分支点变成了C!
现在大家理解为什么这条命令叫rebase了吧,因为它把当前分支的分支点移动到了另一个分支指向的点!所以叫做“重新设定开始”。
现在我们也可以理解,为什么rebase要先把本分支的更改撤销并暂存,然后应用另一个分支的更改,然后再把本分支的更改应用。因为我们要实现“移动分支点”,就必须走这三步才行!
好了,现在大家清楚了吧。
最后说说应用场景。
两者都可以实现合并,不过merge合并完之后,我们从master分支只能看到一条新的commit历史。也就是说我们并不知道在B分支一共有多少commit。这在公司当中可能会涉及到计算工作量的问题,大家要注意。rebase就不会出现这个问题,因为它是一个一个commit应用上去的,所以可以看到所有的commit记录。
其实这两条命令并没有绝对的应用场景,很多时候两者都是可以互换的。关键是大家要明白两个命令的工作机制,这样在实际工作中就可以选择最合适的命令了。