2012年3月 的存档

linux 根据文件大小查找文件

2012年3月29日 没有评论

linux下的find命令用来查找文件,通过man find就知道它是无所不能的。所以按照文件大小来查找文件就不在话下。从man find搜索size,可以看到如下信息:

-size n[cwbkMG]
	  File uses n units of space.  The following suffixes can be used:

	  b    for 512-byte blocks (this is the default if no suffix is used)

	  c    for bytes

	  w    for two-byte words

	  k    for Kilobytes (units of 1024 bytes)

	  M    for Megabytes (units of 1048576 bytes)

	  G    for Gigabytes (units of 1073741824 bytes)

注意:默认单位是b,而它代表的是512字节,所以2表示1K,1M则是2048,如果不想自己转换,可以使用其他单位,如c、K、M等。

例子:查找当前目录下文件大小为2048(2k)字节的文件

find ./ -size 4
或
find ./ -size 2048c
或
find ./ -size 2K

上述查找文件是等于指定大小的,那能不能查询大于或小于某个指定值的文件呢,答案是肯定,例如:

查找大于2K的文件,+ 表示大于
find ./ -size +2048c

查找小于2K的文件,- 表示小于
find ./ -size +2048c -type f

一条命令列出当前网络连接状态分类汇总

2012年3月29日 没有评论
netstat -nt | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

nginx Too many open files

2012年3月29日 没有评论

默认情况下linux文件系统最大可打开文件数为1024,对于一个应用于生产环境下的服务器来说,这个设置太下,例如在用nginx做web服务器,当并发达到一定数量时,可以看到error.log里出现大量的“Nginx accept() failed (24: Too many open files)” 错误。解决这个问题的办法有两种:

方法一:使用ulimit -n 655350 把打开文件上限设置为655350,同时还需要修改nginx的配置文件,把worker_rlimit_nofile 值设置为一样。

注意:通过ulimit修改打开文件上限只会影响当前shell环境,所以这是一个临时解决方法,终极解决方法使用方法二。

方法二:在/etc/security/limits.conf文件中添加如下信息:

* soft nofile 655360
* hard nofile 655360

注意:这个方法修改后必须重启机器才能使之生效。

分类: Linux, nginx 标签:

如何查看linux版本

2012年3月29日 没有评论

查看linux内核版本:

cat /proc/version
或
uname -a

查看linux发行版(系统)名称和版本:

lsb_release -a

ubuntu 下
cat /etc/lsb-release
centos 下
cat /etc/redhat-release
或者
cat /etc/*release

从视频文件提取音频并存储为MP3格式文件

2012年3月29日 没有评论

在linux世界里,进行视频格式转化的软件有很多,其中大名鼎鼎的ffmpeg和mplayer下的mencoder。本文主要介绍如何从视频文件中提起音频,同时保存成mp3格式的文件。

格式转换其实就是经过解码和重新编码两个过程,如果系统不存在对应的解、编码器,就需要额外安装。ffmpeg自带了MP2格式的编码器,对于MP2格式的音频,普通电脑上的播放器似乎都能支持,但大部分手机的播放器不支持,所以为了通用,还是生成MP3格式的音频。MP3编码器可以使用lame。

在centos和ubuntu下,ffmpeg似乎不在标准的源中,不能使用yum或apt-get来安装,其实源码安装也是很容易的,这里就介绍的就是通过源码安装,安装前确保机器上有gcc,如果没有安装,先通过yum安装。

安装 lame

下载地址:http://sourceforge.net/projects/lame/files/lame/

使用wget下载到本机
wget http://nchc.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz

解压文件:
tar -xvf lame-3.99.5.tar.gz

编译安装:
cd lame-3.99.5
./configure && make && make install

检查本机是否有yasm(不知道是干什么用的),在ffmpeg执行configure时会用到它,不过可以disabled掉,也可以装上它
安装yasm:

下载地址:http://www.tortall.net/projects/yasm/releases/

下载文件:
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz

解压并编译安装:
tar -xvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure && make && make install

安装ffmpeg

下载地址:http://www.ffmpeg.org/download.html

下载文件:
wget http://www.ffmpeg.org/releases/ffmpeg-0.10.2.tar.bz2
也可以使用svn、git下载最新版本

解压文件:
tar -xvf ffmpeg-0.10.2.tar.bz2

编译安装:
cd ffmpeg-0.10.2
./configure --prefix=/usr/local/ffmpeg --enable-libmp3lame
make && make install

--enable-libmp3lame 是让ffmpeg在编码时可以使用MP3编码器

至此,软件都安装好了。注意:如果使用ffmpeg出现如下错误信息:

ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory

其原因是lame编译好的库文件安装在/usr/local/lib/下,而ffmpeg是去/usr/lib/下找,解决的办法是做一个软链接即可:

ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0

假设视频文件名称为01.flv,下面详细介绍如何从里面提取去音频。

通过ffmpeg来查看视频文件信息:

ffmpeg -i 01.flv

输出大致为:
  Duration: 00:01:10.21, start: 0.000000, bitrate: 284 kb/s
    Stream #0.0: Video: h264, yuv420p, 512x288 [PAR 513:512 DAR 57:32], 252 kb/s, 15 tbr, 1k tbn, 30 tbc
    Stream #0.1: Audio: aac, 44100 Hz, stereo, s16, 32 kb/s

可以看到音频编码用的acc,所以需要看看ffmpeg是否支持acc的解码,命令为:

ffmpeg -codecs | grep aac

如果看到下面类似输出,表示支持
DEA    aac             Advanced Audio Coding

DEA中的D表示decoder,E表示encoder,A表示Audio Codec

由于要转换成MP3格式的音频,所以就需要查看是否存在MP3编码器,命令为:

ffmpeg -codecs | grep mp

如果输出中存在如下信息即表示支持
  EA    libmp3lame      libmp3lame MP3 (MPEG audio layer 3)

DEA    mp2             MP2 (MPEG audio layer 2)

注意:如果没有看到libmp3lame,就不能进行MP3格式的编码,但是可以使用MP2格式的编码,一个很奇怪的问题,我在一台机器上编译ffmpeg时候使用enable lame,安装ffmpeg还是不支持MP3编码,另外一台机器上就是好的。不过可以通过lame来把MP2格式的音频转换为MP3格式,所以就算ffmpeg在编译时候没有指定使用MP3编码器,也一样可以得到MP3格式的音频文件。

有了上面的知识,现在就来说怎么从视频中获取音频

1、先获取MP2编码的音频在使用lame来重新编码 
ffmpeg -i 01.flv -f mp2 -vn t.mp3
lame t.mp3 01.mp3

-i 输入文件, -f 输出使用的编码格式  -vn 禁止视频输出   t.mp3 输出的文件名
使用lame命令还可以在MP3文件中增加一些额外信息,更多信息可以使用 lame --help id3 查看

2、一步到位直接使用MP3编码器 
ffmpeg -i 01.flv -f mp3 -vn 01.mp3
或
ffmpeg -i 01.flv -acodec libmp3lame -vn 01.mp3

另外使用mplayer和mencoder获取音频命令为:

mencoder 01.flv -oac mp3lame -ovc lavc -o t.avi

mplayer -dumpaudio -dumpfile 01.mp3 t.avi

现在很多视频网站上的一个长视频都是分成很多小段的,如何把一个长视频音频提取到一个音频文件中,在linux中,借用cat命令就很容易实现。假设视频有三段,先使用上面提到的命令获取三个独立的音频文件01.mp3、02.mp3和03.mp3,合并的命令为:

cat 01.mp3 02.mp3 03.mp3 > comp.mp3

修改sshd服务器的默认端口

2012年3月26日 没有评论

一台放在公网上的web服务器,sshd服务使用默认端口,今天用lastb看了一下,发现非常多试图通过ssh来连接的用户,算好密码设置的比较强健,没有被攻破。为了服务器安全考虑,所以决定修改sshd服务的端口,修改端口很容易,只需要把配置文件中的默认端口设置成一个空闲端口即可,配置文件为 /etc/ssh/sshd_config,找到Port 22,把22修改成自己喜欢端口即可,如果配置文件这行前面有注释符号(#),需要去掉,重新sshd服务即可,重启命令为:

/etc/init.d/sshd restart
或
service sshd restart

修改配置容易,但是需要注意,如果使用iptables之类的防火墙,最好先确认新端口是开放的,防止重启sshd后无法连接上服务器。另外重启sshd服务对已有的连接不会重置,可以在重启前多开几个终端先连接上,然后再重启服务,这个时候新开终端使用修改后的端口来连接,确保可以正常连接再断了老的连接。

另外,如果使用了rsync通过ssh协议来进行远程数据备份,也需要做相应的修改,例如:

ssh使用默认端口情况下:
/usr/bin/rsync  -vzrtopg  --progress -e ssh root@192.168.1.211:/home/backups/ /data/backups

ssh不是默认端口,假设自定义sshd端口为3323
/usr/bin/rsync  -vzrtopg  --progress -e "ssh -p 3323" root@192.168.1.211:/home/backups/ /data/backups
分类: Linux 标签:

mysqldump: Couldn’t execute ‘SHOW TRIGGERS LIKE ‘btaglog”: Got error 28 from storage engine (1030)

2012年3月25日 没有评论

最近准备测试一下mysql的MyISAM与InnorDB存储引擎的性能,在使用mysqldump备份数据的时候出现如标题的错误,网上查了一下,有人说是杀毒软件的问题,有人说是tmp目录太小了,由于是在linux下,可以排除杀毒软件的问题,那就是tmp目录太小了,使用df命令查看了一下硬盘的使用情况,发现硬盘全部占满,这就是造成出错的原因。曾经也碰到过由于硬盘可用空间过小的原因导致mysql服务器不能启动的事情。

分类: MySQL 标签:

mysql 导入乱码问题

2012年3月25日 没有评论

把文件中的数据导入到mysql表中时可能会碰到乱码的问题,造成乱码的根源就是编码问题,涉及到编码的有数据库和数据文件。要想导入时避免不出现乱码,只要保证数据文件的编码和导入时甚至的编码一直即可,注意:不是和数据库的编码一致。例如:数据文件data.sql,编码为UTF-8,使用如下命令:

    mysql -uroot -p --default-character-set=utf8 db < data.sql

这时不管数据使用的何种编码,都不会出现乱码的。当然如果你知道当前mysql客户端使用的默认编码和数据文件的编码集是一样的,那么可以省略上述编码设置。

Linux虚拟内存学习笔记

2012年3月20日 没有评论

最近学习了一下关于虚拟内存方面知识,记录几个比较有价值的网址。

Linux虚拟内存实现原理

http://blog.nosqlfan.com/html/2956.html

Linux环境进程间通信(五): 共享内存(上)

http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html

分类: Linux 标签:

修改open free chart bar图的宽度

2012年3月18日 没有评论

用open free chart来显示bar(柱状)图时,bar的宽度是x轴的长度以及x轴元素个数有关,默认的宽度是:x轴的长度除以元素个数乘以0.8,当x轴的原始个数比较少,那么bar的宽度就比较宽,可能显示的图不美观。

可以通过修改源代码重新编译来改变bar的默认宽度,关于如果编译open free chart,可以参考:自己动手编译Open Flash Chart

修改文件位于根目录下的ScreenCoords.as文件中,在public function get_bar_coords( index:Number, group:Number ):Object 函数中 默认设置为:

var bar_set_width:Number = item_width*0.8;

可以自己根据需要设置,可以设置固定值,也可以调整比例,例如把0.8调整至0.5,修改后重新编译就可以。

分类: web前端 标签:

无觅相关文章插件,快速提升流量