挂了一块希捷移动硬盘

这块希捷硬盘是我台机上硬盘里最年轻的一块,居然就挂了…… Power On Hours也就刚过一年,买来还不到两年。希捷最近真是不行…… 挂掉的是Seagate Expansion 3TB,里面的硬盘是希捷酷鱼7200.12(ST3000DM001)。 花了不少功夫拆开来,里面就是一块硬盘插在一个小电路板上。 貌似这个移动硬盘散热很糟糕,最高温度超过60,平时跑着也有55+。看看其他硬盘也就40度左右的温度,可能散热不好是挂掉原因之一。 整个硬盘盒上部完全密封,就底下有些眼,难怪散热不好…… 做了个盘面扫描,碰到坏块很慢所以就做了一点。貌似挺有规律,基本上是坏掉2块,好一块,坏掉2块,好7-8块,然后重复。每块大小大约是286M。第一个坏块是第三块。 这些坏掉的部分估计物理上有啥共同的地方,具体也不清楚。说这个硬盘是三碟装,没看出有啥关系…… 恢复数据挺麻烦的,稍微大点的文件就可能读不出来,只好跳过去。幸好这盘才用了500G,多数也不是啥重要的数据,所以损失不大…… 台机上另外的本科买的WD Elements 1TB(15862小时)一点问题也没有,开机时间都快赶上这货两倍了。 另外台机内部的其他硬盘,包括古老的西数硬盘(120G,20377小时),希捷硬盘(500G,17794小时)都没有问题。 难道传言最近希捷不行了是真的…… 以后还是避开希捷买西数算了……

胡写脚本于是又bug了

说写一个monitor进程是否在跑的脚本,本来用的是ps ax | grep $sig | grep -v grep。 这个脚本写的时候好好的,用xxx.sh &跑也没问题。但是只要一关那个term分页,就挂了…… 把ps ax的内容dump出来看,居然右边被切掉了…… 那当然是宽度问题,改成ps axww就好了。想想看见过别人脚本里的ps axww,原来是这个道理…… 想是有term分页的时候,输出检测用的是term宽度,所以没有被切。分页干掉之后输出宽度没法检测了,于是用了个默认值,于是就被切掉了…… 加上ww之后想多宽就多宽,就不会被切了…… 胡写还真是能写出奇怪的bug…… 而且要不是这次$sig出现在比较靠右的位置还发现不了…… 说不定哪天换sig就莫名其妙不工作了…… ps. 其实用pgrep -f就完了么……

Code Keyboard在BSD下的多媒体快捷键配置

在之前买了个Das Keyboard之后,这回为了在家里用搞了个Code Keyboard。 Code Keyboard自带一堆多媒体键,不过要让这些多媒体键发挥作用还要费些功夫。 刚插上去的时候,多出来一个键盘和一个鼠标设备: ukbd2: <vendor 0x04d9 USB Keyboard, class 0/0, rev 1.10/1.10, addr 8> on usbus0 ums2: <vendor 0x04d9 USB Keyboard, class 0/0, rev 1.10/1.10, addr 8> on usbus0 作为一个键盘来说,有个鼠标设备还是很奇怪的,所以多半是用来给多媒体键的。Ports Tree里有个uhidd,https://wiki.freebsd.org/uhidd,可以用来处理这些多媒体键对应的hid事件。ukbd驱动不错,我们只要干掉ums驱动就可以了。为了这个,先配置uhidd让他干掉ums自己attach上去: 0x04d9:0x0169:0={ detach_kernel_driver=”NO” } 0x04d9:0x0169:1={ detach_kernel_driver=”YES” } 之后跑uhidd -h /dev/ugen0.7 (这里ugen0.7是这个键盘对应的ugen设备,-h启动HID类设备),就会发现/dev底下多了uvhid0。 跑系统自带的usbhidctl -f /dev/uvhid0 -l -a,然后按那些多媒体键,就能看见HID状态变化的事件,例如Volume_Increase从0变到1然后变回去之类。 之后,要让uhidd把这些事件翻译成键盘按键。在配置文件的0x04d9:0x0169:1那段里加一段: cc_keymap={ Play/Pause=”0x54″ Stop=”0x5a” Volume_Decrement=”0x62″ Volume_Increment=”0x63″ …

Continue reading ‘Code Keyboard在BSD下的多媒体快捷键配置’ »