良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

linux下使用flock锁文件(适用于crontab)

当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进程没有也在操作,以免损坏数据。

但是flock有不适合的地方,比如和网络有关的计划任务跑了一半,网络中断了,任务是不会退出的,等网络好了,计划任务不会继续执行下去。这种不灵活的东西,最好还是shell里自己写好执行状态去操作,管理更加方便自如。


阅读全文...

linux命令dd详解及实例

dd

使用dd这个linux命令可以创建一定大小文件。

linux创建文件命令:dd命令
把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。语法:
CODE:[Copy to clipboard]dd 〔选项〕
QUOTE:
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和obs)。
cbs = bytes 一次转换bytes字节。
count = blocks 只拷贝输入的blocks块。
conv = ASCII 把EBCDIC码转换为ASCII码。
conv = ebcdic 把ASCII码转换为EBCDIC码。
conv = ibm 把ASCII码转换为alternate EBCDIC码。
conv = blick 把变动位转换成固定字符。
conv = ublock 把固定们转换成变动位
conv = ucase 把字母由小写变为大写。
conv = lcase 把字母由大写变为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。


阅读全文...

​lvs的ActiveConn介绍

    今天测试lvs,发现ActiveConn总是不准确,明明并发是1w,可是总在6k徘徊,又无报错。

    lvs的activeconn是个一直让我很迷惑的东东.每次看到这个数巨大而真实机上的活动连接数并不是很高的时候,我都忍不住网上搜索一番,虽然大多时候总是无功而返,但是渐渐的总结出来了以下理论.

    ActiveConn是活动连接数,也就是tcp连接状态

阅读全文...

kernel: TCP: time wait bucket table overflow

kernel: TCP: time wait bucket table overflow错误的解决办法

现象为message日志报如下错误:

Feb 27 10:53:36 web kernel: __ratelimit: 5 callbacks suppressed

Feb 27 10:53:36 web kernel: TCP: time wait bucket table overflow
Feb 27 10:53:36 web kernel: TCP: time wait bucket table overflow
Feb 27 10:53:36 web kernel: TCP: time wait bucket table overflow


阅读全文...

快速回收TCP连接

通过sysctl去改变established状态的timeout值:

# sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600

永久保存:写入/etc/sysctl.conf   再执行sysctl -p


然后你再试试,应该就好了,默认 TCP 连接痴呆保持是 120 小时,也就是 5 天
这样就改成 10 分钟了,数值可随你心意去调


阅读全文...

看牛人说话,知mongodb和redis的区别及应用场景

 【虾米】
大伙手头有用redis的吗?实战中最大的数据库多大?占内存多少?
【大虾】
我们这边有用
【大虾】
不过没注意过, 这边用到的最多几十兆
【大虾】
都说 缓存和队列
【码农】
Redis有用
【码农】
used_memory:1490836776
used_memory_human:1.39G
used_memory_rss:16965427

阅读全文...

Linux下使用dsniff的tcpkill将一个已经创建TCP连接断开

今天发现服务器很多ESTABLISHED 状态无法消除,导致服务不正常,一直找解决办法,最后发现使用工具tcpkill就可以了,yum install -y dsniff

或者源码编译都可以http://www.monkey.org/~dugsong/dsniff/

tcpkill是不断去监听端口的,所以输出可以 &>/dev/null


阅读全文...

yum报错GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EP

Yum 遇到

warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

 

GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

阅读全文...

error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key

修改 linux 内核文件 
#vi /etc/sysctl.conf后执行sysctl  -p 报错
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
 
解决方法如下:

阅读全文...

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

今天在虚拟机vm中使用yum安装,遇到一个问题:

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again


处理很简单,修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉。即可。

还有可能是网络不通,看下route,能不能出去,发现只要一个桥接的网卡就好了!



阅读全文...

今天rsync报错Argument list too long及分析ARG_MAX

今天rsync报错Argument list too long

因为rsync -avz a/* b/

这里a目录下有5000多个文件,展开后,arg缓存不了,把*去掉就可以了:

该错误表示执行命令的参数太长,超过系统允许的最大值,这个值通过ARG_MAX参数控制。
可以通过 getconf ARG_MAX可查看系统当前设置的值。


[root@localhost ~]# uname -a

Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost ~]# getconf ARG_MAX

2621440

[root@localhost ~]# echo "2621440/1024/1024"|bc

2


2M的都不够啊,要改就得动内核参数,重新编译


阅读全文...