Linux的重启

init 6和reboot 如果直接搜索“init 6和reboot的区别”,会得到大量的以讹传讹的网页,它们纷纷表示init 6才是正确的重启命令。 而实际上,在现在的大多数发行版中,init和reboot来自于同一个软件包(sysvinit、upstart或者systemd等等)。reboot最终仍然是通过init进程完成的。reboot在正常情况下会做两件事——1.通知所有用户系统要重启 2.init 6。 在sysvinit的早期版本(2.74以前)中,reboot会不经过init而直接通知内核重启。upstart和systemd中的reboot一直是经过init的。在新的sysvinit中,reboot仍然保留的这种方式(-f参数)。 内核快捷键重启 无论reboot还是init 6都会等到所有进程被正确关闭之后才会通知内核重启。那么当你遇到一大堆因为等待IO而被挂起到D状态的进程怎么办?这种进程在回归正常之前是不能被kill的,所以reboot会被挂起。 一种方法是给reboot增加-f参数以强制重启,另一种方法是通过内核预留(内核编译时开启CONFIG_MAGIC_SYSRQ ,大多数发行版默认都开启)的内核快捷键接口,/proc/sys/kernel/sysrq置1时,可以通过向/proc/sysrq-trigger写入内核快捷键来强制重启。 一个典型的强制重启过程大致如下: echo 1 > /proc/sys/kernel/sysrq echo b > /proc/sysrq-trigger 如果服务器的ssh已经挂掉,而且没有serial console的情况下怎么办?如果提前安装过ipt_sysrq的话大概还有救,只要网络还通,那么可以通过发送特殊的数据包来触发内核快捷键。 如果是桌面系统,那么用Alt+SysRq触发内核快捷键更方便一些。比如显卡驱动挂掉之后可以尝试用Alt+SysRq+REISUB重启。 完整的内核快捷键列表可以看这里。 高级的重启 传统的重启基本上相当于关机+开机的过程,特别是开机自检这一步实在太慢了,kexec提出了另外的重启方式——置换内核,重新init。 更多的情况下重启linux系统仅仅是为了更新内核,ksplice可以直接将更新patch到正在运行的内核上,于是干脆将重启这一步省了。

一九八九自由潮

转载自纵览中国 北明 也是一束炽白的碘钨灯光对着我。也是一架手提式摄像机。 摄像机后边,是一位金发碧眼的外国记者。 再后边,是昏睡在帐蓬里的学生。 再往后,是川流不息的人群。再往后,是用绳子拦起的救护通道以及不时鸣着警笛疾驰而去的救护车;……再往后,是人海,走着的、立着的、站着的、躺着的、翘首遥望的、议论纷纷的、焦虑不安的、愤愤不平的,一直延续到不能再延续的地方——那个巍峨雄阔的历史博物馆建筑群。 我眯起眼,侧过身,让开面前的麦克风,摆手示意这位外国记者不要将我和这里摄入镜头。他微微耸了耸肩,固执地换了个姿势。摄像机镜头从我身上缓缓摇开去——摞得很高的播音器材……同样摞得很高的稿件……一束鲜艳夺目的插在塑料软杯中的花束……另一名播音员……埋头审阅稿件的编辑们……一些空汽水瓶和快餐饭盒……军大衣和强打精神、眼睛布满血丝、沙哑着嗓子谈话的学生领袖……佩戴红袖标的纠察队员……眉头紧锁的护士、医生……担架……药箱……空着的和满着的葡萄糖水瓶、生理盐水瓶…… 这里是北京天安门广场上的绝食团广播站兼指挥部。我已经在这里度过了两个不眠之夜。 1,学潮初起 二十多天来,已是第三次赴京。 第一次,是在四月十四日,我与郑义同行。他要来参加在文艺报召开的他的报告文学作品讨论会,同时为他与报告文学家、《强国梦》的作者赵瑜合写的一个电视报告文学本找一位切磋者。他在文章中同远志明神交已久,但不相识,而远志明是我的朋友,于是为他引见远志明成了我进京的目的之一。此外,我还将和他一起参加电影局举办的外国电影观摩展。他是山西省电影家协会主席,在所不免,我则试图为一部应邀撰写的电视连续剧本寻找灵感,还要顺便给某编辑部送一篇稿子。彷佛冥冥之中,一切已经按照预定的轨迹运行。 到京第二天,电视里传来前总书记胡耀邦逝世的消息。 震惊、惋惜。仅此而已。 郑义的会议已经结束,我的稿子已经送人,电影观摩展尚未开始,利用这个空档,我陪他去中国青年政治学院找远志明。志明的妻子告诉我们,他到人民大学去看大字报了。 “大字报?” “对,人大出现了悼念胡耀邦,要求为他平反的大字报。” 与其坐等,不如也去。先看大字报,再找远志明。借了他家的自行车,立即奔人大。 ——从那一刻起,一辆单车两个人,我们就上路了。 谁也没想到,在其后近两个月的时间里,展现在我们眼前的竟是一次狂飙突起的民主运动。 学潮来势凶猛,急速发展。天安门广场很快成了不夜之地。越来越多的人把越来越多的花圈,越来越大的挽联、悼词挂上纪念碑越来越高的地方。 2,新华门前 四月二十日学生在新华门前静坐。群众里三层外三层为学生助威。树上、果皮筒上、自行车上、三轮车、平板车上,居高临下者们被翘首掂足的人们要求现场报导。一阵哄喊,人流后退。 “怎么了?嘿!哥们儿,转播一下呀!” “出来好多当兵的。操!手里拿着枪呢。” “当兵的出来了,拿着枪。” “他说什么,哎,你刚说什么?当兵的从哪出来了?” “树上说的,从新华门里出来了好些当兵的。” 又一阵哄喊,人流往前涌。人们节奏鲜明地齐声高喊:“李鹏,出来!李鹏,出来!” “丫挺的真不够意思!学生都坐好几个钟头了,就是不出来说说话。” “嘿!刚才又怎么了?别光顾自个儿看呀!” “哎,转播转播,不然你下来让我上去。” “别介!你那么胖,一上来树该折了!” “那你倒说呀。” “当兵的站成一排,三排,挡住新华门啦。” “他说什么,胖师傅?” “他说当兵的站成三排,挡住学生了。不让学生冲新华门是吧?嘿!树上的?不让学生冲新……” “我操!这阵势,够吓唬人的。噢,学生又住里涌呢。” “学生又往里涌啦。” “又往里涌啦!” …… 我奋勇地上了一回果皮箱,片刻就给挤下来了。 郑义连推带托又将我弄上墙缘,那是新华门两侧做着标语用的墙,此刻已经扒满了人。这回我看清了:全副武装的军警与群众对峙着,将新华门挡了个水泄不通。在他们面前的地下,是一大片席地而坐、秩序井然的学生。学生周围,老百姓人头攒动。 接下来,就从长安街以西来了军车、宣传车,劈劈啪啪跳下来的军人们,一个个面色铁青,人墙一般排排布阵,层层扩大地盘。官方的宣传车来回乱转着警告: 为了维护交通秩序,限大家在几点几分以前自动散去,否则一切后果自负。 午夜时分,宽阔的长安街上,除了这些满载武警的车,再无任何其他车辆,也极少过路的行人、自行车。学生们深夜以后来此静坐,正是出于交通秩序方面的考虑。不知要维护什么交通? 人群一阵阵向后跑,又一点点往回蹭。又一阵大幅度向后跑,再一点一点往回蹭…… 3,和平请愿书 次日上午,我醒来时不见了郑义。 郑义下午五时许回来时不是一个人而是三个。另外两个是远志明和谢选骏(青年神话学家,因参与“八九民运”曾被北京市公安局“收容审查”)。他们表情有些严峻,说昨晚警察打学生了。 郑义从兜里掏出了所有的东西:通讯录、记事本、记者证、中国作协会员证。他说,他们今天拟定了一封致全国人大常委会和中共中央的公开信,要求当局不要以武力镇压学生的和平示威,要求与学生对话。信上已有大批知识界名人的亲笔签名。签名还在继续,而他们三人要亲自去中南海呈交此信。郑义给了我一个复印件,让我好生等他回来,说他最迟晚上八点回来。谢选骏接茬说,“你往晚里说,省得万一没赶回来她着急。” “九点,”郑义说,“九点以前准回来了。” 我说我也去,“你不用,”他说。 “我得去。” “坐不下。” “什么?” […]

Build OpenVPN 2.2.0 with Visual Studio 2010

For building OpenVPN 2.1.4 please refer to Build OpenVPN 2.1.4 with Visual Studio 2010. For building with Visual Studio 2008 please refer to BuildingOnWindows. For building with MinGW please refer to Windows下编译OpenVPN 2.1.1. The building procedure is very similar with building OpenVPN2.1.4 but slightly different. Why Build OpenVPN Yourself The official build does not support […]

各自的翻墙路

我已经记不清第一次碰到GFW是什么时候了,不过还记得是因为维基百科被封锁。那时的GFW还比较简单,只有封锁IP的功能,之后GFW陆续研发了关键字阻断、DNS污染、SSL证书过滤以及最近的针对Gmail的特定端口封锁。 根据一项不科学的调查,中国网民中大概只有1%有机会撞到GFW。这其实是GFW的正面意义之一。统治者觊觎信息带来的经济利益,又担心信息会动摇自己的根基。What would you do? 你会在利益面前动摇自己的信念么?GFW的适时出现,为统治者提供了一个折中翻案——将封锁巧妙的隐藏在网络的不可靠性之中,通过坚决否认来摆脱“构造贸易壁垒”的指控。而这个方案,顺便为中国人保留了互联网——我们当然可以认为,太监也是人,大部分功能都是正常的。 GFW是中国网络审查的代名词,因为这是唯一外国人能接触到中国网络审查的地方。然而GFW其实只是中国网络审查的一小部分。中国在这种审查之下已经变了,中国已经从“临文不讳”走向了“gov/zf”、“轮子”、“目田”。 我尝试过不少翻墙方案,从最早的Tor到最新的WallProxy,唯一没用过的大概就是动态网和无界网的产品,因为我实在难以认同两者的政治观点。从我的使用感受来看,WallProxy是个不错的东西,只不过对Google App Engine的祸害太严重;SSH其实不适合翻墙,因为TCP over TCP is a bad idea;VPN是较为稳定的方案,但是挑选VPN服务商却并不容易。 其实HTTP代理是最好的翻墙手段,因为只有HTTP代理是专门为网页浏览设计的,提供了缓存机制,无论Socks代理、SSH转发、TCP Proxy还是NAT网关都是没有缓存的。普通的HTTP代理会被GFW拦截,必须使用SSL,但没有支持SSL代理的浏览器,解决的办法是将HTTP代理设在国内或者用VPN连接代理服务器。

Build OpenVPN 2.1.4 with Visual Studio 2010

For building with Visual Studio 2008 please refer to BuildingOnWindows. For building with MinGW please refer to Windows下编译OpenVPN 2.1.1. The building procedure is very similar with building with VS 2008 but slightly different. Why Build OpenVPN Yourself The official build does not support saving or reading username & password from file. The official build does […]

nginx做透明代理

在VPN网关上设置一个透明代理能在一定程度上提高客户端的下载速度。最适合做透明代理的自然是squid,但squid有两个缺点: 不支持多CPU; 存在内存泄漏问题,我设置squid内存缓存64m,结果睡一觉起来发现squid吃了200m+。 后来听kangzi说nginx也可以架设http代理,所以考虑把squid换成nginx。 nginx并不是为正向代理设计的,所以如果你的机器上没有出现上面的两个问题,或者内存不是非常紧张(squid占的内存比nginx多),用squid就行了。 nginx做透明代理的配置文件分两段,第一段是在http{}里定义内存缓存,nginx自身不支持内存缓存,但linux有特殊的文件系统/dev/shm,将缓存目录指向这里就是用内存做缓存了。示例如下: http { proxy_cache_path /dev/shm/nginx/proxy_cache levels=2 keys_zone=mem_cache:64m inactive=7d max_size=64m; proxy_temp_path /dev/shm/nginx/proxy_temp; } 如果缓存在/dev/shm上存不下,nginx会给客户端返回404。 /dev/shm的大小与内存并不等值,用 df -h /dev/shm 可以查看。 第二段是在server里配置代理。如果VPN客户端有用Dropbox,那么应该设置较长的proxy_xxx_timeout项——Dropbox有一个HTTP的ping-pong机制,服务器响应时间会在60s以上,而nginx默认的timeout都是60s,会返回502 Gateway Timeout,这时客户端就会掉线。示例如下: server { listen 3128; resolver 8.8.8.8; proxy_cache mem_cache; proxy_max_temp_file_size 4m; location / { proxy_pass http://$host$request_uri; proxy_connect_timeout 60; proxy_send_timeout 120; proxy_read_timeout 120; } } 补充:我测试了debian打包的两个版本,0.7.67(squeeze的)和0.8.54(sid的),0.7.67在处理cookie相关的缓存时有bug,0.8.54还没有出现这个问题。

换个新主题

趁夜深人静的时候,给WordPress换个新主题。 新主题是在HTML5+CSS3的,在Chrome 8下效果最好,Firefox 3.6对CSS3的支持不完整,IE 8并不支持HTML5,只能勉强不影响阅读,不过既然我不用IE 8,那就不管这事了。Chrome 10、Firefox 4、IE 9、Opera、Safari等等没有测试。 换个主题很麻烦,远远不是在WordPress里面点两下就能用的。