Expect登陆没有公钥的服务器

公司有几台服务器总是不能把自己的ssh-pubkey放上去,每一次输入那一长串的东东实在是无法忍受。看了一下expect像样的文档没有一个,倒是有一堆的例子,学习下,放在这里备忘吧。

#!/usr/bin/env expect
set timeout -1 #设置超时的时间,单位是秒,-1是永不超时
set password ****  #设置变量
set host [lindex $argv 0] #设置一个变量是从命令行参数得到
spawn ssh guixing@$host #来来来,下个蛋
expect "assword:" #等的就是它了
send -- "$password\r" #发出去
interact #剩下的就是自己的了

在Mac上调教Emacs.app

Emacs到了Mac上遇到了一个关于中文显示的问题,最后还是使用了OpenDesktop-Fonts中的AR PL New Kai这一套字体

defaults write Emacs Font "AR PL New Kai"

update: 从Reallazy那里找到一个写.emacs的方法

(set-default-font "Monaco-18")
(set-fontset-font (frame-parameter nil 'font) 'unicode '("STHeiti" . "unicode-bmp") 'nil 'append)
(set-fontset-font (frame-parameter nil 'font) 'unicode '("LiHei Pro" . "unicode-bmp") 'nil 'append)
(set-fontset-font (frame-parameter nil 'font) 'unicode '("Arial Unicode MS" . "unicode-bmp") 'nil 'append)

遇上oom-killer

最近有几台加过内存的Dell 2950总是很囂张的把我的mysqld给kill掉了,原因是Out of Memary了。这几台机器都有添加新内存的经历。应该是OOM-killer在做怪了吧。查了一下,这种情况好象是发生在LowMemary耗尽的时候,kernel就会把某个倒霉的pid给干掉,而且这个时候他是不会管HighMemary还有没有剩余。先做了一些调整,看看情况再说吧。

sysctl -w vm.lower_zone_protection=250
sysctl -w vm.overcommit_ratio=70 #这个可能没什么大用吧

update:
适才到 delphij那里了解了一下,32位CPU有不同的工作模式,因APE增加了四条地址线,因此有36位的物理寻址能力,但寄存器是32位的,所以最多只能使用4G内存。但是OS有办法能让你运行的一大票进程访问的内存其实是4G之外的内存,但是MySQL是线程的,所以只能在同一个进程地址内。所以MySQL只能看到4G内存,但这4G内存有1G是系统使用的,所以只有3G内存给MySQL用。解决的办法就是换64位的吧。

link: