shell时间戳转日期格式

时间戳转日期

date -d @1408150558 +”%Y%m%d %H:%M:%S”
20140816 08:55:58

发表在 技术, 运维配置 | 留下评论

linux下TIME_WAIT过多解决

发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
vi /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

然后执行 /sbin/sysctl -p 让参数生效。

经过配置后,暂时的问题是解决了,再查看TIME_WAIT数量快速下降。

关键命令:

1、netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key,”\t”,state[key]}’

会得到类似下面的结果,具体数字会有所不同:

LAST_ACK 1
SYN_RECV 14
ESTABLISHED 79
FIN_WAIT1 28
FIN_WAIT2 3
CLOSING 5
TIME_WAIT 1669

状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

发表在 技术 | 留下评论

python中文问题处理心得

在python代码中如果直接使用中文,需要在文件开头使用 #coding=utf-8 标明

但如果读取的是utf-8编码的文件中的json配置文件,loads 之后如果某个key对应的value是中文,默认采用的是unicode,需要进行encode为utf-8。如下是当时处理json配置文件中中文的方法,该方法并不友好。

with open("../conf/xserver.conf") as fp: 
        contents = fp.read()
    if not contents:
        print "Invalid open ../conf/xserver.conf and read"
        sys.exit(2)
    gl.server_conf = json.loads(contents)

    #json loads default is unicode for string
    if "sms_app" in gl.server_conf:
        gl.server_conf["sms_app"] = gl.server_conf["sms_app"].encode("utf-8")
    if "sms_company" in gl.server_conf:
        gl.server_conf["sms_company"] = gl.server_conf["sms_company"].encode("utf-8")

今天在对接收到utf-8编码的字符,使用logging打印的时候又报错误,纠结了很久,最后发现一个好方法——设置python运行时候的默认系统编码,这样就不用考虑对中文的特殊处理了

reload(sys)
sys.setdefaultencoding("utf8")

发表在 技术 | 标签为 | 留下评论

MySQLdb读取timestamp字段返回datetime结构

使用MySQLdb库进行数据的操作,进行查询的时候,如果数据库表字段是timestamp,则查询返回的不是对应的字符串,还是一个类似

datetime.datetime(2014, 7, 6, 12, 5, 25) 结构,该返回是个对象,因此可以使用 .strftime(“%Y-%m-%d %H:%M:%S”) 进行格式化,不过格式化前需要判断返回的对象是否为None

发表在 技术 | 留下评论

pycurl安装笔记

        最近使用到pycurl的东西,使用的默认python为2.7.8,而非系统自带的2.6.6。

        首先安装 pycurl-7.19.3.1.tar.gz 结果,执行的时候报错

>>> import pycurl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: pycurl: libcurl link-time version (7.19.7) is older than compile-time version (7.37.0)
>>> 

原因,pycurl.so使用的libcurl版本太低,于是先安装一个最新版本的curl  curl-7.37.0.tar.gz,将其安装到 /usr/local目录下,这样生成的lib就在/usr/local/lib下面,为了与默认的/usr/lib区分。然后更改动态连接的查找顺序。在 /etc/ld.so.conf 中加入/usr/local/lib 即可。编辑完成执行ldconfi就正常了

发表在 技术 | 留下评论

为python添加默认搜索路径

在python/lib/python2.7/site-packages目录下建立一个 xxx.pth的文件,写入自己写的模块所在的路径即可

发表在 技术 | 留下评论

解决google访问慢的方法

        虽然google早就离开中国,也有些日子了,出于对google搜索结果的可依赖性,一直使用的香港的google。然后自从前几天起,不知道为什么访问google的速度越来越慢,关打开google的首页就要几十秒,搜索一个结果也需要等上大半天才返回。虽然期间尝试了使用baidu,打开和搜索速度是很快,但是搜索结果与google相比,真是相差太远了,不敢恭维。网上也有传闻可能与即将到来的一“重要日子”有关。

       难道就真的没有解决方法了吗。在hosts文件中输入如下hosts即可。hosts文件位置不清楚的自行google或者baidu。

# 备注:Google 访问提速
203.208.46.146 www.google.com 
203.208.46.147 www.google.com.hk 
203.208.46.132 clients1.google.com 
203.208.46.149 mail.google.com 
203.208.46.161 chatenabled.mail.google.com 
203.208.46.161 mail-attachment.googleusercontent.com

        新测,效果明显,访问速度快过了。本地解析,绕过DNS解析,估计GFW是根据域名才做检测的吧

发表在 技术 | 标签为 , , | 留下评论

VIM操作笔记

如果记得命令名字,但不记得具体语法,可以使用 :h 来帮助,如查看mo的用法,可以使用 :h mo 下面是具体的示例记录

99gg11<<   将99行到109行向左移动一个tab键

99gg11>>   将99行到109行向右移动一个tab键

:8,15 co 115   将第8行到15行,复制到115行下面(即插入起始行为116)

:8,13 mo 115  将第8行到13行,移动到115行下面(即移动前的起始位置为116)

:%s/partener/replace/g  全文替换

partener可以添加如下以达到更加严格我效果。

\< 表示匹配开头

\> 表示匹配结束

\C 表示匹配大小写

Shift+*  以光标当前单词做为查找关键字,正向查找

Shift+#  以光标当前单词做为查找关键字,反向查找

发表在 技术 | 留下评论

socket.io获取浏览器相关的请求信息

        使用socket.io几乎很容易,但如果要获取连接上对端口的IP,又该怎么办,由于使用者见到是只是一个sock对象,可以尝试将该对象打印出来。

io.sockets.on("connection", function(sock){
    console.log("new connection! sock: " + sock.id);
    console.log(sock.manager.handshaken[sock.id]); 
});

      通过sock.manager,handshaken[sock.id]即可得到相关信息。下面是打印的一个示例

{ headers: 
   { host: 'xchat.xuzeshui.com:8080',
     connection: 'keep-alive',
     'cache-control': 'max-age=0',
     origin: 'http://xchat.xuzeshui.com',
     'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',
     accept: '*/*',
     dnt: '1',
     referer: 'http://xchat.xuzeshui.com/xchat/',
     'accept-encoding': 'gzip,deflate,sdch',
     'accept-language': 'zh-CN,zh;q=0.8,zh-TW;q=0.6,en;q=0.4',
     cookie: 'pgv_pvi=4677507072; CNZZDATA1000378084=971485233-1400681587-http%253A%252F%252Ftongji.baidu.com%252F%7C1400681587; Hm_lvt_3a678ab2e17b8e5ec1850a9231c73fff=1400681571,1400894018,1400896442,1400900682' },
  address: { address: '113.116.77.115', port: 55167 },
  time: 'Sat May 24 2014 15:56:49 GMT+0800 (CST)',
  query: { t: '1400918193313' },
  url: '/socket.io/1/?t=1400918193313',
  xdomain: true,
  secure: undefined }

        因此得到IP也能容易了。

发表在 技术 | 留下评论

centos6.3 安装node.js报import bz2错误

        今晚安装node-v0.10.28.tar.gz时候,发如下错误

File "../../tools/js2c.py", line 36, in <module>
 import bz2
ImportError: No module named bz2

       系统已安装python 2.7.6版本,可是手工测试发现import bz2确实报错,说明该模块未安装。

        解决方案

#安装bzip库
yum -y install bzip2*

#进入python源码重新安装模块
cd Python-2.7.6/Modules/zlib
./configure --prefix=/usr/local/python-2.7.6
make && make install

#回到源码安装
cd ../../
./configure --prefix=/usr/local/python-2.7.6
python setup.py install

发表在 技术, 运维配置 | 标签为 , | 留下评论