ht://Dig通过程序(rundig)自动搜索整个网站并且把搜索到的所有关键词和相应链接存储到一个本地数据库中。如果网站更新,我们可以再次运行rundig即可更新数据库。更好的方法是把rundig加入crontab,这样就可以保持数据库的准确性和实时性。
而且ht://Dig还支持各种复杂的搜索选项,用户可以根据需要自己选择。搜索的结果将根据与关键词的相关度从高到低排列,保证用户最快的找到自己需要的页面。
另外别忘了ht://Dig是一个开源的免费软件,我们不仅可以修改它的模版以符合自己网站的风格,甚至如果需要还可以修改它的源代码。
链接1:官方网站 http://www.htdig.org/
链接2:教程 http://www.devshed.com/c/a/Administration/Site-Search-with-HTDIG/
Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts
4/06/2009
3/05/2009
Linux常用命令:tail,split, find 和 grep
google 一下"linux常用命令",列了许多常用命令,可是记性不好,或者不是运用不是很熟练得情况下,很多问题未必知道如何解决,于是想到使用案例分析,既能解释常用命令,又能为某些常见的案例找到解决方式。
无论程序员或者管理员,经常需要查看log file,但大部分情况下,log file可能很大,而我们只需要查看最后的几行记录,用“tail Logfilename” 就是我们所需的,不过这个简单命令只能查看你打开文件前的最后几行记录,如果文件是实时更新的,就需在tail后 加上“-f”, 全行命令如下:
tail -f debug.log
(-f: output appended data as the file grows)
用以上命令会在你查看记录的时候在terminal上实时更新最新的最后几行记录。
对于查看log file,tail 命令的确很方便,因为一般log file只需要查看最后几笔记录。但若“tail”来查看别的大文件,就未必方便了。
例如有一个mysql的拷贝文件,拷贝数据库把整个server的所有数据库全弄到一个拷贝文件里了。很愚蠢的做法,但没办法,就有人这么省事。于是哪天不幸需要恢复数据的时候,就头疼了。因为不可能真的把所有的数据库恢复了,就算是可以,也需要n个小时,而我们所需的数据只是其中一个table。虽然知道要恢复的table名,但文件太大,linux(unix)上有限制不超过(2MB),大于这个文件就读不出来了。这个时候,单一的linux命令是无法让你找到所需的表名的,必须综合运用几个linux命令。
首先,将拷贝文件分成n个大小的2mb的文件:
split -b 2 m mysql.sql
(-b, --bytes=SIZE: put SIZE bytes per output file. SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.)
split会自动分离文件,并自动给每个文件取个文件名,所以无需计算要分成几个,分成什么文件名。
在split命令分完文件后,用查找命令找一下所需的文件:
find . -name "*.sql" | xargs grep 'tablename'
(-name pattern: search files with the given pattern.)
通过这个命令,就知道所需要的数据在那个文件,然后打开此文件查找。如果文件仍然太大,不方便,再重复以上步骤n次,就能找出所需数据。
“find“ 这个命令在linux下查找文件非常方便。比如你知道一个function “helloWorld()”,但不知道这在那个文件里面,便可通过find 查询:
find . -type f | xargs grep 'helloWorld()'
(-type f: search all files)
linux会把所有调用到这个function的文件全列出来。 甚至在你已知文件类型,便可用类似于上边的命令用定义文件名的类型来查找,例如
find . -name "*.txt" | xargs grep 'helloWorld()'
最后简单解释一下为什么在find后使用xargs。用find查询到结果可能有很多,甚至超过系统的限制导致出错。在find后加入xargs则可优化查询进程,令grep每次只获取一部分文件而不是全部,这样避免出现错误。
无论程序员或者管理员,经常需要查看log file,但大部分情况下,log file可能很大,而我们只需要查看最后的几行记录,用“tail Logfilename” 就是我们所需的,不过这个简单命令只能查看你打开文件前的最后几行记录,如果文件是实时更新的,就需在tail后 加上“-f”, 全行命令如下:
tail -f debug.log
(-f: output appended data as the file grows)
用以上命令会在你查看记录的时候在terminal上实时更新最新的最后几行记录。
对于查看log file,tail 命令的确很方便,因为一般log file只需要查看最后几笔记录。但若“tail”来查看别的大文件,就未必方便了。
例如有一个mysql的拷贝文件,拷贝数据库把整个server的所有数据库全弄到一个拷贝文件里了。很愚蠢的做法,但没办法,就有人这么省事。于是哪天不幸需要恢复数据的时候,就头疼了。因为不可能真的把所有的数据库恢复了,就算是可以,也需要n个小时,而我们所需的数据只是其中一个table。虽然知道要恢复的table名,但文件太大,linux(unix)上有限制不超过(2MB),大于这个文件就读不出来了。这个时候,单一的linux命令是无法让你找到所需的表名的,必须综合运用几个linux命令。
首先,将拷贝文件分成n个大小的2mb的文件:
split -b 2 m mysql.sql
(-b, --bytes=SIZE: put SIZE bytes per output file. SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.)
split会自动分离文件,并自动给每个文件取个文件名,所以无需计算要分成几个,分成什么文件名。
在split命令分完文件后,用查找命令找一下所需的文件:
find . -name "*.sql" | xargs grep 'tablename'
(-name pattern: search files with the given pattern.)
通过这个命令,就知道所需要的数据在那个文件,然后打开此文件查找。如果文件仍然太大,不方便,再重复以上步骤n次,就能找出所需数据。
“find“ 这个命令在linux下查找文件非常方便。比如你知道一个function “helloWorld()”,但不知道这在那个文件里面,便可通过find 查询:
find . -type f | xargs grep 'helloWorld()'
(-type f: search all files)
linux会把所有调用到这个function的文件全列出来。 甚至在你已知文件类型,便可用类似于上边的命令用定义文件名的类型来查找,例如
find . -name "*.txt" | xargs grep 'helloWorld()'
最后简单解释一下为什么在find后使用xargs。用find查询到结果可能有很多,甚至超过系统的限制导致出错。在find后加入xargs则可优化查询进程,令grep每次只获取一部分文件而不是全部,这样避免出现错误。
Labels:
Linux
2/18/2009
最好的VIM入门教程:vimtutor
Vim,即Vi的更新版本,是Linux下功能强大的文本编辑器。可以说如果要学习Linux,首先就必须要会熟练使用Vim。一个好的教程将使我们的学习事半功倍。可惜大部分人都不知道Vim除了提供了详细的帮助文档以外,还给初学者准备了一个理论与实际操作相结合的入门教程。要启动这个教程,我们只需要在Linux下输入vimtutor这个命令。好了,现在就开始你的Vim学习之旅吧。
2/03/2009
在Linux中复制整个目录
cp是最常用的Linux命令之一,复制文件从一个目录到另一个目录也是经常要用到的一个操作。但是有时候我们突然需要复制整个目录的时候,只用cp就不够了。其实答案也很简单:
cp -r path1/dir1 path2/dir2
注:-R, -r, --recursive:copy directories recursively
cp -r path1/dir1 path2/dir2
注:-R, -r, --recursive:copy directories recursively
Labels:
Linux
Subscribe to:
Posts (Atom)