2009年3月29日星期日

/bin/sh: root: not found

root用户经常收到这样的错误邮件:

  From: Cron Daemon <root>   To: root   Subject: Cron <root@fwolf> root /home/fwolf/bin/cmd_run_in_crontab   X-Cron-Env: <SHELL=/bin/sh>   X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>   X-Cron-Env: <HOME=/root>   X-Cron-Env: <LOGNAME=root>     /bin/sh: root: not found    

这个问题很简单,但也容易让人糊涂,先说原因吧, /etc/crontab 中格式是这样的:

  17 * * * * root cd / && run-parts --report /etc/cron.hourly    

root# crontab -e 出来的应该是这样:

  17 * * * * cd / && run-parts --report /etc/cron.hourly    

注意, /etc/crontab 是针对整个系统的,所以第6列是用户名, root# crontab -e 是root用户的,所以第6列就直接是命令了。

这有什么好糊涂的呢,因为这两个文件很可能会一模一样,我就是这样,后来才发现他们的不同,不信用 root# crontab -e 修改些内容再和 /etc/crontab 对比就知道了。

现在, /bin/sh: root: not found 这个错误不用我再解释了吧?直接拷贝crontab到root的后遗症。

Tags: , , ,

Related posts

Source: http://www.fwolf.com/blog/post/436

2009年3月26日星期四

VirtualBox的VRDP运行模式

其实没什么深奥的,所谓VRDP运行模式,就是虚拟机运行的时候,没有图形窗口,但可以用VirtualBox的RDP模式远程管理,说是远程其实在本机上用很方便,用起来和windows下的远程桌面一样。如果虚拟机上安装了vncserver之类的远程控制软件,并且从主机上能够通过tcp访问,也一样可以管理的。

我使用的是非开源的VirtualBox,开源版本少一些功能。以下操作在windows下也是可以参照使用的。

启动VM的命令:/usr/bin/VBoxManage startvm WinXP -type vrdp,默认是-type gui即以图形界面启动虚拟机。

控制VM比如保存状态关闭的命令:/usr/bin/VBoxManage controlvm WinXP savestate

以上命令中WinXP是虚拟机的名称,也可以用uuid替代。

开启VRDP后远程控制端口默认是3389,默认认证方式是null,即无认证,任何人都可以连接上随意控制,放在网络环境下是很不安全的。还有一种认证方式是external,可以使用主机上的用户机制来认证,不过使用之前要稍微作一下设置:

cd /lib sudo ln -s libpam.so.0 libpam.so 

不然认证无法进行,连接闪一下就关闭了。远程桌面的客户端在gnome中可以用Terminal Server Client(tsclient)或者rdesktop-vrdp -u fwolf -p - localhost

要想随重启或者关机自动关闭虚拟机,要稍微麻烦一些了,首先在/etc/init.d/下创建一个文件fwolfrc

#! /bin/sh  # Using LSB funtions: . /lib/lsb/init-functions set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="Fwolf's Init" NAME=fwolfrc SCRIPTNAME=/etc/init.d/$NAME  # Function that starts the daemon/service. d_start() {     touch /var/lock/subsys/$NAME     log_daemon_msg "Starting $DESC" "$NAME" }  # Function that stops the daemon/service. d_stop() {     su -c "/usr/bin/VBoxManage controlvm WinXP savestate" fwolf     rm /var/lock/subsys/$NAME }  # Function that sends a SIGHUP to the daemon/service. case "$1" in   start)         d_start     ;;   stop)         d_stop     ;;   *)     log_warning_msg "Usage: $SCRIPTNAME {start|stop}" >&2     exit 3     ;; esac  exit 0 

我也是直接从/etc/init.d/里套过来修改的,详细信息可以看参考文章或者其它关于关机自动执行脚本的资料。然后把这个文件ln为以下几个:

  • /etc/rc0.d/K01fwolfrc
  • /etc/rc6.d/K01fwolfrc
  • /etc/rc3.d/S99fwolfrc
  • /etc/rc5.d/S99fwolfrc

可以看到开机时是最后执行,而关机时是最先执行。注意我上面的脚本里,在开机是并没有自动启动虚拟机,习惯手工开。

参考

Tags: , , , ,

Related posts

Source: http://www.fwolf.com/blog/post/425

2009年3月23日星期一

机房搬家过程中的几件趣事

 Link    

都是真事儿,先介绍现象,后面再说搞笑的原因。由于是搬家,目的地场地环境有一些变化,加上现在的机器上灰尘已经攒了好几年的了,所以每台机器都尽量拆开了、逐个零部件清洁,然后再装好开机检查,这一拆一装问题就来了。

  • 一台IBM X3650拆开清理后装好了,接上电,开机没反应,但电源线都正常插着呢。
  • 一台HP LH6000,3个电源模块,需要2条电源线,都接上了,开机,发现转几下后自动停机,有点儿带不动或者自检出错的感觉,怀疑是内存的原因(此机原来出现过类似的内存错误)。
  • 一台HP LH3000,网线接上了交换机,但不亮,系统中也显示"网线已断开",但这条网线测了N遍都是通而且很正常的,换别机器的网线仍然如故。
  • 防火墙内网、外网、SSN/DMZ的网线都接上了,也都通,可怎么配置就是连不上外网,奇怪啊,搬之前还正常用来着,就改了个互联IP的事嘛。

其实啊,这些活儿虽然很辛苦,还真多亏了这些"奇妙"的故障原因,实乃枯燥工作过程中的小小点缀,我下面要说的原因,你都猜到了么?

  • IBM X3650的电源模块的纵切面是长方形的,所以上下颠倒也可以放到槽里,就是卡子卡不紧而已,所以有位哥们儿就顺理成章的上下颠倒的安上了,还抱怨不好卡。我是看到电源上AC灯亮而DC灯不亮发现的,因为电源屁股后面的文字也都是倒的。
  • 虽然两条电源线都正确的接在了电源的屁股后面,但由于众台机器都拆去清洗了,地面上遗留的线缆比较多,所以。。。有一根电源线的另外一头不在插座上。同样是检查电源模块上的灯发现的,可怜之前我们插拔cpu/内存板子和调整内存N遍啊。
  • HP LH3000原先是用光纤与交换机连接的,搬家之后换用铜缆了,当然光纤网卡和铜缆网卡不是一块,最关键的是,以前我们为了不让数据从铜缆走,把接铜缆的网卡禁用了。所以换铜缆之后(此时还未开机或启动进入桌面),这根线也通线序也没问题,但肯定就是不会亮啊。
  • 这个最简单,防火墙和交换机都挨着装在机柜的最上方,而且我们的内网和SSN/DMZ都是连到一个交换机上,联通扯过来的光纤已经被机房管理人员用铜缆跳到了机柜自带交换机(位于机柜最下方)上,离得比较远而且也没有线头再外面露着,所以就用三根短跳线从防火墙接到了我们自带的交换机上,和联通光纤没有任何物理连接,能通才出鬼了。

还有一件我们研究了半天的事情,IBM机架服务器自带滑轨在前方除了有2个圆柱用于对入机架上的方形孔外,前面还有一个向下的小钩子,此时我们已将所有东西都拆了下来运到目的机房准备安装,恰好大家以前接触机架滑轨也少,也巧了机房现有服务器看了个遍滑轨全部都是用螺丝固定的,不像我们这个IBM滑轨只用卡件解决。最致命的是,滑轨前方的小钩比机柜上的方孔要宽,怎么也穿不过去,这样怎么才能把滑轨"钩"在机柜上固定啊?机柜是图腾的,滑轨是IBM的,按说都是符合标准的玩意儿,咋就不"兼容"了呢?研究了半天,一位聪明的小胖子终于发现,通过弹簧把2个圆柱压回去,空出的空间正常卡入机柜竖架,松开手弹簧自然把圆柱弹入机柜竖架上的方孔,这一端就固定完毕。至于那个向下的方形小钩子嘛,是在服务器装上、完全推入滑轨之后,"卡"得一声卡住服务器的,并非是要卡在机柜方孔中。可怜我们怀疑图腾和IBM不兼容老半天,就差打电话到他们公司去问了-_-!。

Tags: , , , , ,

Related posts

Source: http://www.fwolf.com/blog/post/417

2009年3月13日星期五

好玩有趣又有用的Mockups

Balsamiq Mockups For Desktop

见过flash游戏中,鼠标画个圆就是球,画个方块就能站住,画条线就能成跑道(这个很经典了,滑雪橇的游戏),也见过一个视频,老师讲课的时候画个斜块、小车、轮子就能够产生物理动作,看到Mockups以后,就也有类似的感觉,不过这个是用来设计软件界面的。

以前设计界面的时候用什么?想过但用的相对比较少,笨办法就是文字描述,左边放什么,右边上面放什么,右边下面放什么等等,高手会用ps画,只要不嫌累,还有画在纸、黑板上的,这些手段都有个共同的缺点────不方便管理和变更。现在不易管理、不可变更的工具用起来太累了,Mockups正是很好的解决了这个问题。

就像上面这张图片一样,在Mockups里,提供了很多用户界面设计元素,拖过来调整、搭配就能形成一张设计示意图,在设计阶段、持续变更阶段应该都是很好的表达工具,毕竟一图胜千言嘛。风格上是手绘的草稿风格,让人感觉和在纸上没区标,估计打印出来蒙人也没问题。技术实现上,依赖Adobe AIR环境,所以也是跨平台的。从图上也能看到,只要选中了菜单里的View -> Use System Fonts,中文支持还是可以的,好像不能选字体,不过够用了。

缺点首先是没有我想像中的"手工画线",毕竟直接画和使用预制物件的感觉和灵活性还是有区别;第二就是速度,2006年买的电脑用起来都不算十分流畅;第三就是技术平台,个人对AIR不感冒,当然这个也没得改了,呵呵。

Tags: , , , ,

Related posts


teamol=WebCollab

Team Online 项目管理系统

如果你曾经在国内某个php源码下载网站下载过一个叫teamol的团队任务分配软件,不知你有没有注意到,它和国外开源项目WebCollab之间似乎有着亲密的联系。

本来我也没注意,可这个teamol下载回来以后安装颇不顺利,文档TeamOL setup.doc和安装界面有不一样的地方,虽然国内开源项目用doc写文档不算奇怪,但这个文档内容也太少了。代码注释中有个"官方网站"http://www.inodea.cn是打不开的,代码中很多地方标的版本号是0.1,可下载时我记得说的出3.0或者3.2版本。

开始安装以后有个地方卡壳了,还没安装数据库,就要从数据库里信息来验证用户是否有权限安装。hack安装之后,path配置也有问题,模板中还有一些错误,比如明明这段函数内没有$title这个变量却多次使用,要知道即使是global $title也是没有值的。

反正歪歪扭扭总算把程序配置得能运转了,开始试试,功能倒还有点让我满意的意思,除了日期选择的弹出窗口我极其不喜欢。然后我就发现了一件让我大跌眼镜的事情,这么一个错误百出或者说有点像半成品的"国产开源"作品,居然不仅有英、中文支持,还有一个看似排版比较成熟的英文帮助页面:

webcollab-help

好奇的我挑了帮助页面中的一句话上G一搜,便找到了WebCollab。仔细比较下来,两者的目录结构也几乎一样:

dir structure of teamol and webcollab

结果应该不用我说了,也或许teamol的作者原想只是以webcollab为蓝本边学习边制作一个全新的系统吧,从注释中的版本0.1和修改过使用frame的页面框架中能够看出作者还是付出了些劳动的。

回到主题,用于小组内工作任务分配跟踪,倒是可以试试WebCollab,界面是简陋了点,基本的内容算是都有了。但这类软件,至今没找到一个特别好用的,包括很多在线的GTD或者项目管理系统。

WebCollab login

Tags: , , ,

Related posts


转换静态图像为视频

需要把100+张大小不一的图片,转换为视频,上网查了些资料,关键词一般用still images或者image sequence,结果用mencoder就能作:

mencoder mf://*.jpg -vf scale=800:600,harddup -ofps 25 -ovc xvid -xvidencopts bitrate=800 -o dbb.avi 

结果出来的影片每秒25帧,也就是切换每秒切换25张图片,120多张一共耗时4秒,没法看。把fps调整为1或者0.1之类的数,mencoder运行就出错。没办法,我想了一笨办法。

按照每秒25帧算,那么如果一张图片想显示2秒,那么就把它复制(用ln更快,别傻傻的cp)2×25=50份,比如001.jpg.001, 001.jpg.002…按照这种方法把图片都整到一个目录中,然后再使用上面那个命令就能够正常转换了。

不过,当图片大小不一的时候,还是会出现错误,比如这个:

VDec: vo config request - 800 x 463 (preferred colorspace: Planar 444P)] VDec: using Planar 444P as output csp (no 0) Movie-Aspect is 1.33:1 - prescaling to correct movie aspect. [CROP] Bad position/width/height - cropped area outside of the original! FATAL: Cannot initialize video driver. 

mencoder转变源尺寸的东西我不熟悉,试了一些参数都不行,刚想放弃,从这里发现有images2mpg这个好东西。

images2mpg是在kipi-plugins这个包里(属于kde桌面下的插件),需要安装imagemagic等包,如果提示:

Can't find ppmtoy4m, please install it or check -M parameter 

这是缺少包mjpegtools,如果提示找不到ogg123,那是缺少包vorbis-tools。images2mpg就是利用这些包完成图片转换、压缩视频等工作的一个脚本。可以这样用:

images2mpg -o mzj.avi -t 4 -d 1 -S 420mpeg2 -M /usr/bin/ -i ???.jpg 
  • -t 4是淡入淡出的效果,4对应的时间消耗在帮助里面,约1秒
  • -d 1是每张图片停留1秒,很遗憾这个参数不能用小数
  • -S 420mpeg2指定mpeg2压缩方式
  • -M /usr/bin/指定mjpegtools的可执行文件位置,不知怎地images2mpg自己不会到/usr/bin下找
  • -i ???.jpg是源文件,必须放在最后

转换结果很贴心,图片自动都按长、短边缩放到了视频大小,空白的地方是黑色,淡入淡出效果也还能接受,就是转换速度有些慢。

有了这个素材,再进行添加声音、分段设置间隔时间等操作就都能够很简单的用mencoder完成了。附上一个视频片段合并,并且引入外部声音的例子:

mencoder -audiofile mzj.mp3 -ovc xvid -xvidencopts bitrate=800 -vf harddup -idx -oac copy -o mzj.avi mzj_1.avi mzj_2.avi 

不过这样声音在播放的时候会重复,如果合并完再加声音就没事了。

Tags: , , ,

Related posts


升级到Ubuntu Intrepid后感觉到的一些变化

第一,一台服务器,双网卡,配置两个ip地址,这两个ip地址同属一个网段,因此网关设置为相同。升级前一切正常,升级后只能让同网段的其它机器ping通,其它网段机器即使防火墙规则允许也ping不通,去掉其中一个ip地址的网关设置后就可以了。

第二是和mysql相关的怪怪的问题,以前mysql设置中都有一项:

innodb_flush_log_at_trx_commit=1 

升级后,一台P4 1.7 256M内存的机器insert数据正常,另外一台IBM x3650 双5160 3.0GHz cpu 4G内存机器的insert却极慢(10条数据要5秒),不光是比以前Feisty慢,比刚才那台P4机器都要慢很多倍。将此项值调整为2以后恢复正常,insert 1000条数据耗时0.25秒左右。P4机器也将此值调整为2后有改进,但不如x3650明显,insert 1000条数据耗时5秒多。

第三,登录后欢迎屏幕里的那个系统信息我很喜欢:

  System information as of Tue Jan  6 23:50:02 CST 2009    System load:    0.0                Memory usage: 77%   Processes:       118   Usage of /home: 19.4% of 24.03GB   Swap usage:   34%   Users logged in: 3 

如果没有出现,把landscape-common这个包装上,并且平时可以用landscape-sysinfo命令调出类似信息。

Update @ 2009-01-13

字体问题又出现了,网上有很多修改文泉驿字体的方法,我则是/etc/fonts/conf.avail44-wqy-zenhei.conf69-language-selector-zh-cn.confWenQuanYi Zen HeiWenQuanYi Bitmap Song前面加上Simsun,字体倒是还是原样(默认宋体),但firefox和其它X程序有时候字体乱成一片,也有说像墨点或者重叠的,反正鼠标选中后就恢复了,有人说是驱动的问题,把nvidia-glx-96换成nvidia-glx-71干脆X就起不来了,其它的173 177 180根本就不支持我的GForce4 MX440。

如果不换Simsun,用网上的方法调整一下文泉驿字体的处理方式,倒是不乱,但字体略显模糊,还能接受。但其它X程序依然有时文字是乱的。查到可能是显卡驱动的问题,只能等待了?

另外注意一点,nvidia-glx-??安装后必须重启系统,只重启X是不起作用的。

Update @ 2009-01-16

旧IBM本本,raedon9000的显卡,fglrx不支持,所以卸掉xorg-driver-fglrx后X能起来了,但登录界面无法输入,并且小红点失效,reinstall xserver-xorg-vesa后dpkg-reconfigure xserver-xorg后好了。总体来说反而比N卡好配。

Update @ 2009-02-08

如果安装nvidia显卡驱动时出现这样的错误:

  dpkg-divert: `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-96' clashes with `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71'   dpkg: error processing /var/cache/apt/archives/nvidia-glx-96_96.43.09-0ubuntu1.1_i386.deb (--unpack):    subprocess pre-installation script returned error exit status 2   Errors were encountered while processing:    /var/cache/apt/archives/nvidia-glx-96_96.43.09-0ubuntu1.1_i386.deb   E: Sub-process /usr/bin/dpkg returned an error code (1) 

可以试着用dpkg-divert --list|grep GL找到libGLcore.so相关的内容,可能会定义到另外一个包里了:

$ dpkg-divert --list|grep GL diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71 diversion of /usr/lib/libGL.so.1 to /usr/lib/nvidia/libGL.so.1.xlibmesa by nvidia-glx-96 diversion of /usr/lib/libGL.so.1.2 to /usr/lib/nvidia/libGL.so.1.2.xlibmesa by nvidia-glx-96 

可以看出是nvidia-glx-71没删干净,在这里手工清除就可以了:

$ sudo dpkg-divert --remove /usr/lib/xorg/modules/extensions/libGLcore.so Removing `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71' 

Update @ 2009-02-09

ati的驱动也出问题了,rv3??核心的显卡全不支持,比如我的Radeon X600,暂时只能删掉fglrx,用其它的驱动替代。删除xorg-driver-fglrx相关的包,装上xserver-xorg-video-ati,然后sudo dpkg-reconfigure xserver-xorg,生成了一个极小的xorg.conf,图形就有了,但据说3D性能几乎没有,办公用没啥大事。

Section "Device"     Identifier  "Configured Video Device"     Option      "UseFBDev"      "true" EndSection  Section "Monitor"     Identifier  "Configured Monitor" EndSection  Section "Screen"     Identifier  "Default Screen"     Monitor     "Configured Monitor"     Device      "Configured Video Device" EndSection 

Firefox工具栏的自定义设置总是丢失的问题原因也找到了,可以暂时禁用TabMixPlus扩展,或者是禁用Ubuntu Firefox Modifications,我选择后者。

字体也有一点小问题,比如方正小标宋的"黑体"效果就没有了,重新刷新一下fc-cache -fv就好了。

Tags: , , , , , , , , , , , ,

Related posts


Intrepid中的php-sybase凑合能用了

以前说过Ubuntu升级到hardy之后,php-sybase没了,现在在intrepid里又有了,不过有些变化。

主要的原因好像是支持方式从以前的ctlib变成了dblib,其实是和mssql的支持作在一起了,所以现在没有了sybase_ct.so,并且如果使用了adodb(我新下载的版本是5.07),要修改drivers/adodb-sybase.inc.php的148行,把

return sybase_unbuffered_query($sql,$this->_connectionID); 

替换为

return sybase_query($sql,$this->_connectionID); 

因为sybase_unbuffered_query只有在使用CT library时才能用

另外一个小变化就是timestamp读出来以后的值变了,由于sybase内置的timestamp其实是varbinary类型,所以原来使用ctlib的时候读出来就是这样的:000007d001917b36,但现在变成了类似中文字符串的形式,所以也需要转换一下:

if (16 != strlen($ts))     $ts = bin2hex($ts); 

Update @ 2009-03-01

还是日期的问题,现在从数据库日期字段里取出来的数据多了个毫秒部分,比如Mar 01 2009 00:24:00:000AM,致命的是这个字符串交给strtotime()函数居然不返回值,把毫秒部分:000去掉就没事了。

Tags: , , , , , ,

Related posts