2010年9月8日星期三

linux 下vpn客户端配置

linux 下vpn客户端配置

配置步骤

1、安装软件包

(1)32位的包

#wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/lzo-2.02-3.el5.kb.i386.rpm #rpm -ivh lzo-2.02-3.el5.kb.i386.rpm #wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/openvpn-2.1-0.19.rc4.el5.kb.i386.rpm #rpm -ivh openvpn-2.1-0.19.rc4.el5.kb.i386.rpm 

(2)64位的包

#wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/x86_64/RPMS/lzo-2.02-3.el5.kb.x86_64.rpm #rpm -ivh lzo-2.02-3.el5.kb.x86_64.rpm #wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/x86_64/RPMS/openvpn-2.1-0.19.rc4.el5.kb.x86_64.rpm #rpm -ivh openvpn-2.1-0.19.rc4.el5.kb.x86_64.rpm 

2、配置文件

四个证书放在/etc/openvpn/ca/目录下

#vim /etc/openvpn/dev.ovpn  client dev tun proto tcp remote 公司网关IP 1194 float persist-key persist-tun ca /etc/openvpn/ca/ca.crt cert /etc/openvpn/ca/xxxx.crt key /etc/openvpn/ca/xxxx.key tls-auth /etc/openvpn/ca/ta.key 1 ns-cert-type server keepalive 10 30 comp-lzo verb 3 

#启动服务 # /etc/init.d/openvpn start # openvpn --config /etc/openvpn/dev.ovpn 2>&1 >/dev/null & 

这样就可以使用vpn了

2010年8月30日星期一

rsync 的高级应用(转)

转:http://www.ibm.com/developerworks/cn/aix/library/au-spunix_rsync/

对话 UNIX: rsync 的高级应用

developerWorks
文档选项
将打印机的版面设置成横向打印模式

打印本页

将此页作为电子邮件发送

将此页作为电子邮件发送

英文原文

英文原文


级别: 中级

Martin Streicher, 软件开发人员, Pixel, Byte, and Comma

2009 年 11 月 09 日

保持多台机器同步很困难。幸运的是,有一个流行的工具可以简化这个任务:rsync

在过去 20 年间,计算机网络的使用量已经急剧增加了。Internet 的快速发展,国家和国际主干网络基础结构方面的大量投资,以及连网和计算硬件的价格下降,这些因素都促进了网络使用量的增加。目前,网络已经非常普及了,而且新的应用仍然在推动网络的规模和速度。Internet 最初出现在 几台小型工作站 上,但是现在连接着无数计算机。

常用缩写词
  • FTP:File Transfer Protocol
  • WebDAV: Web-based Distributed Authoring and Versioning

与此同时,UNIX® 也在发展,连网软件的功能日益强大。FTP 属于第一批用于在系统之间共享文件的工具,目前仍然在广泛使用。rcp(“remote copy” 的简写)改进了 FTP,它具有与传统 cp 实用程序相似的功能,但是它在机器之间复制文件。rdist 基于 rcp,它自动地把文件从一台机器分布到许多系统。

现在,这些工具都过时了:rcprdist 过时了是因为它们不安全。scp 替代了它们。FTP 仍然在广泛使用,但是应该尽可能使用 FTP 的安全版本 Secure FTP (SFTP)。还有其他工具,比如 WebDAV 和 BitTorrent™ 等。当然,机器越多,保持所有机器同步(或者至少保持一种已知状态)就越困难,scp 和 WebDAV 无法解决这个问题,除非您自己编写解决方案。

最好的文件分布工具是 rsyncrsync 可以在中断之后恢复传输;它只传输源文件和目标文件之间不一致的部分;rsync 可以执行完整备份或增量备份。更棒的是,在所有风格的 UNIX 上都可以使用rsync,包括 Mac OS X,所以很容易连接任何系统。

我们先来回顾一下 rsync 的一般用法,然后讨论更高级的应用。这里采用的演示系统是 Mac OS X version 10.5 Leopard(FreeBSD 的一种变体)和 Ubuntu Linux® version 8。如果您使用其他操作系统,这里的大多数示例很可能可以移植。请阅读您机器上的 rsync 手册页,了解正确的操作。

快速回顾

cp 一样,rsync 也把文件从源复制到目标。但是,与 cp 不同,rsync 操作的源和目标既可以是本地的,也可以是远程的。例如,清单 1 中的命令把 /tmp/photos 目录及其内容按原样复制到主目录。


清单 1. 按原样复制内容
     $rsync -n -av /tmp/photos ~ building file list ... done photos/ photos/Photo 2.jpg photos/Photo 3.jpg photos/Photo 6.jpg photos/Photo 9.jpg  sent 218 bytes  received 56 bytes  548.00 bytes/sec total size is 375409  speedup is 1370.11 

-v 选项启用详细消息。-aa 代表存档)是 -rlptgoD 的简写(递归地复制,把符号链接复制为符号链接,保留权限,保留组,保留所有者,保留设备和特殊文件)。通常,-a 会生成文件的镜像;但是,在目标系统不支持相同的属性时会出现例外。例如,把 UNIX 中的目录复制到 Windows® 时无法准确地映射。下面会对一些不太常见的情况给出建议。

rsync 有许多选项。如果担心指定的选项或者源或目标不正确,可以使用 -n 执行试运行。试运行 会预览对每个文件的操作,但是不会实际复制数据。当确认所有设置是正确的之后,删除 -n 选项,再次运行命令。

清单 2 中的示例说明了使用 -n 选项的重要性。清单 1 中的命令和下面的命令会产生不同的结果。


清单 2. 复制指定目录的内容
     $ rsync -av /tmp/photos/ ~ ./ Photo 2.jpg Photo 3.jpg Photo 6.jpg Photo 9.jpg  sent 210 bytes  received 56 bytes  532.00 bytes/sec total size is 375409  speedup is 1411.31 

差异是什么?差异是源参数末尾的斜杠。如果源参数的末尾有斜杠,就会复制指定目录的内容,而不复制目录本身。目标参数末尾的斜杠没有作用。

清单 3 中的示例把同一个目录转移到另一个系统上。


清单 3. 把目录转移到另一个系统上
     $ rsync -av /tmp/photos example.com:album created directory album Photo 2.jpg Photo 3.jpg Photo 6.jpg Photo 9.jpg  sent 210 bytes  received 56 bytes  21.28 bytes/sec total size is 375409  speedup is 1411.31 

假设您在远程机器上有相同的登录名,rsync 会提示输入密码。提供正确的凭证之后,它创建目录 album 并把图像复制到这个目录中。在默认情况下,rsync 使用 Secure Shell (SSH) 作为传输机制;可以在 rsync 中重用机器别名和公共密钥。





回页首


rsync 模式

清单 2清单 3 中的示例演示了 rsync 的四种模式中的两个。第一个示例是 shell 模式,也称为本地模式。第二个示例是远程 shell 模式,它使用 SSH 执行底层连接和传输。rsync 还有两种模式。列表模式ls 相似:它列出源的内容,见 清单 4


清单 4. 列出源的内容
     $  drwxr-xr-x         238 2009/08/22 18:49:50 photos -rw-r--r--        6148 2008/07/03 01:36:18 photos/.DS_Store -rw-r--r--       71202 2008/06/18 04:51:36 photos/Photo 2.jpg -rw-r--r--       69632 2008/06/18 04:51:45 photos/Photo 3.jpg -rw-r--r--       61046 2008/07/14 00:31:17 photos/Photo 6.jpg -rw-r--r--      167381 2008/07/14 00:31:56 photos/Photo 9.jpg 

第四种模式是服务器模式。在这种模式下,rsync 守护进程在一台机器上永久运行,接收文件传输请求。可以把文件发送给守护进程,也可以向它请求文件。服务器模式非常适合创建中心备份服务器或项目存储库。

远程 shell 模式和服务器模式的差异在于,后者在源和目标名中使用两个冒号 (:)。假设 whatever.example.com 存在,下面的命令把文件从源复制到一个本地目标:

$ rsync -av whatever.example.com::src /tmp 

src 究竟是什么?它是在守护进程的主机上定义和配置的一个 rsync 模块。模块有名称、路径(包含它的文件)和其他一些参数,比如 read only 禁止修改内容。

执行以下命令运行 rsync 守护进程:

$ sudo rsync --daemon 

不一定要作为超级用户(根用户)运行 rsync 守护进程,但是这种做法可以保护机器上的其他文件。在作为根用户运行时,rsync 通过使用 chroot 只访问模块的目录层次结构(路径)。执行 chroot之后,其他所有文件和目录就看不到了。如果用自己的特权运行 rsync 守护进程,要选择未使用的套接字并确保它的模块有下载和/或上传所需的权限。清单 5 中的简单配置共享主目录中的一些文件,而不需要使用 sudo。这些配置存储在 rsyncd.conf 文件中。


清单 5. 用于共享文件的简单配置
     motd file = /home/strike/rsyncd/rsync.motd_file pid file = /home/strike/rsyncd/rsyncd.pid port = 7777 use chroot = no  [demo] path = /home/strike comment = Martin home directory list = no  [dropbox] path = /home/strike/public/dropbox comment = A place to leave things for Martin read only = no  [pickup] path = /home/strike/public/pickup comment = Get your files here! 

这个文件分为两部分。第一部分(前四行)配置 rsync 守护进程的操作。(还可以使用其他选项)。第一行指定一个文件,文件包含指明服务器的消息。第二行指定另一个文件,它记录服务器的进程 ID。在必须手工杀死 rsync 守护进程时,可以使用这个文件:

kill -INT `cat /home/strike/rsyncd/rsyncd.pid` 

这两个文件放在主目录中,因为这个示例不使用超级用户特权运行软件。为这个守护进程选择大于 1000 的端口号,用户可以把这个范围的端口号分配给任何应用程序。第四行关闭 chroot

第二部分分为几个小节,每个模块一小节。每个小节包含标题行和模块的选项(键-值对)列表。在默认情况下,所有模块都是只读的;设置 read only = no 允许写操作。另外,在默认情况下,所有模块在模块编目中列出;设置 list = no 隐藏模块。

运行以下命令启动守护进程:

$ rsync --daemon --config=rsyncd.conf  

现在,从另一台机器连接这个守护进程,省略模块名。应该会看到:

rsync --port=7777 mymachine.example.com:: Hello! Welcome to Martin's rsync server.  dropbox         A place to leave things for Martin pickup          Get your files here! 

如果没有在冒号 (::) 后面指定模块,守护进程会返回可用模块的列表。如果指定了模块,但是没有指定模块中的文件或目录,守护进程会提供模块内容的编目,见 清单 6


清单 6. 模块内容的编目输出
     rsync --port=7777 mymachine.example.com::pickup Hello! Welcome to Martin's rsync server.  drwxr-xr-x        4096 2009/08/23 08:56:19 . -rw-r--r--           0 2009/08/23 08:56:19 article21.html -rw-r--r--           0 2009/08/23 08:56:19 design.txt -rw-r--r--           0 2009/08/23 08:56:19 figure1.png 

通过指定模块和文件本地复制文件,见 清单 7


清单 7. 指定模块,本地复制文件
     rsync --port=7777 mymachine.example.com::pickup/ Hello! Welcome to Martin's rsync server.  drwxr-xr-x        4096 2009/08/23 08:56:19 . -rw-r--r--           0 2009/08/23 08:56:19 article21.html -rw-r--r--           0 2009/08/23 08:56:19 design.txt -rw-r--r--           0 2009/08/23 08:56:19 figure1.png 

通过对掉源和目标目录,然后指定用于写操作的模块,可以执行上传,见 清单 8


清单 8. 对掉源和目标目录
     $ rsync -v --port=7777 application.js mymachine.example.com::dropbox Hello! Welcome to Martin's rsync server.  application.js  sent 245 bytes  received 38 bytes  113.20 bytes/sec total size is 164  speedup is 0.58 

快速回顾 rsync 之后,现在我们看看如何在日常任务中应用 rsyncrsync 对于备份尤其有用。另外,因为它可以同步本地文件及其远程副本(也可以对整个文件系统进行同步),它非常适合管理那些必须相同(至少是部分相同)的大型集群。





回页首


用 rsync 备份数据

定期执行备份是一项重要的任务,但是常常被忽视。每天运行长时间的备份可能很无聊,或者需要大量外部介质来存储文件;但是,不要找借口,为了保证数据安全,应该坚持每天备份数据。

为了简化这个任务,可以使用 rsync 并指定一个远程服务器,这个服务器可以是服务提供商提供并备份的服务器。您的每台 UNIX 机器可以使用相同的技术,这非常适合保护笔记本计算机上的数据。

在远程机器上生成 SSH 密钥和 rsync 守护进程,创建一个允许写的备份模块。完成之后,运行 rsync 创建每日备份,这个备份几乎不占用任何空间,见 清单 9


清单 9. 创建每日备份
     #!/bin/sh # This script based on work by Michael Jakl (jakl.michael AT gmail DOTCOM) and used  # with express permission. HOST=mymachine.example.com SOURCE=$HOME PATHTOBACKUP=home-backup  date=`date "+%Y-%m-%dT%H:%M:%S"`  rsync -az --link-dest=$PATHTOBACKUP/current $SOURCE $HOST:PATHTOBACKUP/back-$date  ssh $HOST "rm $PATHTOBACKUP/current && ln -s back-$date $PATHTOBACKUP/current"  

HOST 替换为自己的备份主机名,把 SOURCE 替换为希望保存的目录。把 PATHTOBACKUP 改为自己的模块名。(还可以把脚本的最后三行嵌入一个循环,动态地修改 SOURCE,从而备份同一系统上的一系列目录)。备份的过程如下:

  • 首先,把 date 设置为当前日期和时间,产生 2009-08-23T12:32:18 这样的字符串,它惟一地标识备份。
  • rsync 命令执行复制操作。-az 保留所有文件信息并执行压缩。关键之处是 --link-dest=$PATHTOBACKUP/current,它指定如果文件没有修改过,就不把它复制到新的备份。相反,在新备份中创建一个指向现有备份中同一文件的硬链接。换句话说,新备份只包含已经修改过的 文件;其他文件都是链接。

    具体地说(展开所有变量),mymachine.example.com::home-backup/current 是当前存档。/home/strike 的新存档是 mymachine.example.com::home-backup/back-2009-08-23T12:32:18。如果 /home/strike 中的文件没有修改过,那么文件在新备份中表示为指向当前存档的硬链接。否则,把文件复制到新存档中。

    如果您每天只修改少量文件和目录,那么生成完整的备份实际上是没有意义的,这样做很浪费空间。另外,因为每个每日备份都非常小(除了第一个),可以保存长时间的文件历史。

  • 最后一步是更改远程机器上备份的组织,让新创建的存档成为当前存档,这会减小下一次运行脚本时要记录的差异。最后一个命令删除当前存档(这只是符号链接),重新创建相同的符号链接,但是指向新的存档。

请记住,硬链接指向相同的文件。硬链接的创建和维护开销很低,所以只使用增量方案就可以模拟完整备份的效果。





回页首


其他高级技巧

开始在日常任务中应用远程 rsync 之后,很可能会发现有必要让守护进程一直运行。Linux 和 UNIX 都为 rsync 提供了启动脚本,通常在 /etc/init.d/rsync 中。请在自己的操作系统中查找启动脚本以及启用和禁用组件的实用程序。如果您要按自己的方式作为守护进程运行 rsync,或者无法访问启动脚本,那么可以用 cron 启动 rsync

@reboot /usr/bin/rsync --daemon --port=7777 --config=/home/strike/rsyncd/rsyncd.conf 

这个命令在机器每次启动时启动守护进程。把这一行放在 crontab 文件中并保存文件。

前面演示了如何用 -n 预览 rsync 将执行的操作,发现可能存在的问题。还可以使用两个选项监视传输的状态:--progress--stats。前者显示一个进度条。后者显示如何执行压缩和传输。可以使用--compress 压缩两台机器之间传输的数据。在使用这个选项时并不发送原始数据,而是由发送方压缩数据,由接收方解压数据,这会加快传输速度 — 数据越少,花费的时间越少。

在默认情况下,rsync 会把源中的所有文件复制到目标。这就是复制。如果希望建立镜像(即目标是源的精确拷贝),那么应该指定 --delete。例如,如果源包含文件 A、B 和 C,标准的 rsync 会把 A、B 和 C 复制到目标。但是,如果在源中删除了 B,再次复制,目标就不再是源的镜像了:B 不再是有效的。--delete 选项建立镜像,从目标中删除源中不再存在的文件。

常常有一些文件不希望复制到备份或存档中。这些文件包括编辑器和其他实用程序创建的草稿文件(文件名常常以波浪线 [~] 结尾),以及许多不重要的文件,比如主目录中的 MP3 文件,如果需要的话,可以重新创建它们。可以使用模式排除某些文件。可以在命令行上指定模式,或者在文本文件中指定模式列表。还可以组合使用模式和 --delete-excluded 选项,从目标中删除这些文件。

要想通过命令行根据模式排除文件,应该使用 --exclude。请记住,如果模式中的任何字符对于 shell 有特殊含义,比如 *,那么应该把模式放在单引号中:

$ rsync -a --exclude='*~' /home/strike/data example.com::data 

假设文件 /home/strike/excludes 包含下面的模式列表:

*~ *.old *.mp3 tmp 

就可以排除与这些模式匹配的所有文件:

$ rsync -a --exclude-from=/home/strike/excludes /home/strike/data example.com::data 





回页首


结束语

既然了解了 rsync,您就无法为忽视备份找借口了。您还能有什么借口呢?只要适当地应用 rsync,您的数据就不会丢失了。现在有价值的文件都可以保存FIDOnet 中。



参考资料

学习
  • rsync:访问项目主页,进一步了解 rsync 及其开发进度。

  • rsync tutorial:阅读这份教程,了解 rsync 的相关信息。

  • rsync 手册页:阅读 rsync 的手册页。

  • 对话 UNIX:阅读本系列中的其他部分。

  • UNIX shells:了解关于 UNIX shell 的更多信息。

  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。

  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。

  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。

  • 技术书店 浏览关于这些主题和其他技术主题的图书。


讨论

2010年8月27日星期五

常用的 OS X 命令行工具(转)

转:http://purpen.javaeye.com/blog/162720

常用的 OS X 命令行工具(收藏)

关键字: mac ox 终端 命令
原文标题:Ten OS X Command Line Utilities you might not know about
原文作者:OS X Daily
译者:Klaith
Mac OS X 的命令行界面是成千上万程序的基础,可平常用户往往不知道它的存在。依靠 GNU 基金会以及开源社区的多年努力,Apple 设计出一个“无须”使用命令的杰出操作系统。在不必为了每天的日常操作而动用命令行的同时,只要利用得当,命令行仍然能够节省你不少时间,偶尔还会让你开怀一笑。我希望你能好好享受这里提到的十个 OS X 命令行工具!

1、ssh

这颗小小的“宝石”包含于 Mac OS X 的每个版本,其开发的最初目的只是为了取代 rsh/rlogin,现在却成为 Linux/Unix(包括 Mac OS X)社区不可缺少的一部分。openssh 的主要作用就是安全的远程管理。打开系统预置,点击“共享”,勾选“远程登录”,即可启动 Mac OS X 的内置 SSH 服务。现在假设你想连接你不在身边的电脑,可以借助类似 PuTTY(Windows 平台)的客户端,或者在 Mac OS X 的终端窗口中输入“ssh”连接你 Mac 的 IP 地址。以你的用户名和密码登录之后,你便获得了 Mac OS X 命令行的完整操作权。除此之外,openssh 还有许许多多应用,有些可是相当了不起的。我就很喜欢用 ssh 搭个 SOCKS 代理,这样我在公共地点也能安全上网冲浪。在Mac 上使用 ssh 的更多技巧,可以浏览本页!

2、top

top 是另一个长期为 Linux/Unix 社区使用的经典工具,使用它只需打开终端输入“top”。眨眼之间,你就会看见一个满是文字的窗口——每一个正在你的 Mac 上运行的进程都会被列出。如果我的 Mac 速度变慢,top 是让我知道什么正在发生的首选。点击这里,查看 top 的完整概述。

3、lsbom

如果你偶然在某个 Mac 站点(比如 OS X Daily)发现一件够酷够新的软件,忍不住想安装,而你又犹豫不决,那么 lsbom 对你大有好处。通过它,你可以测试 Mac OS X 安装包(.pkg)的内容,并且清楚了解究竟会有什么被塞进你心爱的文件系统。要使用 lsbom,你需要启动终端,并进入 .pkg 文件所在的目录。如果你的安装包形式是 .dmg,可能需要把其中的 .pkg 文件拷贝到桌面上,然后进入 Desktop 目录。一旦确认 .pkg 文件的位置,输入“lsbom .pkg/Contents/Archive.bom> | more”。哇!你所看见的就是新程序将会安装的完整文件列表。

4、say

这个命令是 Mac OS X 独一无二的,比其他任何一个都更有趣。打开终端输入“say hello”试试吧!

5、softwareupdate

softwareupdate 命令提供了一种安装 Apple 软件更新方便快捷的方法。打开终端,输入“softwareupdate -i -a”,你的 Mac 就会安装所有可以获得的更新项。如果你只想安装“推荐”更新项,那么就输入“softwareupdate -i -r”。

6、ipconfigifconfig

要说获取你 Mac IP 地址最快、最简单的方法,绝对是“ipconfigifconfig”,只需打开终端输入“ipconfigifconfig”。你能看到许多信息,包括你网卡的 MAC 地址。我喜欢输入“ipconfigifconfig | grep inet”仅回馈我计算机的 IP 信息。你也可以通过输入“ifconfig en0 down”来禁止一个网络连接(这里举了“en0”的例子);如果希望恢复,那么就输入“ipconfigifconfig en0 up”。这比使用系统预置要快上不少哦!

7、lipo

lipo 是一个在 Mac OS X 中处理通用程序(Universal Binaries)的工具。现在发售或者提供下载的许多(几乎所有)程序都打上了“Universal”标志,意味着它们同时具有 PowerPC 和 Intel 芯片能够处理的代码。不过既然你可能不在意其中的一个,你就能够使用 lipo 来给你的程序“瘦身”。比如你想让“便笺”应用程序只包含 Intel(i386)的代码:

cd /Applications
lipo Stickies.app/Contents/MacOS/Stickies -thin i386 -output Stickies.app/Contents/MacOS/Stickies.i386
cd Stickies.app/Contents/MacOS/
rm Stickies
mv Stickies.i386 Stickies

8、screencapture

screencapture 提供了较 command-shift-3 更高级的抓屏手段。要使用它,打开终端,试着输入“screencapture -iW ~/Desktop/screen.jpg”,鼠标会变成等待点击的相机图标,点击后就在你的桌面上创建一个名为“screen.jpg”的文件,内容就是你点击的任何窗口的抓屏。当然你也能够通过输入“screencapture -S ~/Desktop/screen.jpg”来抓取整个屏幕。如果你还想与众不同,你还可以输入“screencapture -ic”来抓取屏幕的一部分。现在就抓上一些图片发给 osxdaily 吧,我们会喜欢它们的!

9 & 10、Fink 和 DarwinPorts

如果你已经习惯于 OS X 命令行工具的基本应用,现在就是让你的终端接触更大开源世界的时候了。借助于 DarwinPorts 或者 Fink,你能够在你的计算机上下载、安装成百上千的免费开源软件。我发现 Darwinports 开始注意到一些较少见的开源计划,而 Fink 似乎更为坚实。你可以同时安装两者,只要你的确知道你在干什么,但是一般我会建议你只选择其中一个。初学者应该试试 Fink,因为它会附带一个名为“Fink Commander”的程序,你只需从中选择一个程序来下载。看看它们各自的官方网站吧:DarwinPorts (已更名为 MacPorts)官方网站;Fink 的官方网站。

11. cat/more/less
以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是
concatenate ,在字典上的意思是"连结,将…串成锁状"( 语出资工电子
词典 cdict ),其实就是把档案的内容显示出来的意思。 cat 有许多奇怪
的参数,较常为人所使用的是 -n 参数,也就是把显示出来的内容加上行
号。 cat 的用法如下:

cat [-n] :自标准输入读进内容,你可以用 pipe 将别的程式的输出转向
给 cat .
cat [-n] filename : 将 filename 的内容读进来,显示在标准输出上。

问题在於 cat 它是不会停下来的,因此并不好用( 试想如果一个萤幕二十
四行,而一个档案四百行,cat 一出来将会劈哩啪啦不断的卷上去,使用者
很难据此得到他们所需的资讯。) 所以才有人又写了 more 出来。

more , 跟据蔡文能老师的说法是"再多一点就好",more 可以将所观察的档案
跟据终端机的形态一页页的显示出来,再根据使用者的要求换页或卷行。如果
使用者要在某一个档案中搜寻一个特定的字串,则按 / 然後跟著打所要搜寻
的单字即可进行搜寻。more 也可以找得到。more 的使用法如下:

more filename

如果你在使用中觉得已经看到了所要看的部份,可以按'q'离开 more 的使用。
在使用中按'v' 亦可以使用编辑器来编辑所观看的档案。

less 的用法与 more 极类似,原先它就是为了弥补 more 只能往前方卷页的缺
点而设计。 less 的用法如下:

less filename

其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你所
要找的单字。

2010年8月24日星期二

Change the hostname in Mac OS X(转)

转:http://blog.psyrendust.com/2008/05/23/change-the-hostname-in-mac-os-x-osx/


Change the hostname in Mac OS X [osx]

by LARRY on MAY 23, 2008

in MAC,HOWTO,PROGRAMMING

When I log into the network at my job my Mac’s hostname always turns to:

larryx.na.corp.ipgnetwork.com

I have my local hostname set to:

larryx.local

So What I would like to do is set my Mac’s hostname to my local hostname. You can do this all from Terminal in a single line.

Run this command in Terminal:

sudo scutil --set HostName larryx.local

This is also helpful if you’re in Terminal and have a really long hostname at your prompt. If you want to view your current hostname, run this command in Terminal:

hostname

This is what it looked like for me:

Last login: Fri May 23 09:55:20 on ttys000 larryx:~ lgordon$ hostname larryx.na.corp.ipgnetwork.com larryx:~ lgordon$ sudo scutil --set HostName larryx.local Password: larryx:~ lgordon$ hostname larryx.local

2010年8月2日星期一

iptables

/etc/sysconfig/iptables

iptables-restore < /etc/sysconfig/iptables

2010年7月22日星期四

unicode(转)

Unicode

ISO10646/Unicode规定了一套字符集,包含了世界上的大多数字符,规定了这些字符的编码,每个编码可以理解为一个数字。例如:汜,它对应的编码如果用十进制表示,就是27740。

unicode只规定了字符集,只规定了1对应的是什么字符,2对应的是什么字符。至于传输和存储,各个系统必须自己实现。在计算机领域里,一般使用UTF-8,UTF-16,UTF-32三种传输和存储格式。我们也可以说:unicode是定义,而utf-8等是具体实现。

目录

[隐藏]

范围

  • Plane 0 (0000–FFFF),这个范围被称为Basic Multilingual Plane (BMP),包含了65536个字符,目前全世界的人类文字和字符都被定义在这个范围里。其中大部分是中日韩字符。
  • Plane 1 (10000–1FFFF): Supplementary Multilingual Plane (SMP).
  • Plane 2 (20000–2FFFF): Supplementary Ideographic Plane (SIP)
  • Planes 3 to 13 (30000–DFFFF) are unassigned
  • Plane 14 (E0000–EFFFF): Supplementary Special-purpose Plane (SSP)
  • Plane 15 (F0000–FFFFF) reserved for the Private Use Area (PUA)
  • Plane 16 (100000–10FFFF), reserved for the Private Use Area (PUA)

BOM

UTF-8之BOM含义,UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行

UTF-8

UTF-8是一种兼容ascii的unicode传输存储格式。根据字符编码的范围不同而使用不一样的存储方式和长度。 下面这个表里,字段1表示Unicode编码范围(十六进制),字段2表示编码所使用的存储方式(二进制),或许称为模板更为形象。字段2其实也表示了一个字符在计算机里存储所用的bits。

0000-007F | 0xxxxxxx 0080-07FF | 110xxxxx 10xxxxxx 0800-FFFF | 1110xxxx 10xxxxxx 10xxxxxx 10000-10FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 

例如字符“汜”,在unicode里的编码为十六进制的6C5C,范围在0800-FFFF之间,所以取模板1110xxxx 10xxxxxx 10xxxxxx(也就是说,“汜”为三字节的宽字符),“汜”的编码换算成二进制(0110110001011100)后代入模板,得1110[0110] 10[110001] 10[011100]。中括号里的数字,连接起来就是该字符的unicode编码的二进制表示。

再例如字符“@”,在uinicode里的编码是十进制的64,范围在0000-007F之间,所以取模板0xxxxxxx。“@”的编码换算成二进制(1000000)后代入模板,得0[1000000]。它在计算机里的存储方式和ascii的“@”是一样的。这就是为什么utf-8是兼容ascii的原因。

UTF-16

UTF-16是一个不兼容ascii的unicode传输存储格式,一个utf-16字符在BMP里总是两字节的,也就是16个bits的。例如字符“@”,它的unicode编码的二进制表示是1000000,在高位补满16个0,得0000000001000000,这就是“@”unicode编码的UTF-16的二进制表示了。因为UTF-16不兼容ascii,而在计算机的世界里存在着大量以ascii方式存储的数据,所以,现在UTF-16并没有在文本处理领域里得到广泛使用。因为UTF-16在BMP总是两个字节,所以比起UTF-8,在存储中日韩字符的时候,相同的文本,需要的存储空间比较少。但是存储英文资料的时候,则比UTF-8需要更多的存储空间。

2010年7月14日星期三

linux基础之教你如何查看linux版本(转)

转:http://dev.firnow.com/course/6_system/linux/Linuxjs/20090315/161658.html
如何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案!

  1. 查看内核版本命令:

  1) [root@q1test01 ~]# cat /proc/version

   Linux version 2.6.9-22.ELsmp (bhcompile@crowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005

  2) [root@q1test01 ~]# uname -a
  Linux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux

  3) [root@q1test01 ~]# uname -r

  2.6.9-22.ELsmp

  2. 查看linux版本:

  1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如:

  [root@3.5.5Biz-46 ~]# [root@q1test01 ~]# lsb_release -a

  LSB Version: :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-

  ia32:graphics-3.0-noarch

  Distributor ID: RedHatEnterpriseAS

  Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

  Release: 4

  Codename: NahantUpdate2

  注:这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。

  2) 登录到linux执行cat /etc/issue,例如如下:

  [root@q1test01 ~]# cat /etc/issue

  Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

  Kernel \r on an \m

  3) 登录到linux执行cat /etc/redhat-release ,例如如下:

  [root@q1test01 ~]# cat /etc/redhat-release

  Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

  注:这种方式下可以直接看到具体的版本号,比如 AS4 Update 1

  4)登录到linux执行rpm -q redhat-release ,例如如下:

  [root@q1test01 ~]# rpm -q redhat-release

  redhat-release-4AS-3

  注:这种方式下可看到一个所谓的release号,比如上边的例子是3

  这个release号和实际的版本之间存在一定的对应关系,如下:

  redhat-release-3AS-1 -> Redhat Enterprise Linux AS 3

  redhat-release-3AS-7.4 -> Redhat Enterprise Linux AS 3 Update 4

  redhat-release-4AS-2 -> Redhat Enterprise Linux AS 4

  redhat-release-4AS-2.4 -> Redhat Enterprise Linux AS 4 Update 1

  redhat-release-4AS-3 -> Redhat Enterprise Linux AS 4 Update 2

  redhat-release-4AS-4.1 -> Redhat Enterprise Linux AS 4 Update 3

  redhat-release-4AS-5.5 -> Redhat Enterprise Linux AS 4 Update 4

  另:第3)、4)两种方法只对Redhat Linux有效。diyblPic