Mac下自动杀死ssh进程并重连
何 李石 2011-04-12 19:26
Mac用了好一段时间了,各方面感觉还不错。清爽而漂亮的界面,加上无比强大的终端(貌似没Ubuntu的终端强大,不过相对于很多手动的操作来说,一个命令就能搞定很多事情,在我看来已经很强大了),这是最好的最好的结合体。可惜,Win无论怎么谈用户体验,也不会去为程序员们考虑考虑。而Linux社区,则尽量将界面做好,其最近发布的Gnome3也表明,他们在将界面做的越来越好。遗憾的是,最新发布的Ubuntu居然默认放弃Gnome,转而使用Unity作为其桌面库,干嘛呢这是?
回到正题。在Ubuntu下,在后台连上个ssh之后,它就基本上不会掉线了。即使偶尔掉线,也能很自觉的自动连上。而在Mac下,它就会每隔一段时间自动断一下,需要手动才能连接上。这是很不爽的。哥遂使用autossh这个小工具。
使用autossh之后,它不会轻易自动掉线了。但网络不稳定的时候,它还是会断。这次断的就很不彻底,等你再次手动连接的时候,它告诉你已经连接上了不能再连接,但事实上你又用不了这个连接。占着一个端口,用不成又不退出,简直是站着茅坑不拉屎,成僵尸进程了?
使用Mac自带的“活动监视器”,我发现跟ssh进程相关的一共两个,一个是ssh,另一个是ssh-agent。将其杀死之后,以上问题就解决了。问题是,怎样杀死进程呢?你可以在“活动监视器”里选中某个要杀死的进程,然后点击左上方的“退出进程”红色小图表。当然,也可以使用下面这两个命令:
killall ssh
killall ssh-agent
把以上两条命令写到自动ssh连接的脚本上,就是这样子的:
killall ssh
killall ssh-agent
/usr/local/bin/autossh -M 20000 -f -N -p 22 -g -c 3des -D 7070 ikbear@nyhacker.org
你看出来了,我用的代理是NYHacker的,我也不知道啥时候申请的。他们使用的貌似是linode的512M套餐服务器,速度很不错。有这样的几乎永久免费的优质代理,我不翻锻炼身体的墙都不好意思啊。
