从小问题看linux安装语言
服务器版linux应该安装那种语言版本?相信不用我说大家也会知道装英文版本。那为啥要安装英文版本?这个问题也许就有朋友没有想过了,今天借个以前的例子说说这个事。
我以前写了个shell想实现代码自动上线的功能。环境是这样的前端用nginx做负载均衡,后面是java的容器。nginx通过判别来自动切换后端的容器来上线代码,最后实现所有容器代码全部同步。服务器没有root权限切换nginx后端服务{非root帐号无法处理root运行nginx的master进程即便nginx由低权限帐号运行也不行(就是说你nginx指定了“ user zhuzhu zhuzhu”也不行),这个大家肯定也知道。},必须用su切换root来实现。后来用expect写脚本自动reload前端的nginx。原本很简单的方法,却在自动切换nginx的时候出了问题。线上由于没有及时切换nginx导致出现错误。为什么没有及时切换让我不知道为什么?
我的脚本如下:
#!/usr/bin/expect -f spawn su - root -c "kill -HUP `/bin/cat /usr/local/nginx/logs/nginx.pid`" expect "Password:" send "password\r" interact
看着没啥问题啊,但经过时间测算这个脚本用时“real 0m10.187s”。
这应该就是后台报错的原因吧。为啥会这样啊?我百思不得其解。忽然想起来这台服务器是别人装的系统,不知为何当初装得是简体中文版。那么中文版执行su会是什么相应信息哪?是这样的:
$ su - 口令:
看吧,是中文的“口令:”二字而非“PassWord:”。当然操作系统能识别这两个中文,但需要时间。那这个时间就是nginx切换延迟的时间。把英文换成中文,瞬间执行速度超快。用时“real 0m0.070s”。
看见了吧,安装英文版的优势立马显现了。不用你修改脚本了。
这个例子很简单,但却很典型,让我记忆深刻。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。