在linux下使用mplayer播放影音(links for 2007-09-22)

linux下鼠标右键单击框架页面内的链接有时会使内容左右反转

大概1~2周前,我在Ubuntu 6.06 LTS firefox1.5下查看cnzz.com的统计页面时发现一个有趣的现象。

例如,我在其中查看“搜索引擎”页面时,用右键单击其中的“来源页面”的链接时,有时会出现内容左右反转的怪事。用一个ps机械鼠标和一个usb光电鼠标试了都是这样。效果截图如下:

正常页面:
20070817_cnzz_positive.png

反转的页面:
20070817_cnzz_reverse.png

我查看了反转时的反转部分的源码,又是正常的。

cnzz.com的整个框架页面源码如下:

<HTML><HEAD><TITLE>JAVA学习日记 - 查看统计 - 站长统计 CNZZ.com</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.3790.2491" name=GENERATOR>
</HEAD><FRAMESET border=0 frameSpacing=0 rows=125,* frameBorder=NO cols=*>
<FRAME name=topFrame src="top.php" noResize scrolling=no>
<FRAMESET border=0 frameSpacing=0 frameBorder=NO cols=150,*>
<FRAME id=f1 name=f1 marginWidth=5 marginHeight=20 src="menu.php?web_id=258488" noResize>
<FRAME id=f2 name=window_main src="view.php?web_id=258488&method=">
</FRAMESET>
</FRAMESET>
</HTML>

框架内的页面源码也看不出什么奇怪的,真是奇怪。

tom.com邮箱无法用linux下的thunderbird邮件客户端发送

有大概2~3周了吧,我用Ubuntu 6.06 LTS 下的thunderbird邮件客户端无法发送tom.com的邮件了。

ubuntu自带的thunderbird 1.5.0.12 中文版无法发送,安装一个最新版的thunderbird 2.0.0.6 中文版也无法发送。报告错误信息如下:this mail is blocked by kbas system ...

见图:
linux下tom邮箱不能使用thunderbird邮件客户端发送邮件

我在另外的机器上安装的redhat linux 9.0控制台下的mutt邮件客户端却可以正常使用。

另外,前者是铁通网络,后者是电信网络。

从网上查得,kbas是一个反垃圾邮件的软件系统,tom.com的邮件系统把我用thunderbird发送的正常的邮件当作垃圾邮件了 🙁 不知是thunderbird的原因?铁通网络的原因?linux的原因?还是tom.com的原因?

wordpress+盘古,不错的blog系统

使用wordpress+盘古的blog系统可能有半月了吧。总的来说,感觉二者的组合是好用的blog系统,不错的blog系统。

wordpress的blog程序的强大我最有感触的几点是:
1)、模板、插件应有尽有;
2)、功能完善,定制容易,如果自己不满意某个地方,您尽可以在它的代码随意修改;
3)、权限设置、私人日记、受密码保护日记的功能很贴合我的需要;

盘古的虚拟空间我最有感触的几点是:
1)、功能完备,使用方便,所有的网站管理功能(域名绑定、数据库建立和管理、文件管理、备份、访问统计等等)基本上都可以在他们的cPanel控制面板动动鼠标就搞定;

2)、售后服务比较迅速,我提在他们的在线问答上的问题能及时响应;

3)、提供的.htaccess支持使我的新老URL都能顺利访问,并且有利于搜索引擎优化

我还感到比较满意的一点是:二者在我的linux控制台下基本上都能方便的使用,我原来还想,wordpress的功能这么完备,在文字模式的linux控制台下不知能不能写日记啊?可现在,我目前发现除了文件的上传功能我在linux控制台下的w3m浏览器不支持IFRAME而不能使用外,其它所有功能都工作得很棒。呵呵,这篇日记就是我在linux控制台下写的。而盘古的cPanel本来就是工作在他们的linux下的,在我的linux控制台下使用起来当然是流畅极了:)。一句广告语:wordpress + 盘古,powered by linux,it's OK!

当然,世间之事怎么能完美?!在半月内,我也碰到过两三次网站短时间不能访问的情况,但这是正常之极,我也不以为怪。况且,盘古的系统也很便宜,100块一年的,像我这样的博客足足有余了。当然,如果您的博客红得像“老徐”的博客,那就另当别论了:)

一句话:wordpress+盘古,不错的blog系统!

呵呵,微软也开始打windows广告了,百度广告;我和linux

我上了几年网了,原来还没有发现过微软在网上打过广告。

今天早上,使用 全库网中的IP地址查询功能时,发现上面有微软打的几个广告,是百度广告。
Continue reading "呵呵,微软也开始打windows广告了,百度广告;我和linux"

Novell Ubuntu Linux命令大全使用方法

转自:Novell Ubuntu Linux命令大全使用方法: http://www.lslnet.com/linux/docs/linux-7400.htm

*********************************************************************************************************

Novell Ubuntu Linux命令大全使用方法

蓝森林 http://www.lslnet.com 2007年4月28日 20:01

  1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件

文件管理 # ls ls -l或ll 列出当前目录下文件的详细信息

文件管理 # pwd pwd 查看当前所在目录的绝对路经

文件管理 # cd cd .. 回当前目录的上一级目录

文件管理 # cd cd - 回上一次所在的目录

文件管理 # cd cd ~ 或 cd 回当前用户的宿主目录

文件管理 # cd cd ~用户名 回指定用户的宿主目录

2 文件管理 # mkdir mkdir 目录名 创建一个目录

文件管理 # mkdir mkdir –p 递归式去创建一些嵌套目录

文件管理 # rmdir Rmdir 空目录名 删除一个空目录

3 文件管理 # rm rm 文件名 文件名 删除一个文件或多个文件

文件管理 # rm rm -rf 非空目录名 递归删除一个非空目录下的一切,不让提式-f

4 文件管理 # cat cat文件名 一屏查看文件内容

5 文件管理 # more more文件名 分页查看文件内容

6 文件管理 # less less 文件名 可控分页查看文件内容

7 文件管理 # grep grep字符 文件名 根据字符匹配来查看文件部分内容

8 文件管理 # mv mv 路经/文件 /经/文件 移动相对路经下的文件到绝对路经下

文件管理 # mv mv 文件名 新名称 在当前目录下改名

9 文件管理 # cp cp /路经/文件 ./ 移动绝对路经下的文件到当前目录下

10 文件管理 # find find 路经 -name “字符串” 查找路经所在范围内满足字符串匹配的文件和目录

11 文件管理 # ln ln 源文件 链接名 创建当前目录源文件的硬链接

ln /home/test /usr/test1 在/usr下建立/home/test的硬链接

12 文件管理 # ln Ln -s a b 创建当前目录下a的符号链接b

13 文件管理 # touch touch file1 file2 创建两个空文件

14 磁盘管理 # df df 用于报告文件系统的总容量,使用量,剩余容量。

15 磁盘管理 # du du -b /home 查看目前/HOME目录的容量(k)及子目录的容量(k)。

16 磁盘管理 # fdisk fdisk -l 查看系统分区信息

17 磁盘管理 # fdisk fdisk /dev/sdb 为一块新的SCSI硬盘进行分区

18 磁盘管理 # mkfs.ext3 Mkfs.ext3 /dev/sdb1

为第一块SCSI硬盘的第一主分区格式化成

ext3的文件系统

mkfs.ext2 Mkfs.ext2/dev/sdb2 格式化成ext2文件系统

19 磁盘管理 # mount mount -t 文件系统类型 设备路经 访问路经 磁盘管理 # 文件系统类型

ISO9660 光驱文件系统

vfat Fat文件系统(windows)

挂载光驱 # mount –t iso9660 /dev/cdrom /mnt/cdrom

挂载FAT # mount –t vfat /dev/hda5 /mnt/cdrom 挂第一个ide的第五个逻辑分区

17 磁盘管理 # Umount /mnt/cdrom 卸载/mnt/cdrom为空

18 文件权限 # chmod chmod u+s file 为file的属主加上特殊权限

chmod g+r file 为file的属组加上读权限

chmod o+w file 为file的其它用户加上写权限

chmod a-x file 为file的所有用户减去执行权限

chmod 765 file 为file的属主设为完全权限,属组设成读写权,其它用户具有读和执心权限

19 文件权限 # chown chown root /home 把/home的属主改成root用户

20 文件权限 # chgrp chgrp root /home 把/home的属组改成root组

21 打印管理 # redhat-config-printer-tui 进入安装打印机界面

22 打印管理 # lp lp –d hptr file 打印file到hptr的打印机上

23 打印管理 # lpq Lpq –P 打印机名 查看打印机的状态

24 打印管理 # lprm Lprm –P 打印机名 a 删除打印机内的打印作业

25 打印管理 # disable Disable –r “changing paper” HPtr 禁用打印机并提示原因

26 打印管理 # enable Enable HPtr 重新启用被禁用的

27 用户管理 # useradd Useradd 创建一个新的用户

28 用户管理 # groupadd Groupadd 组名 创建一个新的组

29 用户管理 # passwd Passwd 用户名 为用户创建密码

30 用户管理 # Passwd -d Passwd -d用户名 删除用户密码也能登陆

31 用户管理 # Passwd -l Passwd -l用户名 锁定账号密码

32 用户管理 # Passwd -u Passwd -u用户名 解锁账号密码

33 用户管理 # Passwd -S Passwd -S用户名 查询账号密码

34 用户管理 # Usermod -l Usermod -l 新用户名 老用户名 为用户改名

35 用户管理 # Usermod -L Usermod -L 要锁定用户名 锁定用户登陆

36 用户管理 # Usermod -U Usermod –U解锁用户名 解锁用户登陆

37 用户管理 # Usermod -u Usermod –u 501用户名 改变用户UID

38 用户管理 # Userdel Userdel–r 用户名 删除用户一切

39 用户管理 # Groupmod -n Groupmod –n新用户名 老用户名 为组改名

40 用户管理 # Groupmod -g Groupmod –g 501 组名 改变组GID

41 用户管理 # groupdel Groupdel组名 先应删它的用户 删除组

42 用户管理 # gpasswd -a gpasswd -a 用户名 组名 增加用户到组

43 用户管理 # Id id 用户名 查用户信息

44 软件管理 # rpm -qa rpm –qa | less 查询已安装RPM

45 软件管理 # rpm –qa | grep ftp 查询指定RPM

46 软件管理 # rpm -q rpm -q 已安装的RPM包 查是否安装

47 软件管理 # rpm -q telnet-server 查看telnet服务器包

48 软件管理 # rpm -qi rpm –qi 软件包名称 查看软件的描述信息

49 软件管理 # rpm -ql rpm –ql软件包名称 查询软件包的文件列表

50 软件管理 # rpm -qf rpm –qf软件包名称 查询某个文件所属的软件包

51 软件管理 # rpm -qp rpm –qp软件包全名 查询未安装的软件包信息

52 软件管理 # rpm -e rpm –e 软件包名称 删除具体的软件包

53 软件管理 # rpm -U rpm –Uvh软件包全名 升级软件包并显示过程

54 软件管理 # rpm -ivh rpm –ivh 软件包全名 安装软件包并显示过程

55 软件管理 # rpm -V rpm –V软件包名称 验证软件包的大小,类型等

56 软件管理 # tar -c 创建包 –x 释放包 -v 显示命令过程 –z 代表压缩包

57 软件管理 # tar -cf tar –cvf benet.tar /home/benet 把/home/benet目录打包

58 软件管理 # tar -czf tar –zcvf benet.tar.gz /mnt 把目录打包并压缩

59 软件管理 # tar –tf tar –tf benet.tar 看非压缩包的文件列表

60 软件管理 # tar –tzf tar –tf benet.tar.gz 看压缩包的文件列表

61 软件管理 # tar –xf tar –xf benet.tar 非压缩包的文件恢复

62 软件管理 # tar –zxvf tar –zxvf benet.tar.gz 压缩包的文件解压恢复

63 软件管理 # tar -jxvf tar –jxvf benet.tar.bz2

64 软件管理 # diff diff file1 file2 > 补丁名.patch 为新旧文件生成补丁文件

65 软件管理 # diff diff file1 file2 比较两个文件的区别

66 软件管理 # Patch Patch file补丁名.patch 打补丁

67 软件管理 # ./configure --prefix=/usr/local/ 编译前配置

68 软件管理 # make 编译

69 软件管理 # make install 安装编译好的源码包

70 启动管理 # reboot Init 6 重启LINUX系统

71 启动管理 # Halt Init 0 Shutdown –h now 关闭LINUX系统

72 启动管理 # runlevel 显示系统运行级

73 启动管理 # Init [0123456] 改变系统运行级,7种

74 启动管理 # Chkconfig –-list [服务名称] 查看服务的状态

75 启动管理 # Chkconfig –-level <运行级> <服务名> on|off|set 设置服务的启动状态

76 启动管理 # Chkconfig <服务名> on|off|set 设置非独立服务启状态

77 进程管理 # Top动态 Ps-aux静态 进程树pstree 查看系统进程

78 进程管理 # 程序名 & 后台运行程序

79 进程管理 # fg 把后台运行的进程调回前台

80 进程管理 # bg 把前台运行进程调到后台

81 进程管理 # renice Renice +1 180 把180号进程的优先级加1

82 进程管理 # kill Kill PID 终止某个PID进程

83 进程管理 # at at 5pm + 3 days /bin/ls 指定三天后下午5:00执行/bin/ls

84 进程管理 # crontab Crontab -e 用VI的形式来编辑自动周期性任务

85 进程管理 # crontab Crontab -l 查看自动周期性任务

86 进程管理 # crontab Crontab -r 删除自动周期性任务

87 进程管理 # crond Service crond 马上启动自动周期性服务 Service crond <启动|停止|重启|状态>

实现磁盘配额 (注安装LINUX时建立/home分区)

目标:对用户zhao在/home目录上实现soft limit为5k,hard limit 为10k的磁盘配额

实现步骤:

1. 修改包含/home的行, #vi /etc/fstab, 改为:defaults,usrquota。也就是增加usrquota项。然后保存退出。

2、卸载/home目录 #umount /home

3. 挂接/home目录 #mount /home

4、增加用户zhao #useradd zhao

5、修改密码 #passwd zhao

6、生成关于/home目录的quota信息 # quotacheck -cmug /home

#quotacheck -vu /home

7、查看所有用户的信息 #repquota -au

8、设置配额 #edquota -u zhao

将soft 和hard 分别改为5和10

9、保存并退出 #wq!

10、修改时间 #edquota -t

11、 #wq!

12.开启/home上的磁盘配额功能 #quotaon /home

13.查询配额 #quota -u zhao

14.验证配额 #su - zhao

$touch myfile

Ubuntu一些很必要的命令

安装

查看软件xxx安装内容

dpkg -L xxx

查找软件

apt-cache search 正则表达式

查找文件属于哪个包

dpkg -S filename

apt-file search filename

查询软件xxx依赖哪些包

apt-cache depends xxx

查询软件xxx被哪些包依赖

apt-cache rdepends xxx

增加一个光盘源

sudo apt-cdrom add

系统升级

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

清除所以删除包的残余配置文件

dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P -

编译时缺少h文件的自动处理

sudo auto-apt run ./configure

查看安装软件时下载包的临时存放目录

ls /var/cache/apt/archives

备份当前系统安装的所有包的列表

dpkg --get-selections | grep -v deinstall > ~/somefile

从上面备份的安装包的列表文件恢复所有包

dpkg --set-selections < ~/somefile

sudo dselect

清理旧版本的软件缓存

sudo apt-get autoclean

清理所有软件缓存

sudo apt-get clean

删除系统不再使用的孤立软件

sudo apt-get autoremove

系统

查看内核

uname -a

查看Ubuntu版本

cat /etc/issue

查看内核加载的模块

lsmod

查看PCI设备

lspci

查看USB设备

lsusb

查看网卡状态

sudo ethtool eth0

查看CPU信息

cat /proc/cpuinfo

显示当前硬件信息

lshw

硬盘

查看硬盘的分区

sudo fdisk -l

查看IDE硬盘信息

sudo hdparm -i /dev/hda

查看STAT硬盘信息

sudo hdparm -I /dev/sda

sudo apt-get install blktool

sudo blktool /dev/sda id

查看硬盘剩余空间

df -h

df -H

查看目录占用空间

du -hs 目录名

优盘没法卸载

sync

fuser -km /media/usbdisk

内存

查看当前的内存使用情况

free -m

进程

查看当前有哪些进程

ps -A

中止一个进程

kill 进程号(就是ps -A中的第一列的数字)

或者 killall 进程名

强制中止一个进程(在上面进程中止不成功的时候使用)

kill -9 进程号

或者 killall -9 进程名

图形方式中止一个程序

xkill 出现骷髅标志的鼠标,点击需要中止的程序即可

查看当前进程的实时状况

top

查看进程打开的文件

lsof -p

ADSL

配置 ADSL

sudo pppoeconf

ADSL手工拨号

sudo pon dsl-provider

激活 ADSL

sudo /etc/ppp/pppoe_on_boot

断开 ADSL

sudo poff

查看拨号日志

sudo plog

网络

根据IP查网卡地址

arping IP地址

查看当前IP地址

ifconfig eth0 |awk '/inet addr/ {split($2,x,":");print x[2]}'

查看当前外网的IP地址

w3m -no-cookie -dump www.ip138.com|grep -o '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}'

w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}'

查看当前监听80端口的程序

lsof -i :80

查看当前网卡的物理地址

arp -a | awk '{print $4}'

ifconfig eth0 | head -1 | awk '{print $5}'

立即让网络支持nat

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

sudo iptables -t nat -I POSTROUTING -j MASQUERADE

查看路由信息

netstat -rn

sudo route -n

手工增加删除一条路由

sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

修改网卡MAC地址的方法

sudo ifconfig eth0 down #关闭网卡

sudo ifconfig eth0 hw ether 00:AA:BB:CCD:EE #然后改地址

sudo ifconfig eth0 up #然后启动网卡

统计当前IP连接的个数

netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n

netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n

统计当前20000个IP包中大于100个IP包的IP地址

tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '

屏蔽IPV6

echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6

服务

添加一个服务

sudo update-rc.d 服务名 defaults 99

删除一个服务

sudo update-rc.d 服务名 remove

临时重启一个服务

/etc/init.d/服务名 restart

临时关闭一个服务

/etc/init.d/服务名 stop

临时启动一个服务

/etc/init.d/服务名 start

设置

配置默认Java使用哪个

sudo update-alternatives --config java

修改用户资料

sudo chfn userid

给apt设置代理

export http_proxy=http://xx.xx.xx.xx:xxx

修改系统登录信息

sudo vim /etc/motd

中文

转换文件名由GBK为UTF8

sudo apt-get install convmv

convmv -r -f cp936 -t utf8 --notest --nosmart *

转换文件内容由GBK为UTF8

iconv -f gbk -t utf8 $i > newfile

转换 mp3 标签编码

sudo apt-get install python-mutagen

find . -iname “*.mp3” -execdir mid3iconv -e GBK {} /;

控制台下显示中文

sudo apt-get install zhcon

使用时,输入zhcon即可

文件

快速查找某个文件

whereis filenamefind 目录 -name 文件名

查看文件类型

file filename

显示xxx文件倒数6行的内容

tail -n 6 xxx

让tail不停地读地最新的内容

tail -n 10 -f /var/log/apache2/access.log

查看文件中间的第五行(含)到第10行(含)的内容

sed -n '5,10p' /var/log/apache2/access.log

查找包含xxx字符串的文件

grep -l -r xxx .

查找关于xxx的命令

apropos xxx

man -k xxx

通过ssh传输文件

scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上

scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地

查看某个文件被哪些应用程序读写

lsof 文件名

把所有文件的后辍由rm改为rmvb

rename 's/.rm$/.rmvb/' *

把所有文件名中的大写改为小写

rename 'tr/A-Z/a-z/' *

删除特殊文件名的文件,如文件名:--help.txt

rm -- --help.txt 或者 rm ./--help.txt

查看当前目录的子目录

ls -d */. 或 echo */.

将当前目录下最近30天访问过的文件移动到上级back目录

find . -type f -atime -30 -exec mv {} ../back /;

将当前目录下最近2小时到8小时之内的文件显示出来

find . -mmin +120 -mmin -480 -exec more {} /;

删除修改时间在30天之前的所有文件

find . -type f -mtime +30 -mtime -3600 -exec rm {} /;

查找guest用户的以avi或者rm结尾的文件并删除掉

find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} /;

查找的不以java和xml结尾,并7天没有使用的文件删除掉

find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} /;

统计当前文件个数

ls /usr/bin|wc -w

显示当前目录下2006-01-01的文件名

ls -l |grep 2006-01-01 |awk '{print $8}'

压缩

解压缩 xxx.tar.gz

tar -zxvf xxx.tar.gz

解压缩 xxx.tar.bz2

tar -jxvf xxx.tar.bz2

压缩aaa bbb目录为xxx.tar.gz

tar -zcvf xxx.tar.gz aaa bbb

压缩aaa bbb目录为xxx.tar.bz2

tar -jcvf xxx.tar.bz2 aaa bbb

Nautilus

显示隐藏文件

Ctrl+h

显示地址栏

Ctrl+l

特殊 URI 地址

* computer:/// - 全部挂载的设备和网络

* network:/// - 浏览可用的网络

* burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录

* smb:/// - 可用的 windows/samba 网络资源

* x-nautilus-desktop:/// - 桌面项目和图标

* file:/// - 本地文件

* trash:/// - 本地回收站目录

* ftp:// - FTP 文件夹

* ssh:// - SSH 文件夹

* fonts:/// - 字体文件夹,可将字体文件拖到此处以完成安装

* themes:/// - 系统主题文件夹

查看已安装字体

在nautilus的地址栏里输入”fonts:///“,就可以查看本机所有的fonts

程序

详细显示程序的运行信息

strace -f -F -o outfile

日期和时间

设置日期

#date -s mm/dd/yy

设置时间

#date -s HH:MM

将时间写入CMOS

hwclock --systohc

读取CMOS时间

hwclock --hctosys

控制台

不同控制台间切换

Ctrl + ALT + ←

Ctrl + ALT + →

指定控制台切换

Ctrl + ALT + Fn(n:1~7)

控制台下滚屏

SHIFT + pageUp/pageDown

控制台抓图

setterm -dump n(n:1~7)

数据库

mysql的数据库存放在地方

/var/lib/mysql

从mysql中导出和导入数据

mysqldump 数据库名 > 文件名 #导出数据库

mysqladmin create 数据库名 #建立数据库

mysql 数据库名 < 文件名 #导入数据库

忘了mysql的root口令怎么办

sudo /etc/init.d/mysql stop

sudo mysqld_safe --skip-grant-tables &

sudo mysqladmin -u user password 'newpassword''

sudo mysqladmin flush-privileges

修改mysql的root口令

sudo mysqladmin -uroot -p password '你的新密码'

其它

下载网站文档

wget -r -p -np -k http://www.21cn.com

· -r:在本机建立服务器端目录结构;

· -p: 下载显示HTML文件的所有图片;

· -np:只下载目标站点指定目录及其子目录的内容;

· -k: 转换非相对链接为相对链接。

如何删除Totem电影播放机的播放历史记录

rm ~/.recently-used

如何更换gnome程序的快捷键

点击菜单,鼠标停留在某条菜单上,键盘输入任意你所需要的键,可以是组合键,会立即生效;

如果要清除该快捷键,请使用backspace.

*******************************************************************************************

                                      转帖完毕

安装Ubuntu

本来,对于linux操作系统,我是不大追求新的,一方面是自己的机器太老了,一方面是没有需要。所以,我家里的redhat linux9.0可能用了都有1年了也没有去动过。但是,这几天,我把redhat linux9.0去掉了,用硬盘iso文件(ubuntu-6.06-alternate-i386.iso)安装ubuntu的方法安装了Ubuntu6.06桌面版。

我为什么去掉redhat linux9.0呢?套用一位linuxsir.org上的朋友的话是“现在谁还用这”。

当我编译安装一个新的软件时,总是告诉我这样那样的库过时,要升级;还有前一段时间在linux下用得好好的MilyQQ和LumaQQ不知是安装了(或升级了)什么东西的缘故,突然一齐罢工都不能用了,我又畏惧去找原因,生怕又有一大堆东西要掌握,而我现在的重点不在于此;然后就是我安装了firefox的flash 9.0插件后,firefox只要一浏览有flash的网页往往就会崩溃。于是,我终于要下决心离开redhat linux9.0了。本来想找它的后续桌面版Fedora,但是Fedora的光盘有六张(我不知道到底需要几张光盘才能安装它?也不知道Fedora能不能进行硬盘安装?),我自己原来下过Ubuntu的硬盘iso安装文件,也在单位的P4 1.7G + 256M的机器上用过几天Ubuntu(因为我嫌它运行慢了和有点不适应它的“大包大揽”的自动化安装方式和它的默认UTF-8的locale编码,后来就没有用了),只有约700M大小,所以我就用Ubuntu了。

下面分享一下我用硬盘iso文件安装Ubuntu的经验。具体步骤在上面提到的那篇日记中有:用硬盘iso文件(ubuntu-6.06-alternate-i386.iso)安装ubuntu的方法

其中要注意的是:

1)、要选英文安装语言,以后安好了在安装中文包;我选中文安装语言时,出现了安装不能继续前进的问题,也不知道是不是语言问题引起的,反正是第二次选择英文安装语言后没有出现这个问题了;

2)、原来的/home(用户数据)和/usr/local(用户程序)分区,在安装程序分区时直接挂载到相应的挂载点,并选择“keep data existed”(大概是这样,意思是保持原来的数据不变)就行了;

3)、如果安装grub不成功时,重复安装一次“基本系统”(英文大概是“base system”吧)就成了(我试过两次都是这样);

4)、grub命令中的root (hd1,0)是要确定vmlinuz和initrd.gz(或initrd.img之类)文件所在的分区,一般来说是boot分区,如果没有划分boot分区(听说这样不科学,不过我就是这样的:))那就是根分区(/)(例如:在根分区下作了/boot目录下的vmlinuz和initrd.img文件的链接为/vmlinuz和/initrd.img);我的认识就是这样的,如果哪位大侠发现有什么错漏之处还望指点一二,谢谢。

5)、下面这个问题害得我刚装好Ubuntu一天又在今天中午重新安装Ubuntu了。

我下载了一个zhcon0.2.6的deb包安装(Ubuntu仓库里的zhcon0.2.3过时了,而且在我的系统上不能工作),报告说libc6版本低了,我又下载一个最新的libc6的deb包准备安装,却又报告缺哪个包。。。,又缺哪个包。。。

然后我准备用Ubuntu的新得立包管理系统更新libc6,报告3 broken,不能更新,而且快捷菜单里只有卸载的选项,一选择卸载又有许多与libc6有关的东西要更改。。。弄来弄去,就是不能继续更新libc6了。我知道如果我花时间去找解决方法也找得快。但是,我感觉不如重新装来得快:)

我感觉这是我不能适应Ubuntu安装方式的原因,牵涉面太宽了,而且这种自动化的方式使我手动控制变得有点不太方便。也许是没有深入Ubuntu的原因吧?

不过,从这个事件我得到一个教训,在Ubuntu下,用新得立自动包管理方式不能安装的东西,不要尝试用deb包去安装,如果deb包的东西打破了新得立系统的统一管理方式可能会有麻烦(像我碰到的那样)。这时,我觉得,最好的方式还是从源码编译手动安装的好(我还没有试着在ubuntu下编译安装zhcon0.2.6,但在redhat linux9.0下成功的)。

6)、我感觉AMD Duron 700 + 384M的机器比原来单位上的P4 1.7G + 256M的机器跑Ubuntu桌面版还要快点,可能是前者的内存多点吧?

7)、每个系统都有它自己的脾气,如果我们摸准了它的脾气,它就会乖乖听话,给我们卖力工作的:)

Windows XP操作系统现在在搞正版认证,如果你在自动更新中下载了正版认证的更新,如果你是盗版的Windows XP,那么,你的系统就会被盖上一个戳,标记为盗版,告诉你是盗版软件的受害者。还有,如果你到Microsoft的网站去下载新版的IE7,就会要求你先进行正版认证。我想,我坚持把linux作为自己的工作系统是应该不会错的,不为别的,清静,省心,省钱,还是正版:)

批量更改QQ聊天场景mp3音乐文件名为其所在目录名

批量更改QQ聊天场景mp3音乐文件名为其所在目录名

QQ的聊天场景中(在目录:IMScene/Scene中)的mp3音乐文件名是像这样的E00001.mp3的符号命名(老婆原来刻苦聊天时在聊天场景中攒下了200首mp3,IMScene目录有700多M),我把这些文件在linux下mp3blaster下播放时看不到音乐的中文文件名。碰巧聊天场景中的每一个目录的名字就代表了其下的音乐的名字,于是,我花了一个下午写了下面这个bash脚本来把mp3音乐的名字改成跟它的目录名一样。一方面是有了中文名字的音乐文件,一方面学习一下linux的bash脚本写作。我想,在windows下用批处理脚本也应该能完成这个工作。但是我学电脑的时候已经过了microsoft的dos时代,就没有学过批处理。倒是linux下的批处理好像还在类unix世界广泛使用。

当然,我很少用和写bash脚本,如果哪位同志看到其中的错误、不当、和可以改进之处请不吝赐教。谢谢。

使用的关键知识点:

1)、for循环遍历目录;

2)、文件相关判断;

3)、字符串比较与数字比较的区别;

4)、对文件名带中文和文件名中带有空格的文件进行操作时,必须对文件名加上双引号;

一些小技巧:

1)、控制脚本只在这个目录执行一次;

2)、控制一个目录下多个类似文件的改名;


#!/bin/bash

# rename.sh

# Rename the file's name as its directory name, like this:

# Rename "/home/m/Scene/求佛/E00001.mp3" to

# "/home/m/Scene/求佛/求佛.mp3"

NOARGS=65

CONFIRM_FAIL=66

RUNONCE_FLAG=67

# Input the first level directory.

# The dirctories structure is like this:

# first level directory

#    second level directory 1

#       files in second level directory 1

#    second level directory 2

#       files in second level directory 2

#    second level directory 3

#       files in second level directory 3

# ...

if [ $# -lt 3 ]

then

   echo "Usage: $0 dir redir suffix ..."

   exit $NOARGS

fi

dir=$1

redir=$2

suffix=$3

echo "your first argument is $dir"

echo "your second argument is $redir"

echo "your third argument is $suffix"

if [ $dir != $redir ]

then

   echo "Usage: $dir must equal to $redir for confirming..."

   exit $CONFIRM_FAIL

fi

if [ -e $dir/runonce.flag ]

then

   echo "Usage: This program can only run once!"

   exit $RUNONCE_FLAG

fi

directorys=$dir/*

for directory in $directorys; do # Find all second level directories

     if [ -d "$directory" ] # Note! It must add double quote before

                            # and after $directory, otherwise, it will

                            # report error if there is blank or chinese

                            # in $directory.

     then

        echo "$directory is a directory"

        count=0

        for file in "$directory"/*$suffix; do # Find the mp3 file in second

                                              # level directory

           if [ -f "$file" ]

           then

              echo "$file is a file"

              dirname=${directory##*/} # get the second level directory name

                                       # without its prefix path like /home/m/

              echo "$file's directory is $dirname"

              if [ $count -gt 0 ]

              then

                 echo "rename $file to $directory/$dirname$count$suffix"

                 echo " rename #$count file begin..."

                 mv "$file" "$directory/$dirname$count$suffix"

              else

                 echo "rename $file to $directory/$dirname$suffix"

                 mv "$file" "$directory/$dirname$suffix"

              fi

              let "count = count + 1"

              echo "rename $count file ok" 

           fi

        done

     else

        echo "$directory is not a directory"

        echo "Usage: $0 dir redir ..."

     fi

done

# Write runonce flag file into the first level directory

echo "Run rename.sh once at `date`" > $dir/runonce.flag

exit 0

在linux系统中备份远程mysql数据库的脚本文件2则

1、备份成rar的分卷压缩格式,生成两个(若有分卷的rar压缩文件会不止两个)备份文件,如:

db20070325092032.sql,db20070325092032.sql.rar

#!/bin/bash

# Backup database with current date as a part of file name.

# Date: 2007-03-24

echo "Today is `date`."

echo " Now begin backup database..."

prefix=db$(date +%Y%m%d%H%M%S) # Needs a leading '+' to invoke formatting.

suffix=sql

filename=$prefix.$suffix

echo "The file name is $filename."

#Begin backup database.

hostname=yourhostname

username=yourusername

dbname=yourdbname

dbdir=~/yourdbbackupdir

mysqldump -h$hostname -u$username -p $dbname > $dbdir/$filename

#Begin compress backup file with .rar format.

compressfile=$filename.rar

echo "Begin compress $filename into $compressfile..."

cd $dbdir

rar a -v1024k $compressfile $filename

echo "Backup database success."

exit 0

**********************************************************************

2、备份成*.tar.bz2的压缩格式,生成两个备份文件,如:

db20070325092032.sql,db20070325092032.sql.tar.bz2

#!/bin/bash

# Backup database with current date as a part of file name.

# Date: 2007-03-24

echo "Today is `date`."

echo " Now begin backup database..."

prefix=db$(date +%Y%m%d%H%M%S) # Needs a leading '+' to invoke formatting.

suffix=sql

filename=$prefix.$suffix

echo "The file name is $filename."

#Begin backup database.

hostname=yourhostname

username=yourusername

dbname=yourdbname

dbdir=~/yourdbbackupdir

mysqldump -h$hostname -u$username -p $dbname > $dbdir/$filename

#Begin compress backup file with .tar.bz2 format.

compressfile=$filename.tar.bz2

echo "Begin compress $filename into $compressfile..."

cd $dbdir

tar cfj $compressfile $filename

echo "Backup database success."

exit 0

删除linux的/tmp目录引起的不能正常登录系统的故障

昨天无意查看到/tmp目录竟占了400M的空间,看到里面全是一个乱七八糟的东西。联想到windows的temp目录的作用。就把/tmp目录删除了,想系统启动时可能就重新建了这个目录。结果系统只能启动到控制台模式;

又用mkdir /tmp建了这个目录,结果系统在控制台模式登录和X windows模式登录状态间反复切换,不能进入系统;

后来在网上查了一下,改变了/tmp目录的权限为:chmod a+rwx,o+t /tmp,即为:

drwxrwxrwt    4 root     root         4096  3月 16 10:18 tmp

系统恢复正常。

具体分析原因如下:

正常情况下,/tmp目录的权限是:

drwxrwxrwt    4 root     root         4096  3月 16 10:18 tmp

它表示所有的用户都可以在其中建立文件(或目录),即任何人都对tmp目录拥有“写权限”,但是除非tmp目录的所有者和文件的所有者,其他人不能在/tmp目录下改写(或删除、重命名)别人的文件(或目录)。

如果你删除了系统的tmp目录,又用mkdir /tmp建立这个目录,那么根据umask的规定,默认建议的目录的权限是:

drwxr-xr-x    3 root     root         4096  3月 16 11:31 tmp

那么其他人就不能在/tmp目录下建立文件了;这时,系统将出现故障(如:不能启动或不能进入x windows);

如果你用:chmod a+w /tmp改变/tmp目录的权限为:

drwxrwxrwx    3 root     root         4096  3月 16 11:34 tmp

那么任何人都可以删除别人在/tmp目录下的文件了,包括删除root在/tmp目录下建立的文件;

如果用:chmod o+t /tmp为/tmp目录加了粘滞位t,那么其他人就不能在tmp目录下改写(或删除、重命名)别人的文件(或目录),起到了/tmp目录的作用。

另外,“suid”和“sgid”特殊标志位可以使普通用户运行一个程序,使这个程序访问或修改只有文件所有者或root用户才能直接访问或修改的文件,当然前提是这个普通用户对这个文件的某个部分拥有相应的权限。

详情见转帖:linux的权限和所有权模型(转帖): http://java.learndiary.com/diaries/3110.jsp

本人的系统是redhat linux9.0+amd duron 700。在网上查到有人说删除某些linux发行版本的/tmp目录下的文件会使系统不能正常工作,也不知道是不是真的。不过,这次也再一次给我一个教训,对linux操作系统不熟悉的地方不能按照windows的模式想当然的操作。尤其是系统是正式的工作系统,应该坚持“宁滥勿缺”的原则,不要想当然的删除你不熟悉的文件或目录。