'Linux' Tag

  • Linux程序已运行实体的检测以及其PID的获得

    May 25, 2009

    程序中经常需要有这么一个功能:只允许本程序的单个实例运行,即不能多次运行一个程序。检测某个进程是否在运行,在shell中可以很轻松的用命令ps -A|grep xxx找出来,但对于程序来说,该怎么检测呢?我参考了aecium程序的方法:同样调用ps -A|grep xxx。也许会存在更先进的方法,比如dbus、系统信号量之类的技术,总之这个不会是最好的方法,不过且看看其技巧。 首先要获得当前进程的名字以便传给grep,一般通过main的argv[0]可得到运行时的程序名,不过要注意的是,通过路径运行的程序如./a.out,argv[0]也是./a.out的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [...]

  • 无损转换ext3到ext4,with Ubuntu Jaunty 9.04

    April 29, 2009

    Ubuntu Jaunty 9.04开始正式支持ext4文件系统,关于ext4,其优点应该早有听闻,对任何用户而言都具有难以拒绝的诱惑:对一般用户而言,有更好的磁盘性能,快速的预分配、删除,更可靠的日志,更迅速的磁盘检查(不会像ext3可能花几分钟来check,ext4经常是瞬间完成的)……更专业的描述可以看看IBM文库的这篇《Migrating to ext4》。 从Ubuntu 8.10升级到9.04,一定程度上是看上其对ext4的支持,不过如果为此重新格式化分区重装系统,对于使用积累较多的系统来说代价太高了点(PT现在用的系统是去年的8.04,后来升级8.10,再到现在的9.04……),不过根据《Migrating to ext4》的说法,从ext3到ext4的无损转换是可能的,而且并不耗时间,就如Kernel Wiki里面的Ext4 Howto提到转换所用的命令,其实也很简单: tune2fs -O extents,uninit_bg,dir_index /dev/DEVe2fsck -fD /dev/DEV 查了下tune2fs的man页,uninit_bg是支持快速check的特性,dir_index则是创建二叉树散列的目录查找,至于extents在man页没提到,Kernel Wiki里面说是ext4专有的特性,完成后用e2fsck check一次,这样就完成ext4的转换了,整个过程的耗时并不多。 不过这样转换出来的分区有点不完美的地方是,原本存放在分区内的文件结构还是ext3的结构,由ext4的机制透明兼容,以后存放的文件才是ext4的格式。本来影响不大的,不过相信会影响众多完美主义者的精神状态,所以很多人宁愿把文件全复制出来,格式化了分区再复回去。 IBM的文章内提到,因为ext4支持了在线的碎片整理,对于转换的ext4,使用e4defrag整理一遍,就是纯种的ext4了,不过到目前为止,e4defrag并未完全可用。不过相信不久的将来,转换到纯种ext4完全可以一气呵成的。 最近有谣言说/boot不能是ext4,不然grub引导不了。事实上Ubuntu 9.04已经完全支持ext4,不然此前怎么会有ext4系统的9.04 21秒引导系统的新闻?不过对于升级过来的9.04,安装在/boot/grub里面的程序还是旧版的,没有自动升级,因此可能出现引导问题,相信这也是谣言的出处,所以升级过来的同学要注意了。可以使用grub-install来重新安装一次grub的文件,就如《Upgrade Ubuntu 8.10 to Ubuntu 9.04 and ext3 to ext4 in 10 Minutes》那样。不过grub-install有点要注意,grub-install复制的文件是以/为起始位置的(特别是使用了--root-directory=DIR参数的),如果boot单独分区,同时在livecd里面单独挂载了出来,很可能新复制过去的文件会多了一层boot目录,变成新旧版的引导文件共存以致没法引导grub……(我也感觉我说得一塌糊涂了……总之boot独立分区的同学使用grub-install注意它究竟安装到什么地方去了,看看相应文件的修改时间)。 对于从ext3升级到ext4的系统,还有重要的一点就是fstab,完成上述的操作后,先运行blkid查看分区的新UUID,用编辑器打开/etc/fstab,替换转换了的分区的UUID,当然还有挂载类型改成ext4。

  • 围观一下Linux下歌词新星:lrcShow-X 1.0.0

    April 25, 2009

    lrcShow-X是基于pyQt、dbus等技术的一个歌词显示工具,比起此前出现过audaciois、amarok等的歌词显示脚本或者插件,lrcShow-X可谓一颗新星,首先其目前为止已经集成了一个歌词显示器需要的所有功能(参考千千静听等成熟的应用),编辑歌词、Mp3内嵌歌词等一个不缺,甚至用到被Ubuntu Jaunty发扬光大的OSD来显示。 虽然说目前并未和哪个播放器合为一体(插件形式),但不是难事,lrcShow-X通过dbus接口支持了audacious、amarok、vlc、exaile、quodlibet、qmmp等播放器,已经有人做到和amarok界面内嵌。 lrcShow-X的优秀表现,很大程度上是其内置了主流的歌词服务器,PT实际使用中觉得sogou搜出来的歌词比较出色。 目前使用lrcShow-X的使用方法略显简陋,需要启动播放器后自己在命令行内运行./lrcShow-X.py,但一点也遮蔽不了其强大的光芒。 ps: 在Ubuntu下使用lrcShow-X需要安装的包: sudo apt-get install python-gobject python-qt4 python-ibus 链接:http://www.sanfanling.cn/read.php?267下载:http://www.kde-apps.org/content/show.php?content=103055

  • 初尝Linux下的AVR单片机开发

    April 2, 2009

    此前接触过AVR单片机,发现无论是书店里面的教材,还是网上一大堆的中文资料,无一例外都是说windows下使用WinAVR、ICCAVR之类的,Linux方面的简直只字不提,难道这就是传说中的中国国情?外国情况可很不一样,玩单片机的Geek一般都很哈Linux,做单片机开发的软件一应俱全,当然还是开源的。 昨天从淘宝重新买了条USB的下载线,回来一看是USBasp的设计,附送的光盘当然也是win下的驱动和说明了,忽略。 插上下载器,lsusb,认倒是认出来了,叫做VOIT,那怎么用呢?上网一搜,原来USBasp是德国人的设计http://www.fischl.de/usbasp/,GPL的,其中提到AVRDUDE支持USBasp,当然也有源码下载。不过我用的是Ubuntu,发挥超级牛力的时候到了:sudo apt-get install avrdude,恩,几秒钟搞定,让他们去编译吧! Linux下做单片机开发当然首选GCC,就如这些英文教程说的,下载源码?No,No,APT has Super Cow Powers,继续sudo apt-get install gcc-avr binutils-avr avr-libc 几分钟装完,很好,估计那些下载源码回来编译的同学要去喝两个小时茶才能用了。 万事俱全,先写个单片机的HelloWorld,借用micahcarrick的源码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #define F_CPU 1000000UL /* 1 MHz CPU clock */   #include <util/delay.h> #include <avr/io.h> [...]

  • 让Ubuntu更新内核时自动编译官方版Nvidia驱动模块

    March 31, 2009

    目前Ubuntu 8.10中提供的最新Nvidia显卡驱动依然是180.11,除了不支持一些新的显卡,缺乏一些功能,在有些平台上也不稳定,容易Crash。很多人都用上Nvidia官网版的驱程,可是每当系统更新内核的时候,不得不回到console重新安装一次Nvidia,虽然不是很复杂,但长久如此,也挺麻烦的。 UbuntuForums上面一个Howto介绍了解决方法,下面简述之: 本方法不适合使用EnvyNG安装的驱动。 确保你全手动安装过Nvidia驱动并确定你所用的版本正常工作。 把NV的驱动安装文件复制到/usr/src,同时建立一链接。 sudo mv NVIDIA-Linux-x86-180.37-pkg1.run /usr/src sudo ln -s /usr/src/NVIDIA-Linux-x86-180.37-pkg1.run /usr/src/nvidia-driver 我安装的是180.37版本,注意不同版本的文件名不同。链接的作用是以后如果换一个新版的驱动进来,修改该链接即可,不用修改下面的脚本。 保存下面的代码为文件update-nvidia #!/bin/bash # # Set this to the exact path of the nvidia driver you plan to use # It is recommended to use a symlink here so that this script doesn't # have to be modified when you [...]

  • HOWTO: Compile jpcap 0.7 for amd64

    March 18, 2009

    As was introduced in it's project home, Jpcap is a Java library for capturing and sending network packets.  However, this project hadn't been updated for quite a long time, and NO any 64bit platform version was provided. In the Google Discussion Group, "Tri" tried to compile jpcap in Ubuntu 8.04 64bit, and failed, giving such [...]

  • 推荐《Linux 101 Hacks》

    February 23, 2009

    《Linux 101 Hacks》是一本关于 Linux 使用技巧的免费电子书籍。本书总计 140 页,包含 12 章,讲解了 101 个 hack,涉及的内容包括 Linux 命令精要、日期处理、定制命令提示符、系统管理、Bash 脚本、Apachectl 及 Httpd 例解、系统监视与性能等等,总之很值得一看。 其中最为实用的,大概 4(基本命令)、7(归档打包)、9(系统配置)、10(Apache服务配置)和12(系统控制)几章。虽说都是一些命令的使用,但是要比什么xx命令手册要好。手册即使再详细,也不可能告诉你“把60天以内没改动过的文件归档”的命令。101 Hacks很多这些实用的命令配搭技巧,尤其适合像我这样的菜鸟。 比如说,Hack 5介绍的cd -命令,之前我一直想找怎么切换上一个目录(在弄配置或者改源文件的时候很有用),搜索后知道pushd、popd这些,感觉不实用(实际使用时很难想到),原来cd就带有了这个功能。 Shell实在太强大了,估计没哪本书能够写完,也没哪个人能够学完,根据我的经验,即使把Man手册背下来都没用的,马上会忘记。但是在需要用到的时候,比如find,不记得用法,看看help,靠,几十页,这时把Hack抄出来看就很好,简单明了,而且容易记住。 虽然全书是英文,但是应该属于最易读的那种,打算去打印点把这本书打印出来,反正学校打印资料便宜。 此书免费发行,作者为 Ramesh Natarajan,可从其个人 Blog 上下载:Linux 101 Hacks Tips:作者在下载时想让你订阅他的RSS才拿到下载地址,点击RSS图标进去拉到最后就看到了,好像每次都不同,lovelinux,linux-is-the-best都有……tricks...

  • 周末信息回顾

    February 16, 2009

    周末几天虽然外出游玩,不过还是抽空用Opera mini盯着Google Reader里面的刷新,貌似这个周末有不少事情发生。 首先比较难过的是,同在大学城,旁边的广东工业大学,14、15号两天分别有两人跳楼:广州大三男生情人节从宿舍楼跳下殒命(图)、广东工业大学两天内两学生跳楼(组图)。悲剧。 Linux方面是Debian 5正式版终于发布了,跳票n久终于众望所归……据说Debian这名字就起源于一段爱情,这次又挑在情人节发布,真有它一套。 其次是CNBETA上3G时代-TD辐射最低一文。之前PT就3G网络带宽是共享的?发表过一点意见,但那只局限于对“CDMA”的认识,读到《辐射》文后,赶紧往维基里冲了下电,原来TD-SCDMA是一种很杂的技术,相对传统的CDMA,TD使用了时分复用,这么对TD来说,信道就不完全独享了……然而,说《辐射》文就是以这一点为突破,说时分复用技术下,TD不是时刻都在发送,得出辐射最低的结论。这点我感到可笑,当年联通宣传CDMA的时候就是以绿色环保低辐射作为宣传口号的,联通宣传的原理就基于CDMA信号的连续性,类似白噪音,对电子设备干扰小(然而对生物的影响学界并无定论),而使用时分复用后,这有点就不存在了,也就是说TD手机一样会让旁边的音响发出讨厌的支支声。究竟怎么算辐射小?有点见仁见智了。 最后推荐一下李彦宏为什么这样帅?一文,刊登在《南方周末》的,可读性颇强。

Page optimized by WP Minify WordPress Plugin

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org