2007年11月27日星期二
程序员保持身心健康的八种方式
也正由于程序员所带给我们的一切,这工作仍让我们欲罢不能。这种情况下,如何处理工作带来的压力便成了一项技巧。以下分享我的一些方式,以保持你的身心健康。
懂得何时走开
一般来说程序员大多有定力、做事有条理。我们不愿意承认失败,当不顺时我们也不愿走开。但当你已在一个问题上花费了太长时间的时候,最好的选择是走开,清醒头脑。出去走两步,等你平静下来(不再急躁)再回到办公桌上。
出去吃午餐……
以前我习惯每天在电脑前吃饭——我会浏览我常去的网页、发几封个人电邮。当越来越多的客户认识我之后,我的午餐时间被一个接一个的电话打断,我也不再有我自己的时间。不要让你的午餐时间成为另一种形式的工作时间!离开办公桌出去吃饭。
……但要吃的健康
健康的身体健康的头脑。在桌上吃点甜甜圈什么的(指快餐)确实很方便,但休息一下吃得健康点。吃得很单调不营养会让人觉得忧虑甚至沮丧(我觉得在麦当劳吃快餐自尊心会很低)。我建议吃得营养丰富——这会让你充实,而且给你足够的营养,从而不会觉得累或虚弱。
忘掉家庭电脑
度过焦头烂额的一天,远离你的家庭电脑——你的个人编程可以等到第二天。而且你个人的编程会比工作问题更让你抓狂,那显然不是你应当要的。就好好度过晚上吧。
一个非技术的兴趣/锻炼
最好是对非电脑相关的爱好有激情。身体锻炼更好,能让你保持体形。我经常听到许多程序员句句不离电脑有关的话题——暂时离开编程的圈子吧!找个其他兴趣!学做饭、玩棋牌、足球……
抽点时间跟朋友一起
朋友通常是兴趣广泛远不仅限于电脑的。安排个周末跟朋友一起,一起去野外烧烤、看电影、玩电子游戏、踢足球、或者只是一起走走。光发条信息可不算!
休假
当工作上的一切都变得很不顺的时候,不要担心使用你的假期——它将使你彻底远离无法承受的工作。你不必去国外度假也不必旅行,如果你愿意待在家里也没关系。休假的关键是不工作。
考虑编程是否适合你 如果你在原则上没有了主意,而且编程工作影响了你的家庭、健康、心智,那就放弃吧。外边工作有的是,其他职业对你而言可能更好。要知道编程并不是一切,你不必因为工作而一忍再忍。
URL:http://davidwalsh.name/ways-programmers-stay-sane
原文地址 http://yeeyan.com/articles/view/6559/3167
2007年11月15日星期四
电子书籍备份
| Cisco Network Security Troubleshooting Handbook (2005).chm
| Hardware Hacking - Have Fun While Voiding Your Warranty (2004).pdf
| PC Hacks - 100 Industrial-Strength Tips & Tools (2004).chm
| PC Magazine Guide To Windows XP Media Center Edition 2005.pdf
| Upgrading And Repairing Networks, 5th Edition (2006).chm
| Upgrading And Repairing PCs, 17th Edition (2006).chm
| Upgrading And Repairing Servers (2006).chm
|
+---linux
| A Practical Guide To Linux Commands, Editors, And Shell Programming (2005).chm
| A Practical Guide To Red Hat Linux, 3rd Edition (2006).chm
| BSD Hacks - 100 Industrial-Strength Tips & Tools (2004).chm
| Bash Quick Reference (2006).pdf
| Beginning Apache Struts - From Novice To Professional (2006).pdf
| Beginning Unix (2005).pdf
| DNS And BIND, 5th Edition (2006).chm
| DNS In Action (2006).pdf
| Designing And Implementing Linux Firewalls And QoS (2006).pdf
| Guide To Assembly Language Programming In Linux (2005).pdf
| Hacker Linux Uncovered (2005).chm
| Hardening Linux (2005).pdf
| How Linux Works - What Every Super-User Should Know (2004).chm
| Just Say No To Microsoft (2005).pdf
| LPI Linux Certification In A Nutshell, 2nd Edition (2006).chm
| Linux All-In-One Desk Reference For Dummies (2006).pdf
| Linux Cookbook (2004).chm
| Linux Debugging And Performance Tuning - Tips And Techniques (2005).chm
| Linux Desktop Hacks (2005).chm
| Linux Phrasebook (2006).chm
| Linux Shell Scripting With Bash (2004).pdf
| Linux Smart Homes For Dummies (2006).pdf
| Linux Toys II - 9 Cool New Projects For Home, Office, And Entertainment (2006).pdf
| Linux Unwired (2004).chm
| Mastering FreeBSD And OpenBSD Security (2005).chm
| Moving To Ubuntu Linux (2006).chm
| Pro DNS And BIND (2005).pdf
| Running Linux, 5th Edition (2005).chm
| SELinux (2004).chm
| SELinux By Example - Using Security Enhanced Linux (2006).chm
| Solaris 10 - The Complete Reference (2005).pdf
| The Official Ubuntu Book (2006).chm
| The OpenBSD 4.0 Crash Course (2007).chm
| Ubuntu Unleashed (2006).chm
| User Mode Linux (2006).chm
|
\---security
Backup & Recovery (2006).chm
Blackboard For Dummies (2006).pdf
Botnets - The Killer Web App (2007).pdf
Computer Security Basics, 2nd Edition (2006).chm
Cryptography And Network Security, 4th Edition (2005).chm
Cryptography For Developers (2006).pdf
Cryptography For Dummies (2004).chm
Developer's Guide To Web Application Security (2007).pdf
Firewall Fundamentals (2006).chm
Firewall Policies And VPN Configurations (2006).pdf
Firewalls For Dummies, 2nd Edition (2003).pdf
Hack The Stack - Using Snort And Ethereal To Master The 8 Layers Of An Insecure Network (2006).pdf
Hacker Disassembling Uncovered (2003).chm
Hackers Beware - Defending Your Network From The Wiley Hacker (2001).pdf
Hacking - The Art Of Exploitation (2003).chm
Hacking For Dummies (2004).pdf
Hacking del.icio.us (2006).pdf
Hacknotes - Network Security Portable Reference (2003).pdf
Hacknotes - Web Security Portable Reference (2003).pdf
Honeypots - Tracking Hackers (2002).chm
Honeypots For Windows (2005).chm
IPSec VPN Design (2005).chm
Network Security Assessment - From Vulnerability To Patch (2006).pdf
Network Security Hacks - 100 Industrial-Strength Tips & Tools, 1st Edition (2004).chm
Network Security Hacks - Tips & Tools For Protecting Your Privacy, 2nd Edition (2006).chm
Network Security Tools (2005).chm
Network Security With OpenSSL (2002).pdf
Network Tutorial, 5th Edition (2003).chm
Networking All-In-One Desk Reference For Dummies, 2nd Edition (2005).pdf
OpenVPN - Building And Integrating Virtual Private Networks (2006).pdf
PGP & GPG - Email For The Practical Paranoid (2006).pdf
Pro OpenSSH (2005).pdf
SSL VPN - Understanding, Evaluating, And Planning Secure, Web-Based Remote Access (2005).pdf
Secure Your Network For Free (2007).pdf
Sniffer Pro - Network Optimization & Troubleshooting Handbook (2002).pdf
Snort Cookbook (2005).chm
Software Piracy Exposed (2005).pdf
Stealing The Network - How To Own A Shadow (2007).pdf
The Best Damn Firewall Book Period (2003).pdf
+---java
| Beginning Cryptography With Java (2005).chm
| Beginning Programming With Java For Dummies, 2nd Edition (2005).pdf
| Beyond Java (2005).chm
| Core Java 2 - Volume I - Fundamentals, 7th Edition (2004).chm
| Core Java 2 - Volume II - Advanced Features, 7th Edition (2004).chm
| Covert Java - Techniques For Decompiling, Patching, And Reverse Engineering (2004).pdf
| Hibernate In Action (2005).pdf
| JBoss - A Developer's Notebook (2005).chm
| Pro JSF And Ajax - Building Rich Internet Components (2006).pdf
|
+---javascript
| Ajax For Dummies (2006).pdf
| Ajax Hacks - Tips & Tools For Creating Responsive Websites (2006).chm
| Ajax In Action (2006).pdf
| Ajax Patterns And Best Practices (2006).pdf
| Beginning JavaScript With DOM Scripting And Ajax - From Novice To Professional (2006).pdf
| Beginning XML With DOM And Ajax - From Novice To Professional (2006).pdf
| JavaScript In 10 Simple Steps Or Less (2004).pdf
| JavaScript Phrasebook - Essential Code And Commands (2006).chm
| Learning JavaScript (2006).chm
| Pragmatic Ajax - A Web 2.0 Primer (2006).pdf
| Pro Ajax And Java (2006).pdf
| Pro JavaScript Techniques (2006).pdf
| Professional Ajax (2006).chm
| The Book Of JavaScript, 2nd Edition (2006).pdf
|
+---oracle
| Digital Press - Oracle SQL. Jumpstart with Examples.pdf
| O'Reilly Java Programming with Oracle JDBC.pdf
| O'reilly - Mastering Oracle Sql. 2nd Ed.chm
| O'reilly - Oracle Essentials. Oracle Database 10g. 3rd Ed.chm
| O'reilly - Oracle Pl.sql Language Pocket Reference. 2nd Ed.chm
| O'reilly - Oracle SQL Plus. The Definitive Guide, 2nd Edition.chm
| OReilly.Oracle.SQL.Plus.The.Definitive.Guide.2nd.Edition.Nov.2004.eBook-DDU.chm
| Oracle Applications DBA Field Guide (2006).pdf
| Oracle Database 10g OCP Certification All-in-One Exam Guide.pdf
| Oracle.Database.10g.A.Beginners.Guide-fly.chm
| Oracle.Database.Foundations.ISBN0782143725.chm
| Oracle.Wait.Interface.A.Practical.Guide.to.Performance.Diagnostics.and.Tuning.chm
| Que.Oracle.9i.Fundamentals.I.Exam.Cram.2.Nov.2004.ISBN0789732653.chm
| Sybex.OCP.Oracle.10g.Administration.II.Study.Guide.Jan.2005.ISBN0782143687.pdf
| o'reilly - oracle pl.sql language pocket reference, 2nd edition.chm
|
+---web
| Building Scalable Web Sites (2006).chm
| Dreamweaver 8 All-In-One Desk Reference For Dummies (2006).pdf
| Dreamweaver 8 Design and Construction (2006).chm
| Dreamweaver 8 For Dummies (2006).pdf
| Hacker Web Exploitation Uncovered (2005).chm
| ImageMagick Tricks - Web Image Effects From The Command Line And PHP (2006).pdf
| Macromedia Dreamweaver 8 (2006).chm
| Macromedia Dreamweaver 8 Recipes (2005).chm
| Macromedia Dreamweaver 8 Unleashed (2005).chm
| The Photoshop Channels Book (2006).chm
| The Visibooks Guide To Dreamweaver 8 (2006).pdf
|
\---windows
Absolute Beginner's Guide To Microsoft Windows XP, 2nd Edition (2005).chm
DNS On Windows Server 2003 (2003).chm
Hacknotes - Windows Security Portable Reference (2003).pdf
Hardening Windows, 2nd Edition (2005).pdf
How To Cheat At Windows System Administration Using Command Line Scripts (2006).pdf
Learning Windows Server 2003, 2nd Edition (2006).chm
Mastering Windows Server 2003 (2003).pdf
Microsoft Encyclopedia Of Security (2003).pdf
Microsoft IIS 6.0 - Administrator's Pocket Consultant (2003).chm
Microsoft Office System 2003 Edition Inside Out (2004).pdf
Microsoft Office Visio 2007 Step By Step (2007).chm
Microsoft Windows Server 2003 Administrator's Pocket Consultant (2003).chm
Microsoft Windows Server 2003 Inside Out (2004).pdf
Microsoft Windows Server 2003 Insider Solutions (2003).chm
Microsoft Windows Server 2003 Security Guide (2003).pdf
Microsoft Windows Server 2003 Unleashed - R2 Edition (2006).chm
Microsoft Windows Small Business Server 2003 Administrator's Companion (2004).pdf
Securing IIS 6.0 (2004).pdf
Windows Server 2003 Bible - R2 And SP1 Edition (2006).pdf
Windows下20个省力的特殊的执行命令
Windows XP 总是在炫耀它可以给稳定工作多么长的时间!要想详细地了解这一信息,你可以接入 Windows的“开始菜单”,再开启“附件菜单”中的“命令提示符”,然后在其中输入“systeminfo”这个命令。电脑就会给你显示出许多有用信息,其中包括了这个系统的初次安装时间,以及本次持续运行的时间。假如你想要保留这些信息,你可以输入“systeminfo >info.txt”,这将会创建一个名为“info.txt”文本文件,你可以稍后用Windows的记事本将其打开,进行查看。(仅限于Windows XP 专业版本)
2.gpedit.msc:设置直接删除文件
你可以将 Windows XP操作系统设置为直接删除文件,而不用先将这些文件转移到回收站当中。进入开始菜单,选择“运行……”,输入“gpedit.msc”;在弹出的对话框中,选择用户设置,管理模板,Windows 组件,Windows Explorer,找到“不要将删除的文件移送到回收站”的选项。开启这个选项。
通过调整 gpedit 对话框中的相关设置,你可以对系统的运行方式和选项做出很多调整,但是请一定小心——你所作出的某些改变可能会系统运行出现问题,或造成系统的不稳定。(仅限于 Windows XP 专业版本)
3. rundll32.exe:用鼠标锁定计算机
你可以轻轻点击两下鼠标,就锁定自己的 Windows XP 系统。请先在桌面上点击鼠标右键,创建一个新的快捷方式,然后再填写项目位置的时候, 输入“rundll32.exe user32.dll,LockWorkStation”。
然后再给这个快捷方式取一个你喜欢的名字,比如“锁定计算机”。就是这么简单——现在,你只需要用鼠标双击这个快捷方式,你的电脑就会马上被锁定。如果你觉得这还不够简单的话,同时按住键盘上的“Windows 键(有XP图标的那个)”和“L”键,将会有同样的效果。
4. sysoc.inf:把隐藏的文件揪出来
Windows XP 隐藏了一些你可能想要删除或卸载的系统软件,诸如 Window非法信息essenger,但是你可以让这些软件重新显示出来。使用 Windows自带的记事本或写字板程序,编辑文本文件“/windows/inf/sysoc.inf”,搜索并删除掉关键词“hide”。然后你再进入“控制面板”的“添加/删除程序”,选择“添加或删除 Windows 组件”。你可以发现所有的系统软件都被显示出来了,现在就可以卸载它们了。
5. /?:命令行的诱惑
对于那些擅长于操作DOS批处理命令的用户来说,Windows XP也为他们提供了许多有趣的新命令。其中包括用来创建和监视系统事件的“eventcreate”和“eventtriggers”命令,用来监控各种子系统的运行状态的“typeperf'”,以及用来操作计划任务的“schtasks”。
和以前一样,输入某个命令,并紧跟其后加上“/?”的后缀,将会为你提供一系列与这个命令相关的选项。
6. ipv6 install:XP也能玩IPv6
Windows XP 能够支持 IPv6 ——下一代互联网的IP协议。但是非常不幸的是,这一功能超出了你的网络提供商(ISP)所能支持的服务,所以你只能在自己的局域网中实验这一功能。请在“运行……”中输入命令“ipv6 install'”(请不要担心,这个命令不会破坏你现有的网络设定),然后再在命令提示符中输入“ipv6/?”,你可以获得更多的相关信息。假如你根本不知道 IPv6 是什么的话,那么就请忽略掉这一段话。
7.tskill:试试用命令来终止任务
你可以最终通过在命令提示符中输入命令“taskkill/pid”和任务序号,或者仅仅输入“tskill”以及进程的序号,来终止掉某个任务。想要找出所有正在运行中的任务及其序号?请输入“tasklist”,这个命令也可以帮助你了解到更多当前系统运行状态的信息。
8. 快慢自选:浏览ZIP压缩包
Windows XP会像对待普通文件夹一样对待ZIP压缩文件包,这一功能在运行速度较快的机器上非常的方便,但是在运行速度较慢的机器上却会拖累系统的整体运行效率。如果你电脑的配置并不是很高,你可以通过在命令提示符中输入命令“regsvr32 /u zipfldr.dll”来关闭这一功能 ,让 WindowsXP 把压缩文件包丢在一边。假如你稍候改变了自己的主意,你可以通过输入“regsvr32 zipfldr.dll”来恢复这一功能。
9. ClearType:保护你的心灵之窗
Windows XP 系统支持“ClearType”—— 微软公司的反锯齿字体显示技术 ——但是在默认设置下,这一显示效果并没有被打开。该项功能非常值得尝试,尤其是在你使用电脑多年,糟糕的电脑屏幕已经使你的双眼变得无比疲惫,视力开始急剧下降的时候。为了开启这个效果,请用鼠标右键点击电脑桌面,在弹出菜单中选择“属性”,“外观”,“效果”,从第二个下拉菜单中选中“ClearType”选项,并选择开启。这样就可以期望在笔记本电脑上获得最佳的显示效果。假如你希望在WindowsXP的欢迎登录画面中也是用到“ClearType”,请将系统注册表中的“HKEY_USERS/.DEFAULT/ControlPanel/Desktop/Font非法信息oothingType”选项的值设置为2。
10. 远程协作:不再受限内网
你可以通过 Windows XP 的远程协作功能来帮助某个正在家庭局域网上使用网络地址转换(network addresstranslation,NAT)的朋友,虽然这不是自动完成的。让你的朋友给你发送一封远程协作邀请,然后编辑这个文本。在RCTICKET属性下,你可以看到一个NAT IP 地址,可能是“192.168.1.10”之类的形式。用你朋友真实的IP地址来替换这一内网地址——他们可以在 www.whati非法信息yip.com 网站上查询到自己的真实IP地址——然后让它们确认一下自己防火墙上的3389端口是开启的,随后你就可以直接进入那台有问题的电脑了。
11.多用户操作:不必注销当前用户
你可以不需要注销掉现有的用户身份,就以另一个用户身份运行程序。用鼠标右键点击相应的执行程序的图标,选择“运行方式……”,然后输入你想要使用的用户名及其相应的密码。该设置仅仅会被应用在这次程序运行上。当你需要以系统管理员的身份来安装一个程序的时候,这个技巧就会非常有用。但是请注意,你可以在系统当中同时以多个不同的用户身份运行多个程序,这样做也许会非常有趣,但是会对系统产生不可预见的效果。
12. 瞬时开始自动更新:消除你等待的烦恼
Windows XP 将会非常顽固地提示你检查自动更新,注册一个微软 Passport,使用 Windows Messenger以及等等等等。虽然在一段时间过后,这种凡人的打扰信息就会逐渐消失,但是假如你感觉自己等不到那个时候就会发疯的话,请运行“Regedit”,到系统注册表的
“HKEY_CURRENT_USER/Software/microsofthttp://windows.chinaitlab.com
/CurrentVersion/Explorer/Advanced”当中,创建一个名为“Ena禁用词语eBalloonTips”的“DWORD”数值,将其的值设置为0。
13.自动登录:不必每次输入密码
你可以选择在 Windows XP启动的时候,不需要输入用户名和密码就直接进入系统桌面。请在开始菜单中选择“运行”,并输入命令“controluserpasswords2”,这个命令将会开启用户账号管理程序。在“用户”标签中,找到“为了使用这台电脑,用户必须输入用户名和密码”的选项,点击取消这个选项,并保存设置。一个自动登录设置对话框将会出现;请输入您希望使用的自动登录的用户名和密码。
14. 请个保姆:自动删除临时文件
Internet Explorer 6浏览器可以自动地删除临时文件,但这需要你进行相关的设置。请打开网络浏览器,选择“工具/Internet选项……”,选择“高级”,进入到“安全”区域,选取“当浏览器关闭时,清空 Internet 临时文件夹”的选项,就可以了。
15. 网络情况随时掌握:体验免费网络指示灯
Windows XP 附带了一个免费的网络活动指示灯的,因为你无法看见自己网卡上的 LEDs指示灯。请用鼠标右键点击电脑桌面上“网络邻居”的图标,选择属性。再用右键点击你的局域网链接或拨号连接的图标,选择属性,然后选中“连接后再通知区显示出图标”的选项。选择保存设置。然后你就可以看见在自己电脑桌面的右下角的任务栏当中,会出现一个小小的网络图标,并会在你的网络通讯激活的时候闪闪发光。
16.不再延时:打造快速开始菜单
有些时候,Windows XP的开始菜单的弹出速度显得是太过于从容不迫了,但是你可以加速这一过程。你只需要进入系统注册表的“HKEY_CURRENT_USER/ControlPanel/Desktop/MenuShowDelay ”选项,将默认设置 400 改为看起来更为爽快的数字,比如说 0 。
17. 无需工具即可批量改名
你可以在 Windows窗口当中一次对许多文件同时进行重命名。你需要做的是,在窗口当中高亮选中所有你需要重新命名的文件,然后用右键点击其中一个,并对它进行重新命名。其他被选中的文件也将会被命名为这个名字,只是在名字的后面会被用括号加上不同的数字以示区分。同样地,在文件夹当中你也可以通过“按照名称查看”来重新排列图标,或是“按照类型”排列。
18. 边听边看:定制你的Media Player
Windows Media Player 在播放 CD 音乐的同时,可以显示出该音乐所属的相关专辑的图片 ——假如当你从自己的CD中向电脑里面拷贝音乐的时候,它在互联网上找到相关图片的的话。假如它没有找到,或是你已经有了许多现成的WMP音乐文件,你可以将自己现有的专辑封面图片放置在与这些音乐相同的文件夹当中。你只需要将这个图片命名为“文件夹名称.jpg”的格式,Windows MediaPlayer 就可以识别出该图片,并将其当中这些音乐的专辑封面,在播放时显示。
19. Windows键:不同组合作用不同
“Windows 键 + Break 键”会显示出系统属性对话框;“Windows 键 + D 键”会显示出电脑桌面;“Windows键 + Tab 键”可以在任务栏图标上进行切换。(Windows 键指的是键盘上带Windows XP 标志的那个按键)
20.避免愚蠢操作:XP当个审核员
Windows XP 相当了解一般的普通用户根本不知道自己是在做些什么。因此,它不会让你执行那些真正愚蠢的操作,比如说删除Windows 的系统目录(除非你坚持要花费几个小时来使它相信你真的想要这样)。
原文地址 http://www.15897.com/blog/post/244.html
2007年10月28日星期日
Linux Power Tools: (III) System Administration Tools
Chapter 9: Bypassing Automatic Configurations to Gain Control
Debian
系统启动 /etc/inittab 调用 /etc/init.d/rcS
SysV启动脚本 /etc/rc?.d
运行级别和启动X /etc/X11/default-display-manager
cron: /etc/crontab 调用 /etc/cron.interval
超级服务 inetd, xinetd
邮件服务器
模块update-modules 根据/etc/modutils目录自动创建 /etc/modules.conf
网络配置: 启动脚本/etc/init.d/networking 配置文件/etc/network
启动文件: /etc/rc.boot 以及 /etc/rcS.d
SysV 启动脚本模板
#!/bin/bash
case "$1" in
start)
/usr/local/bin/bigserv
;;
stop)
/usr/bin/killall bigserv
;;
restart)
$0 stop
$0 start
;;
esac
~/.xinitrc ==> startx
~/.xsession ==> XDM,KDM,GDM
~/.vnc/xstartup ==> VNC server
Chapter 10: Using Multiple OSs
GRUB
# grub
grub> find /boot/grub/stage1
(hd0,5)
grub> root (hd0,5)
grub> setup (hd0)
grub> quit
Chapter 11: Managing Packages
Chapter 13: Managing Printers
Chapter 14: Programs and Processes
ps
top
pstree
w
jobs
lsof
netstat
nice/renice
kill/killall
Chapter 15: Creating a Custom Kernel
Chapter 16: Optimizing X Configuration
Chapter 17: Protecting Your System with Backups
cp
cpio
dump
smbtar
tar
Chapter 18: System Security
攻击方法
好的密码
本地服务
# netstat -ap
$ nmap -sT www.debsir.org
Part IV: Networking Tools
Chapter 19: Basic Network Configuration
网卡
驱动 /etc/modules.conf
DHCP
客户端 dhclient/pump 调用程序 /sbin/ifup 配置文件 /etc/network/interfaces, /etc/dhclient.conf RedHat /etc/sysconfig/network,/etc/sysconfig/network-scripts/ifcfg-eth0
配置生效: # /etc/rc.d/init.d/network stop|start
查看进程: $ ps ax | grep dhcpcd
静态地址
测试
Xtraceroute
优化网络
Chapter 20: Controlling Network Access
防火墙工具
Shorewall 调用配置文件 /etc/sysconfig/iptables
Red Hat Security Level Configuration: redhat-config-securitylevel 和 lokkit 调用 iptables
Knetfilter 配置文件 /etc/iptables_rules.cfg
防火墙模板
#!/bin/bash
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Let traffic on the loopback interface pass
iptables -A OUTPUT -d 127.0.0.1 -o lo -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT
# Let DNS traffic pass
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# Let clients' TCP traffic pass
iptables -A OUTPUT -p tcp --sport 1024:65535 -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 1024:65535 -m state \
--state ESTABLISHED,RELATED -j ACCEPT
# Let local connections to local SSH server pass
iptables -A OUTPUT -p tcp --sport 22 -d 172.24.1.0/24 -m state \
--state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 172.24.1.0/24 -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT
TCP Wrappers
通常由 inetd 调用
配置文件 /etc/inetd.conf /etc/hosts.allow 和 /etc/hosts.deny
服务名解析 /etc/services
TCP Wrappers配置格式(/etc/hosts.allow 和 /etc/hosts.deny)
service-names : client-list [: shell-command ]
service-names : 例如 in.ftpd 或 in.telnetd
client-list : ip地址或ip地址范围, 主机名, 域名, 用户名 例如 172.24.45.0/24 EXCEPT 172.24.45.72
/etc/hosts.allow 格式
in.telnetd : 172.24.45.2 trex.pangaea.edu
vsftpd : 172.24.45. EXCEPT 172.24.45.1
imapd : .pangaea.edu EXCEPT router.pangaea.edu
ipop3d : sue@trex.pangaea.edu
xinetd
格式
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1
user = root
server = /usr/sbin/swat
disable = no
}
使用Jail
chroot
Chapter 21: Detecting Intruders
Tripwire
策略文件格式:
TWBIN = /usr/sbin ;
# Tripwire binaries
(
rulename = "Tripwire Binaries",
)
{
$(TWBIN)/siggen -> $(ReadOnly) ;
$(TWBIN)/tripwire -> $(ReadOnly) ;
$(TWBIN)/twadmin -> $(ReadOnly) ;
$(TWBIN)/twprint -> $(ReadOnly) ;
}
/usr/bin -> $(ReadOnly) ;
/etc -> $(Dynamic) ;
初始化数据库
/etc/tripwire/twinstall.sh
tripwire --init
校验
tripwire --check
修改Tripwire配置
twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt # 修改配置文件
twadmin --create-polfile -S /etc/tripwire/site.key /etc/tripwire/twpol.txt # 修改策略
tripwire --update-policy -S /etc/tripwire/site.key /etc/tripwire/twpol.txt # 创建新的策略文件
tripwire --update --twrfile /var/lib/tripwire/report/knox.luna.edu-20031212-155357.twr # 更新数据库
chkrootkit
Part V: Server Tools
Chapter 22: Running Servers
SysV启动脚本
位置: Debian /etc/init.d /etc/rc?.d Redhat /etc/rc.d/init.d/ /etc/rc.d/rc?.d
chkconfig/ntsysv/redhat-config-services/ksysv
本地启动脚本: /etc/rc.boot
Chapter 23: Getting More from a Web Server
web服务器: apache/roxen/zeus/kHTTPd
apache服务器配置
Chapter 24: Serving Files
FTP
NFS
Samba
Chapter 25: Delivering E-Mail
服务器: Sendmail/Postfix/Exim/qmail
Chapter 26: Providing Remote Login Access
字符模式远程访问: OpenSSH
GUI 远程访问: XDMCP Server/VNC
Chapter 27: Miscellaneous Servers
DHCP
DNS
NTP
Linux Power Tools: (II) User Tools
Chapter 4: Mastering Shells and Shell Scripting
指定用户shell /etc/passwd
tony:x:1000:1000:tony,,,:/home/tony:/bin/bash
用命令修改用户默认shell
# usermod -s /bin/tcsh sandro
普通用户修改自己的shell
$ chsh -s /bin/tcsh
set show-all-if-ambiguous on # 设定 tab 键自动补齐
配置文件/etc/inputrc
配置shell
全局配置文件 /etc/profile 和 /etc/profile.d目录(login相关) /etc/bashrc 或 /etc/bash.bashrc (login无关)
用户配置文件 ~/.profile (login相关) ~/.bashrc (login无关)
shell 脚本
Chapter 5: Doing Real Work in Text Mode
定义虚拟终端 /etc/inittab
通过Alt+F1 到 Alt+F6调用
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
如果运行了X, 则在 Alt+F7
重要命令
文件系统 mount umount fdformat mkfs
文件管理 cp ln mv rm ls chown chgrp chmod mkdir rmdir cd pwd
文件信息 df du stat lsof uptime free hostname who dmesg
tip 对应错误信息存储在 /var/log/dmesg
字符模式环境
配置环境 /etc/termcap /usr/share/terminfo
修改终端字体
相关命令 consolechars, setfont, fontconfig
$ setfont -v /usr/lib/kbd/consolefonts/t.psf.gz
Debian 命令 consolechars 软件包 console-tools 字体包 console-data 和 fonty 字体文件位置 /usr/share/consolefonts
色彩 alias ls='ls --color'
Chapter 6: Getting the Most from a Desktop Environment
从字符模式或使用XDM登录X 会读取 .xsession 或 .xinitrc
XDM 使用 .xsession, startx 使用 .xinitrc
startkde ==> KDE(~/.kde), gnome-session ==> GNOME(~/.gnome2), startxfce ==> XFce
KDE
GNOME
Chapter 7: Using Linux for Office Productivity
OpenOffice.org
KOffice
GNOME Office
LaTeX
Emulators
字体
打印机
Chapter 8: Miscellaneous User Tools.
音频
数码相机
GIMP
浏览器
E-Mail 客户端
2007年10月27日星期六
Linux Power Tools: (I) Hardware Tools 2
测试与优化磁盘性能
# /sbin/hdparm -Tt /dev/hdb (针对ATA硬盘)
# /sbin/hdparm -v /dev/hdb 查看硬盘参数
优化硬盘性能
参阅hdparm mainpage
优化硬盘分区
1. 将经常访问的数据存储在硬盘内圈
2. 交换分区放置在硬盘内圈
3. 将性能相关的大数据文件放在硬盘的前段, 比如数据库文件
3. 相关的分区应该放在一起
4. 对于旧电脑, /boot分区有1024柱面(约8G)的限制
5. 多硬盘性能会提升
Chapter 3: Using External Peripherals
配置USB,RS-232, 并口
配置键盘 Debian
Keymap文件位置 /etc/console and /usr/share/keymaps
调用脚本 /etc/init.d/keymap.sh
系统提供键盘映射文件位置 /usr/share/keymaps
调整键盘响应 # kbdrate -r 12 -d 250
rate (-r) delay (-d)
X下的键盘配置
setxkbmap -v # 查看当前键盘配置
$ xmodmap -e 'keycode 23 = Tab' # 重新设定Tab键
.Xmodmap # 用户设定
鼠标配置
Option "Device" "/dev/mouse"
/dev/mouse 为到 /dev/psaux 的符号链接 用于PS/2鼠标
/dev/usb/mouse0 USB鼠标
Option "Protocol" "ps/2"
imps/2 微软智能鼠标协议
两键鼠标(模拟三键)
Option "Emulate3Buttons"
Option "Emulate3Timeout" "60"
配置滚轮鼠标
需要协议 imps/2
Option "ZAxisMapping" "4 5"
配置扫描仪
Linux Power Tools: (I) Hardware Tools 1
by Roderick W. Smith ISBN:0782142265
Sybex ? 2003 (644 pages)
Part I: Hardware Tools
Chapter 1: Optimizing System Architecture Usage
编译参数的针对平台的优化: -march=pentium4
驱动硬件:
1. 将驱动编译进内核
2. 以模块方式加载驱动 模块位置 /lib/modules/version
insmod:单个模块加载命令, 需要指定模块名称或模块文件文件名, 比如加载via-rhine.o, 可以insmod via-rhine, 问题: 可能会因为依赖问题而模块加载失败.
modprobe: 加载模块同时解决依赖问题, 其他同insmod
depmod: 创建模块依赖列表, 供modprobe使用
rmmod: 卸载内核模块, 与insmod 相反, 使用-r 或 --stacks 则与modprobe相反
加载模块时的通用参数 -r 模块闲置不用时, 即自动卸载模块.
内核守护进程: kerneld
模块强制加载(通常只加载版本匹配的模块): -f
自动加载模块
配置文件: /etc/modules.conf(在Debian 中是/etc/modules)
debian的方式: 使用目录树方式/etc/modutils: update-modules 根据此目录生成/etc/modules.conf文件 因此不应该直接修改此配置文件, 如果要增加模块, 可以修改 /etc/modules文件 或 /etc/modutils/目录, 然后用 update-modules 更新
alias 为设备指定驱动 options 指定模块加载参数
Delivering Clear Sound
OSS, ALSA 驱动
/proc 文件系统说明
了解您的硬件
$ cat /proc/version 查看内核信息
修改硬件设定
2007年10月24日星期三
2007年10月23日星期二
学习笔记:VIM-1 基本操作4
基本恢复
vim -r filename
恢复未命名文件
vim -r "" 需要进入原来的目录执行这个命令
vim -r 列出可用交换文件
使用指定交换文件
vim -r filename.swp
tips
单词替换
:%s/four/4/g
"%" 范围前缀表示在所有行中执行替换。最后的 "g" 标记表示替换行中的所有匹配点。
:%s/\
:%s/\
有如下样式的一个名字列表:
Doe, John
Smith, Peter
你想把它改成:
John Doe
Peter Smith
这可以用一个命令完成:
:%s/\([^,]*\), \(.*\)/\2 \1/
"from" 部分是:\([^,]*\), \(.*\)
第一对 \( 和 \) 之间 [^,] 匹配除逗号外的任何东西 * 任意多次
第二对 \( 和 \) 之间 . 匹配任意字符 * 任意多次
在 "to" 部分,我们有 "\2" 和 "\1"。这些称为 "反向引用"。它们指向前面模式中的
\( 和 \) 间的部分。
以在替换部分使用多达 9 个反向引用。"\0" 表示整个匹配部分。
单词统计
g CTRL-G 统计的是整个文件的字数
要在 "g" 后面输入一个空格,这里只是方便阅读
选中你要计算字数的文本,然后输入 "g CTRL-G"
删除多余的空格
:%s/\s\+$//
% 指明范围
\s\+$ 这表示行末 ($) 前的一个或者多个 (\+) 空格 (\s)
匹配列表
:set is CTRL-D
q: 打开命令行窗口
执行shell命令
:!{command}
:[range]!{program} 经由 {program} 过滤文本
编辑一个目录
:edit .
查看当前目录
:pwd
gf 在当前目录下查找光标所在单词为文件名的文件
显示缓冲区列表
:ls
在多个缓冲区间切换
CTRL-^
编辑指定缓冲区
:buffer n n为缓冲区号
新窗口中打开一个缓冲区:
:sbuffer n
netbeans下不能输入中文问题的解决
现象: Netbeans下不能输入中文, 但显示正常
问题:系统编码为zh_CN.UTF-8 Netbeans编码为zh_CN.GBK
解决:调整系统与netbeans编码相一致
附:
指定Netbeans使用的编码
在netbeans-5.5.1/etc/netbeans.conf中加入:
export LC_ALL="zh_CN.GBK"
指定netbeans使用的JAVA的位置
在netbeans-5.5.1/etc/netbeans.conf中加入:
netbeans_jdkhome="/usr/lib/jvm/java-1.5.0-sun"
学习笔记:VIM-1 基本操作3
分割当前窗口
:split
窗口间跳转
CTRL_W
关闭窗口
:close 避免最后一个窗口时退出vim
:only 关闭除当前窗口外的其他窗口
用另外一个文件分割窗口
:split filename
打开窗口编辑一个新文件
:new
退出所有窗口
:qall
保存所有窗口
:wall
显示文件差异
vimdiff filename1 filename2
作大修改
重复前一次修改
"."
替换
:[range]substitute/from/to/[flags]
[range] % 作用于全部行
substitute s 简写
[flags] g 全局 即对行中的所有匹配点起作用
[flags] c 替换前确认
命令范围
范围总是放在一个命令前面
:1,5s/this/that/g 即在1到5 行上执行替换
. 表示当前行
:.write filename 将当前行写入一个文件
文件的第一行行号为1, 最后一行为$ 即 % 为 1,$ 的缩写
向前查找
?xxxx?
向后查找
/xxxx/
读取文件的一部分
:read filename
保存部分行
:.,$write filename
改变大小写
gUw 当前单词大写
guw 当前单词小写
g~ 大小写切换
外部程序
:shell
!command
刷新屏幕
CTRL-L
学习笔记:VIM-1 基本操作2
:set encoding=cp936
菜单显示乱码
:so $VIMRUNTIME/delmenu.vim
:so $VIMRUNTIME/menu.vim
建议字体: Bitstream Vera Sans Mono
:set guifont ?
ynw 拷贝n个单词
p 在光标后粘贴
yy拷贝一行
"*yy (一个双引号加一个星号)。
临时设置语法高亮
:syntax enable
临时清除语法高亮
:syntax clear
编辑另一个文件
:edit foo.txt //Vim 会关闭当前文件并打开foo.txt
查看错误信息
:help 错误标号
在已经打开的多个文件见切换
CTRL-^
:set backup 即~
定义备份文件后缀
:set backupext=.bak
保留原始文件
:set patchmode=.orig
以只读模式打开文件
vim -M filename
取消只读模式
:set write
文件另存
:saveas filename
wget 使用技巧
wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget。
$ wget -r -np -nd http://example.com/packages/
这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,
-np
的作用是不遍历父目录,-nd
表示不在本机重新创建目录结构。$ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/
与上一条命令相似,但多加了一个
--accept=iso
选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。$ wget -i filename.txt
此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。
$ wget -c http://example.com/really-big-file.iso
这里所指定的
-c
选项的作用为断点续传。$ wget -m -k (-H) http://www.example.com/
该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用
-H
选项。
原文地址 http://linuxtoy.org/archives/wget-tips.html
Debian 下时区的设定
或直接修改配置文件/etc/timezone,内容为所要设定的时区
tonybox:~# cat /etc/timezone
Asia/Shanghai
tonybox:~#
然后修改 /etc/default/rcS文件, 设定是否使用UTC, 如果要令BIOS的时间为本地时间, 则:
UTC=no
netstat 及 traceroute
# netstat -[antulpc] <==与网路介面有关的参数
参数:
与路由 (route) 有关的参数说明:
-r :列出路由表(route table),功能如 route
-a :列出所有的连线状态,包括 tcp/udp/unix socket 等;
-t :仅列出 TCP 封包的连线;
-u :仅列出 UDP 封包的连线;
-l :仅列出有在 Listen (监听) 的服务之网路状态;
-p :列出 PID 与 Program 的名;
-c :可以设定几秒钟后自动更新一次;
# netstat -an <==列出目前的所有网路连线状态,使用 IP 与 port number
参数:
-n :可以不必进行主机的名称解析,单纯用 IP ,速度较快!
-w :若对方主机在几秒钟内没有回声就宣告不治...预设是 5 秒
-i :指定网络接口
Error: REPORT of '/svn/!svn/vcc/default': 200 OK
Error: REPORT request failed on '/svn/!svn/vcc/default'
Error: REPORT of '/svn/!svn/vcc/default': 200 OK (http://code.djangoproject.com)
莫名其妙
可能是网络延迟的缘故, 多次 svn update 就可以了
OpenSSL Command-Line HOWTO
Paul Heinlein <heinlein@madboa.com>
The openssl application that ships with the OpenSSL libraries can perform a wide range of crypto operations. This HOWTO provides some cookbook-style recipes for using it.
常见数字证书格式和文件扩展名
PKCS#7 Cryptographic Message Syntax Standard
PKCS#10 Certification Request Standard
PKCS#12 Personal Information Exchange Syntax Standard
X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
PKCS#7 常用的后缀是: .P7B .P7C .SPC
PKCS#12 常用的后缀有: .P12 .PFX
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRTX.509
PAM 编码(Base64)的后缀是: .PEM .CER .CRT
在OpenSSL的工具集中,一般可以使用 -outform -inform 指定 DER 还是 PAM 格式。
例如:
openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER
OpenSSL 中 PEM 到 PKCS#12 的转换,参考命令:
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
OpenSSL 中 PKCS#12 到 PEM 的转换,可参考:
openssl pkcs12 -in Cert.p12 -out Key.pem
openssl x509 -in Key.pem -text -out Cert.pem
apache2下的限速模块
Bandwidth Module : Restrict the number of simultaneous connections per vhost
mod_limitipconn : This is the distribution page for the Apache module mod_limitipconn.c, which allows web server administrators to limit the number of simultaneous downloads permitted from a single IP address.
dns信息及nslookup 使用
ipconfig /displaydns
清空本机DNS缓存信息
ipconfig /flushdns
查询dns信息
nslookup [-option] [hostname] [server]
nslookup> type=X //指定查询类型 A、ANY、CNAME、MX、NS、PTR、SOA、SRV
nslookup> server NAME //设定查询DNS服务器
nslookup> ls domain //返回域名相关的所有地址
2007年9月22日星期六
学习笔记:VIM-1 基本操作
:scriptnames
删除两行间的换行符
J
重做
CTRL-R
撤销
u
行撤销
U
括号匹配
%
移动到指定行
nG(G会把光标移到文件末)
设置行号
:set number
关闭行号
:set nonumber
查看配置文件列表
:scriptnames
删除两行间的换行符
J
重做
CTRL-R
撤销
u
行撤销
U
括号匹配
%
移动到指定行
nG(G会把光标移到文件末)
设置行号
:set number
关闭行号
:set nonumber
滚屏
CTRL-U CTRL-D
CTRL-F CTRL-B
查找
/正向 ?反向
n/N 下一个/上一个
忽略大小写
:set ignorecase
\> 表示单词末尾/\<单词开头 比如/\<the\> 将会查找单词 the
高亮显示匹配
:set hlsearch
可视模式
字符选择
v 例如vll
行选择
V 例如Vjj
拷贝
y 复制
p 粘贴
2007年9月21日星期五
安装subversion
安装apache2
apt-get install apache2
安装subversion
apt-get install libapache2-svn subversion
创建目录
mkdir /home/svn
创建项目
svnadmin create /home/svn/foo
由于要用apache2来提供服务, 更改目录权限
chown www-data.www-data /home/svn/foo -R
配置apache2
/etc/apache2/mods-available/dav_svn.conf
DAV svn //表示dav启用svn支持
SVNParentPath /home/svn //表示使用SVNParent方式,并且仓库的物理路径为/home/svn
AuthType Basic //激活基本认证,就是用户名/密码
AuthName "Subversion Repository" //用来说明何时弹出要求用户输入认证信息的认证对话框
AuthUserFile /etc/apache2/dav_svn.passwd //表示用户认证文件是/etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz ////表示用户权限文件是 /etc/apache2/dav_svn.authz
#
Require valid-user //指定只有输入了正确的用户/密码的用户可以访问URL
#
如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面几行
Require valid-user
to
Require valid-user
配置访问权限
/etc/apache2/dav_svn.authz(/etc/apache2/mods-available/dav_svn.conf指定的)
[foo:/]
* =
tony = rw
然后在添加用户到 /etc/apache2/dav_svn.passwd
htpasswd -c /etc/apache2/dav_svn.passwd tony
访问测试
http://localhost:81/svn/foo
现在因为我们还没有往svn是添加任何东西,所以我们看到的是"Revision 0: /"
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
http://man.chinaunix.net/linux/debian/debian_learning/ch09s14.html
http://mattl.co.uk/apache2subversiondebianhowto.html
http://www.howtoforge.com/apache_subversion_repository_p2
http://www.howtoforge.com/debian_subversion_websvn
生成私钥
openssl genrsa 1024 > gzjs.gov.cn.key
生成证书签署申请CSR
openssl req -new -key gzjs.gov.cn.key > gzjs.gov.cn.csr
用自己的私钥签署申请,生成证书
openssl req -x509 -key gzjs.gov.cn.key -in gzjs.gov.cn.csr > gzjs.gov.cn.crt
添加以下内容到站点配置文件
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/gzjs.gov.cn.crt
SSLCertificateKeyFile /etc/apache2/ssl/gzjs.gov.cn.key
添加一下内容
SSLRequireSSL
到/etc/apache2/mods-available/dav_svn.conf文件
重启
http://wiki.debian.org.hk/w/Generate_SSL_cert
2007年9月19日星期三
ab 压力测试
# ab -c 1000 -n 100000 http://127.0.0.1:8080/gzjsgov/index.html
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests
Server Software: Apache-Coyote/1.1
Server Hostname: 127.0.0.1
Server Port: 8080
Document Path: /gzjsgov/index.html
Document Length: 7760 bytes
Concurrency Level: 1000
Time taken for tests: 49.334775 seconds
Complete requests: 100000
Failed requests: 12
(Connect: 0, Length: 11, Exceptions: 1)
Write errors: 0
Total transferred: 799601930 bytes
HTML transferred: 777070880 bytes
Requests per second: 2026.97 [#/sec] (mean)
Time per request: 493.348 [ms] (mean)
Time per request: 0.493 [ms] (mean, across all concurrent requests)
Transfer rate: 15827.80 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 376 1235.8 42 21067
Processing: 12 97 331.6 55 7291
Waiting: 0 84 326.1 47 7257
Total: 30 473 1352.8 109 21153
Percentage of the requests served within a certain time (ms)
50% 109
66% 133
75% 148
80% 160
90% 223
95% 3129
98% 3768
99% 9044
100% 21153 (longest request)
2007年9月17日星期一
学英语,有捷径
未撞之前啊,小伙子才刚开始学英语
医生们从技术上这样解释:车祸使他脑内某些组织重组了
不幸的是,2天后,小伙子的技能就消失了,而且对那场车祸毫无记忆
然后,他又高高兴兴地去学英语了
Diggers:
D-1:有一次我不小心摔了Vista的本本,重启后就变Ubuntu了
D-2:这是说明英语能力与脑损伤有联系的第一手临床证据
D-3:对啊对啊,上次一个美国人拿自己头吹气,结果成英国佬的口音了。这不完全说明英国人都与精神错乱有点关系
D-4:Oh,快撞我一下吧,我明天要考西班牙语
2007年9月16日星期日
man 使用技巧两则
man 其实是调用 less 来显示手册页的。因此,在阅读内容比较长的页面时,可以使用书签来标记需要重复阅读的重要内容。标记的方法为:先按 m 键,然后在 mark: 后输入标记字母,如 a。需要说明的是,标记符是区分大小写的,也就是说 a 与 A 是两个不同的标记符。
当你需要返回先前设置的书签时,可以按 ‘ 键(单引号)。此时会显示 goto mark:,输入你设置的标记符即可。
2.测试命令
当你在阅读 man 手册页时想要对命令的用法进行尝试的话,那么可以使用 !。这让你不必打开新的终端,也不用离开 man 手册的阅读页面。在按下 ! 之后,你就可以自由输入所要测试的命令了。完成后,按回车键将返回到 man 手册的阅读页面。
http://linuxtoy.org/archives/man-tricks.html
中国茶和茶具的搭配
陶瓷器的色泽与胎或釉中所合矿物质成分密切相关,而相同的矿物质成分因其含量高低,也可变化出不同的色泽。陶器通常用含氧化铁的粘土烧制,只是烧成温度、氧化程度不同,色泽多为黄、红棕、棕、灰等颜色。而瓷器的花色历来品种丰富,变化多端。
茶具的色泽主要指制作材料的颜色和装饰图案花纹的颜色,通常可分为冷色调与暖色调两类。冷色调包括蓝、绿、青、白、厂、黑等色,暖色调包括黄、橙、红、棕等色。茶具色泽的选择主要是外观颜色的选择搭配。其原则是要与茶叶相配。饮具内壁以白色为好,能真实反映茶汤色泽与明亮度。同时,应注意一套茶具中壶、盅、杯等的色彩搭配,再辅以船、托、盖置,做到浑然一体。如以主茶具色泽为基准配以辅助用品,则更是天衣无缝。各种茶类适宜选配的茶具色泽大致如下:
名优绿茶:透色玻璃杯,应无色、无花、无盖。或用白瓷、青瓷、青花瓷无盖杯。
花茶:青瓷、青花瓷等盖碗、盖杯、壶杯具。
黄茶:奶白或黄釉瓷及黄橙色壶杯具、盖碗、盖杯。
红茶:内挂白釉紫砂、白瓷、红釉瓷、暖色瓷的壶杯具、盖杯、盖碗或咖啡壶具。
白茶:白瓷或黄泥炻器壶杯及内壁有色黑瓷。
乌龙茶:紫砂壶杯具,或白瓷壶杯具、盖碗、盖杯。也可用灰褐系列炻器壶杯具。
http://eat.csonline.com.cn/jcss/200709/t20070903_728562.htm
2007年9月14日星期五
find和xargs使用详解
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( N F S ),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指3 0 G字节以上的文件系统)。
find命令的一般形式为:
find pathname -options [-print -exec -ok ...]
让我们来看看该命令的参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的s h e l l命令。相应命令的形式为' command' { } ;,注意{ }和;之间的空格。
-ok: 和- e x e c的作用相同,只不过以一种更为安全的模式来执行该参数所给出的s h e l l命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find命令选项
-name:按照文件名查找文件。
-perm:按照文件权限来查找文件。
-prune:使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有- a t i m e和- c t i m e选项,但它们都和- m t i m e选项。
-nogroup:查找无有效所属组的文件,即该文件所属的组在/ e t c / g r o u p s中不存在。
-nouser:查找无有效属主的文件,即该文件的属主在/ e t c / p a s s w d中不存在。
-newer file1 ! file2:查找更改时间比文件f i l e 1新但比文件f i l e 2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/ e t c / f s t a b中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统m o u n t点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用c p i o命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变文件状态的文件
-ctime n
查找系统中最后n*24小时被改变文件状态的文件
-mmin n
查找系统中最后N分钟被改变文件数据的文件
-mtime n
查找系统中最后n*24小时被改变文件数据的文件
使用exec或ok来执行shell命令
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的
(在有些操作系统中只允许- e x e c选项执行诸如l s或ls -l这样的命令)。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行r m命令删除文件之前,最好先用l s命令看一下,确认它们是所要删除的文件。
e x e c选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个,最后是一个分号。
为了使用e x e c选项,必须要同时使用p r i n t选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的- e x e c选项中
# find . -type f -exec ls -l { } ;
-rw-r--r-- 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r--r-- 1 root root 12959 2003-02-25 ./conf/magic
-rw-r--r-- 1 root root 180 2003-02-25 ./conf.d/README
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出。
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec rm { } ;
记住,在s h e l l中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如m v或r m命令时,可以使用- e x e c选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
在下面的例子中, find命令在当前目录中查找所有文件名以. L O G结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。
$ find . -name "*.conf" -mtime +5 -ok rm { } ;
< rm ... ./conf/httpd.conf > ? n
按y键删除文件,按n键不删除。
任何形式的命令都可以在- e x e c选项中使用。
在下面的例子中我们使用g r e p命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。
# find /etc -name "passwd*" -exec grep "sam" { } ;
sam:x:501:501::/usr/sam:/bin/bash
find命令的例子
查找当前用户主目录下的所有文件,下面两种方法都可以使用:
$ find $HOME -print
$ find ~ -print
为了在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件,可以用:
$ find . -type f -perm 644 -exec ls -l { } ;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径,可以用:
$ find / -type f -size 0 -exec ls -l { } ;
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
为了查找系统中所有属于root组的文件,可以用:
$find . -group root -exec ls -l { } ;
-rw-r--r-- 1 root root 595 10月 31 01:09 ./fie1
下面的find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。该命令只检查三位数字,所以相应文件的后缀不要超过999。
先建几个admin.log*的文件 ,才能使用下面这个命令
$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok
rm { } ;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n
为了查找当前文件系统中的所有目录并排序,可以用:
$ find . -type d &line;sort
为了查找系统中所有的r m t磁带设备,可以用:
$ find /dev/rmt -print
2.xargs
在使用find命令的- e x e c选项处理匹配到的文件时, f i nd命令将所有匹配到的文件一起传递给e x e c执行。但有些系统对能够传递给e x e c的命令长度有限制,这样在f i nd命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是x a rg s命令的用处所在,特别是与f i nd命令一起使用。
find命令把匹配到的文件传递给x a rg s命令,而x a rg s命令每次只获取一部分文件而不是全部,不像- e x e c选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用- e x e c选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用x a rg s命令则只有一个进程。另外,在使用x a rg s命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
来看看x a rg s命令是如何同find命令一起使用的,并给出一些例子。
下面的例子查找系统中的每一个普通文件,然后使用x a rg s命令来测试它们分别属于哪类文件
#find . -type f -print &line; xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory: ISO-8859 text
......
在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:
$ find / -name "core" -print &line; xargs echo "" >/tmp/core.log
上面这个执行太慢,我改成在当前目录下查找
#find . -name "file*" -print &line; xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6
在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
# ls -l
drwxrwxrwx 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 httpd.conf
# find . -perm -7 -print &line; xargs chmod o-w
# ls -l
drwxrwxr-x 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf
用g r e p命令在所有的普通文件中搜索hostname这个词:
# find . -type f -print &line; xargs grep "hostname"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
用g r e p命令在当前目录下的所有普通文件中搜索hostnames这个词:
# find . -name * -type f -print &line; xargs grep "hostnames"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
注意,在上面的例子中, 用来取消find命令中的*在s h e l l中的特殊含义。
3.find命令配合使用e x e c和x a rg s可以使用户对所匹配到的文件执行几乎所有的命令。
下面是find一些常用参数的例子,有用到的时候查查就行了,像上面前几个贴子,都用到了其中的的一些参数,也可以用man或查看论坛里其它贴子有find的命令手册
a.使用name选项
文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。
可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。
不管当前路径是什么,如果想要在自己的根目录$ H O M E中查找文件名符合* . t x t的文件,使用~作为' p a t h n a m e参数,波浪号~代表了你的$ H O M E目录。
$ find ~ -name "*.txt" -print
想要在当前目录及子目录中查找所有的‘ * . t x t’文件,可以用:
$ find . -name "*.txt" -print
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:
$ find . -name "[A-Z]*" -print
想要在/ e t c目录中查找文件名以h o s t开头的文件,可以用:
$ find /etc -name "host*" -print
想要查找$ H O M E目录中的文件,可以用:
$ find ~ -name "*" -print 或find . -print
要想让系统高负荷运行,就从根目录开始查找所有的文件。
$ find / -name "*" -print
如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是. t x t的文件,下面的命令就能够返回名为a x 3 7 . t x t的文件:
$find . -name "[a-z][a-z][0--9][0--9].txt" -print
b.用perm选项
按照文件权限模式用- p e r m选项。
按文件权限模式来查找文件的话。最好使用八进制的权限表示法。
如在当前目录下查找文件权限位为7 5 5的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:
$ find . -perm 755 -print
还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666
# ls -l
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rw-rw-rw- 1 sam adm 34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf
drw-rw-rw- 2 gem group 4096 10月 26 19:48 sam
-rw-rw-rw- 1 root root 2792 10月 31 20:19 temp
# find . -perm 006
# find . -perm -006
./sam
./httpd1.conf
./temp
-perm mode:文件许可正好符合mode
-perm +mode:文件许可部分符合mode
-perm -mode: 文件许可完全符合mode
c.忽略某个目录
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用- p r u ne选项来指出需要忽略的目录。在使用- p r u n e选项时要当心,因为如果你同时使用了- d e p t h选项,那么- p r u ne选项就会被find命令忽略。
如果希望在/ a p p s目录下查找文件,但不希望在/ a p p s / b i n目录下查找,可以用:
$ find /apps -path "/apps/bin" -prune -o -print
补充:
使用find查找文件的时候怎么避开某个文件目录
比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件
find /usr/sam -path "/usr/sam/dir1" -prune -o -print
find [-path ..] [expression] 在路径列表的后面的是表达式
-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 &line;&line; 类似如果 -path
"/usr/sam" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune
,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print ,-print
返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。
这个表达式组合特例可以用伪码写为
if -path "/usr/sam" then
-prune
else
避开多个文件夹
代码
find /usr/sam ( -path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -print
圆括号表示表达式的结合。
表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。
查找某一确定文件,-name等选项加在-o 之后
代码
#find /usr/sam (-path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -name "temp" -print
4.使用user和nouser选项
按文件属主查找文件,如在$ H O M E目录中查找文件属主为sam的文件,可以用:
$ find ~ -user sam -print
在/ e t c目录下查找文件属主为u u c p的文件:
代码
$ find /etc -user uucp -print
为了查找属主帐户已经被删除的文件,可以使用- n o u s e r选项。这样就能够找到那些属主在/ e t c / p a s s w
d文件中没有有效帐户的文件。在使用- n o u s e r选项时,不必给出用户名; find命令能够为你完成相应的工作。
例如,希望在/ h o m e目录下查找所有的这类文件,可以用:
$ find /home -nouser -print
5、使用group和nogroup选项
就像u s e r和n o u s e r选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/ a p p s目录下查找属于gem用户组的文件,可以用:
$ find /apps -group gem -print
要查找没有有效所属用户组的所有文件,可以使用n o g r o u p选项。下面的find命令从文件系统的根目录处查找这样的文件
$ find / -nogroup-print
6、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用m t i m e,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用m t i m e选项来查找这样的文件。
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
代码
$ find / -mtime -5 -print
为了在/ v a r / a d m目录下查找更改时间在3日以前的文件,可以用:
$ find /var/adm -mtime +3 -print
7、查找比某个文件新或旧的文件
如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用- n e w e r选项。它的一般形式为:
代码
newest_file_name ! oldest_file_name
其中,!是逻辑非符号。
查找更改时间比文件sam新但比文件temp旧的文件:
例:有两个文件
-rw-r--r-- 1 sam adm 0 10月 31 01:07 fiel
-rw-rw-rw- 1 sam adm 34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf
drw-rw-rw- 2 gem group 4096 10月 26 19:48 sam
-rw-rw-rw- 1 root root 2792 10月 31 20:19 temp
# find -newer httpd1.conf ! -newer temp -ls
1077669 0 -rwxrwxr-x 2 sam adm 0 10月 31 01:01 ./httpd.conf
1077671 4 -rw-rw-rw- 1 root root 2792 10月 31 20:19 ./temp
1077673 0 -rw-r--r-- 1 sam adm 0 10月 31 01:07 ./fiel
查找更改时间在比temp文件新的文件:
$ find . -newer temp -print
8、使用type选项
在/ e t c目录下查找所有的目录,可以用:
$ find /etc -type d -print
在当前目录下查找除目录以外的所有类型的文件,可以用:
$ find . ! -type d -print
在/ e t c目录下查找所有的符号链接文件,可以用
代码
$ find /etc -type l -print
9、使用size选项
可以按照文件长度来查找文件,这里所指的文件长度既可以用块( b l o c k)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。
在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。
在当前目录下查找文件长度大于1 M字节的文件:
$ find . -size +1000000c -print
在/home/apache目录下查找文件长度恰好为1 0 0字节的文件:
$ find /home/apache -size 100c -print
在当前目录下查找长度超过1 0块的文件(一块等于5 1 2字节):
代码
$ find . -size +10 -print
10、使用depth选项
在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用d e p t h选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
在下面的例子中, find命令从文件系统的根目录开始,查找一个名为C O N . F I L E的文件。
它将首先匹配所有的文件然后再进入子目录中查找。
$ find / -name "CON.FILE" -depth -print
11、使用mount选项
在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的m o u n t选项。
从当前目录开始查找位于本文件系统中文件名以X C结尾的文件:
$ find . -name "*.XC" -mount -print
2007年9月5日星期三
HTML里的valign、align
“VALIGN"意思 -- vertical alignment 垂向对齐方法
其值可以是top -- 顶部;或middle -- 中部;或bottom-- 底部;或baseline -- 基线。默认中部--middle。
align是左右对齐方式。
其值:align="middle"内容居中、 align="left" 内容居左、 align="rigth" 内容居右。
HTML Quick List
2007年8月25日星期六
遭遇ORA-01461
驱动版本:classes12.jar for 10.2.0.3.0
数据类型:clob
当插入中文数据在2000字符左右时就会抛出这个错误
--- The error occurred in cn/gov/gzjs/conf/article.xml.
--- The error occurred while applying a parameter map.
--- Check the insertArticle-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLException: ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值
超过 或 少于 都没有问题
郁闷啊
2007年8月3日星期五
用Diff和Patch工具维护源码
用Diff和Patch工具维护源码
2007年7月12日星期四
sudo 介绍
使用者说明节区格式:
使用者 接取群组 [: 接取群组 ]...
接取群组 ::= 主机象征 = [op]指令象征 [,[op]指令象征]...
主机象征 ::= 一个小写的主机名称或主机别名。
指令象征 ::= 一个指令或指令别名。
op ::= 逻辑的 '!' 否定运算元。
主机别名节区格式:
Host_Alias 主机别名 = 主机列表
Host_Alias ::= 这是一个关键字。
主机别名 ::= 一个大写的别名。
主机列表 ::= 以逗号间隔的一些主机名称。
指令别名节区格式:
Cmnd_Alias 指令别名 = 指令列表
Cmnd_Alias ::= 这是一个关键字。
指令别名 ::= 一个大写的别名。
指令列表 ::= 以逗号间隔的一些指令。
保留的别名“ALL”在“{Host,Cmnd}_Alias”里都可以使用。不要用“ALL”来定义一个别名,这个别名无效。注意到“ALL”暗示全部的主机和指令。
可以使用这个语法从整个范围中减掉一些项目:
user host=ALL,!ALIAS1,!/etc/halt...
log4j 简单配置
2.log4j.properties置于 classes 下
3.log4j.properties
log4j.rootCategory=ERROR, file,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#log4j.appender.console.layout.ConversionPattern= %t %p - %m %n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./example.log // D:\Program Files\netbeans-5.0\enterprise2\jakarta-tomcat-5.5.9\bin
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern= %d{yyyy-MM-dd HH:mm:ss} : %t %p - %m %n
4. import=org.apache.commons.logging.Log;
% 3B import=org.apache.commons.logging.LogFactory;
5.Log logger = LogFactory.getLog(this.getClass());
logger.error("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
2007年7月3日星期二
oracle 的数据类型
名称 | 含义 |
Char | 用于描述定长的字符型数据,长度<= 2000 字节 |
varchar2 | 用于描述变长的字符型数据,长度<= 4000 字节 |
nchar | 用来存储Unicode字符集的定长字符型数据,长度<= 1000 字节 |
nvarchar2 | 用来存储Unicode字符集的变长字符型数据,长度<= 1000 字节 |
number | 用来存储整型或者浮点型数值 |
Date | 用来存储日期数据 |
Long | 用来存储最大长度为2GB的变长字符数据 |
Raw | 用来存储非结构化数据的变长字符数据,长度<= 2000 字节 |
Long raw | 用来存储非结构化数据的变长字符数据,长度<= 2GB |
rowid | 用来存储表中列的物理地址的二进制数据,占用固定的10个字节 |
Blob | 用来存储多达4GB的非结构化的二进制数据 |
Clob | 用来存储多达4GB的字符数据 |
nclob | 用来存储多达4GB的Unicode字符数据 |
Bfile | 用来把非结构化的二进制数据存储在数据库以外的操作系统文件中 |
urowid | 用来存储表示任何类型列地址的二进制数据 |
float | 用来存储浮点数 |
VI常用命令
- 命令模式
- 移动光标
- h 或 向左方向键(←) → 光标向左移动一个字元
- j 或 向下方向鍵(↓) → 光标向下移动一个字元
- k 或 向上方向鍵(↑) → 光标向上移动一个字元
- l 或 向右方向鍵(→) → 光标向右移动一个字元
- [Ctrl] + [f] → 屏幕『向下』移动一页,相当于 [Page Down]按键
- [Ctrl] + [ b ] → 屏幕『向上』移动一页,相当于 [Page Up] 按键
- n
→ n 表示『数字』。按下数字后再按空白鍵,光标会向右移动这一行的 n 个字元 - 0 → 数字『 0 』:移动到这一行的最前面字元处
- $ → 移动到这一行的最后面字元处
- G → 移动到这个文件的最后一行
- nG → n 为数字。移动到这个文件的第 n 行(可配合 :set nu)
- gg → 移动到这个文件的第一行,相当于 1G
- n
→ n 为数字。光标向下移动 n 行
- h 或 向左方向键(←) → 光标向左移动一个字元
- 查找与替换
- /word → 向光标之下查找一个名称为 word 的字符串。如想查找 eric4ever 字符串,输入 /eric4ever 即可
- ?word → 向光标之上查找一个名称为 word 的字符串
- n → 『重复前一个查找的动作』
- N → 与 n 刚好相反,为『反向』进行前一个查找动作
- :n1,n2s/word1/word2/g → n1 与 n2 均为数字。在第 n1 与 n2 行之间查找 word1 字符串,并将该字符串替换为 word2。如:在 1 到 9 行之间查找 eric4ever 并替换为 ERIC4EVER 则:『:1,9s/eric4ever/ERIC4EVER/g』
- :1,$s/word1/word2/g → 从第一行到最后一行查找 word1 字符串,并将该字符串替换为 word2
- :1,$s/word1/word2/gc → 从第一行到最后一行查找 word1 字符串,并将该字符窗替换为 word2,替换前显示提示对话框是否确认替换
- /word → 向光标之下查找一个名称为 word 的字符串。如想查找 eric4ever 字符串,输入 /eric4ever 即可
- 删除、复制与粘贴
- x, X → 在一行字当中,x 为向后刪除一个字元 (相当于 [del] 按键), X 为向前刪除一个字元(相当于 [backspace] 按键)
- dd → 刪除光标所在的那一整列
- ndd → n 为数字。刪除光标所在的向下 n 列
- yy → 复制光标所在的那一行
- nyy → n 为数字。复制光标所在的向下 n 列
- p, P → p 为将已复制的内容粘贴在光标下一行上,P 则为粘贴在光标的上一行
- u → 还原前一个动作
- [Ctrl]+r → 重做上一个动作
- . → 小数点,意思是重复前一个动作
- x, X → 在一行字当中,x 为向后刪除一个字元 (相当于 [del] 按键), X 为向前刪除一个字元(相当于 [backspace] 按键)
- 移动光标
- 编辑模式
- i, I → 插入:在目前的光标所在处插入输入的文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一個非空白字元处开始插入』
- a, A → a 为『从目前光标所在的下一个字元处开始插入』, A 为『从光标所在行的最后一个字元处开始插入』
- o, O → o 为『在目前光标所在的下一行处插入新的一行』, O 为『在目前光标所在处的上一行插入新的一行』
- r, R → r 为『取代光标所在的那一个字元』, R 为『一直取代光标所在的文字,直到按下 ESC 为止』
- Esc → 退出编辑模式,回到一般模式中
- i, I → 插入:在目前的光标所在处插入输入的文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一個非空白字元处开始插入』
- 末行指令模式
- :w → 将编辑的文件写入到硬盘上
- :q → 退出 vi
- :wq → 保存后退出,若为 :wq! 则为强制保存为退出
- :set nu → 显示行号
- :set nonu → 取消显示行号
- :w → 将编辑的文件写入到硬盘上
2007年6月27日星期三
linux 下oracle10g 的安装
Installing Oracle 10g R2 on Ubuntu Edgy
- Login to ubuntu from your usual administrative account which has sudo access
- Make sure you have enough ram, swap space and disk space as per oracle requirements.
- Install the required packages (first make sure ‘universe’ is enabled in your sources.list):
- sudo apt-get install build-essential libaio rpm lesstif2-dev alien
- Create the users and groups oracle needs:
- sudo groupadd oinstall
- sudo groupadd dba
- sudo groupadd nobody
- sudo useradd -g oinstall -G dba,nobody -d /opt/oracle -s /bin/bash oracle
- Set oracle user’s password
- sudo passwd oracle
- Create the directory for the software installation and assign ownership to oracle:oinstall
- sudo mkdir /opt/oracle
- sudo chown -R oracle:oinstall /opt/oracle
- sudo chmod -R 775 /opt/oracle
- In another console, login as oracle to make sure it works fine, then logout.
- Append user oracle’s .bashrc with PATH and ORACLE:BASE,HOME and SID information
- sudo vi /opt/oracle/.bashrc
- export ORACLE_BASE=/opt/oracle
- export ORACLE_HOME=$ORACLE_BASE/product/10gR2
- export ORACLE_SID=orcl
- export PATH=$PATH:$ORACLE_HOME/bin
- Make sure the correct kernel parmeters are appended to /etc/sysctl.conf
- kernel.shmall = 2097152
- kernel.shmmax = 2147483648
- kernel.shmmni = 4096
- kernel.sem = 250 32000 100 128
- net.core.rmem_default = 262144
- net.core.rmem_max = 262144
- net.core.wmem_default = 262144
- net.core.wmem_max = 262144
- fs.file-max = 65536
- net.ipv4.ip_local_port_range = 1024 65000
- Set the kernel parameters or reboot
- /sbin/sysctl -p
- Set /etc/security/limits.conf
- * soft nproc 2047
- * hard nproc 16384
- * soft nofile 1024
- * hard nofile 65536
- Create symbolic links and camoflage Kubuntu to look more like an enterprise rpm based distro because the oracle installer is expecting rhel, sles or asianux based distros.
- sudo ln -s /usr/bin/awk /bin/awk
- sudo ln -s /usr/bin/rpm /bin/rpm
- sudo ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
- sudo ln -s /usr/bin/basename /bin/basename
- Mount the Oracle10g CD and run the installer
- /runInstaller -ignoreSysPrereqs
- Installation will be uneventful provided above steps are followed
- Enable the oracle user to dbshut, dbstart and lsnrctl start
- sudo vi /etc/oratab and change :N to :Y
All Done!
Oracle 10g Enterprise / Standard Edition on Ubuntu 5.10 Breezy
2007年6月26日星期二
/etc/init.d/oracle
ORACLE_HOME_LISTNER=/home/oracle/oracle/product/10.2.0/db_1
/etc/oratab
orcl:/home/oracle/oracle/product/10.2.0/db_1:Y
.bashrc
ORACLE_HOME=/home/oracle/oracle/product/10.2.0/db_1
ORACLE_SID=orcl
#ORACLE_BASE=~/oracle/product
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export PATH
export ORACLE_SID
/etc/init.d/oracle
#!/bin/bash
#
# /etc/init.d/dbora
#
# Startup script for Oracle databases
export ORACLE_HOME=/home/oracle/oracle/product/10.2.0/db_1/
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
case "$1" in
start)
echo -n "Starting Oracle: "
su oracle -c $ORACLE_HOME/bin/dbstart
touch /var/lock/oracle
su oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
echo -n "Shutdown Oracle: "
su oracle -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/oracle
echo "OK"
;;
*)
echo "Usage: 'basename $0' start|stop"
exit 1
esac
exit 0
2007年6月19日星期二
Linux All-in-One Desk Reference For Dummies, 2nd Edition
book1: linux basics
CD/DVD刻录: cdrecord/growisofs
1. 运行cdrecord-scanbus,查看输出,判断刻录机的参数
2. 进入ISO所在目录
3. ls -l 查看ISO文件名
4. 将空白光盘插入刻录机
5. # cdrecord -v -pad speed=1 dev=0,0,0(刻录机的参数) filename.iso
6. # growisofs -dvd-compat -Z /dev/scd0=filename.iso
创建X配置文件
X -configure
测试生成的配置文件
X -config ///etc/xorg.conf.new
使配置文件生效
cp ///etc/xorg.config.new /etc/X11/xorg.conf
book2: Linux Desktops
http://www.freedesktop.org/wiki/Desktops
command > file #标准输出重定向
command 2> file #错误输出重定向
command > file 2>&1 #输出重定向
command <> file.out
command >> file #追加
command 2>> file
command >> file 2>&1
command <
对文件内容排序
sort /etc/password > sorted.text
删除或替换字符
tr
tr -d '\015' <> filename.lin
文档切分
split -b 1440k hugefile.tar part.
合并
cat part.?? > hugefile.tar
VI
!command #执行外部命令
$ #移到文档尾部
%
+ # 下一行
+n
- #上一行
-n
.
/text/
Q #不存盘退出
r file #插入外部文档
W file #将内容另存到文件尾部
w file #另存
/string #向前搜索
?string #向后搜索
book3: networking
查看网络接口: /sbin/ifconfig
查看路由表: /sbin/route
查看网络状态: netstat -i
抓取数据包: tcpdump -a -c 1000 > tdout
book4: Internet
book5: administration
监控系统性能
top/uptime/vmstat
监控磁盘性能与空间
/sbin/hdparm -t /dev/hda
dh
查看系统信息
/proc/cpuinfo
...
lsmod
modprobe snd-card-0
modprobe -r snd-card-0
/etc/modprobe.conf
/etc/at.allow /etc/at.deny 可以使用at 的用户列表
/etc/cron.allow /etc/cron.deny
book6: security
密码安全
/etc/passwd => /etc/shadow
密码有效期
chage -l root
GPG
Tripwire
TCP wrapper ==> /etc/hosts.deny /etc/hosts.allow fi
iptables-restore < iptables.rules
securitytools: nmap/nessus
xinetd与inetd
book7:internet servers
apache/vsftp/dns/nfs/samba
2007年6月7日星期四
Debian 安装备忘
2. 安装fcitx
apt-get install fcitx im-switch
配置
im-switch -s fcitx
如果是英文环境 需要设置LC_CTYPE=zh_CN.UTF-8
或
手动添加/etc/X11/Xsession.d/nnxinput 文件 (nn为数字)
export XMODIFIERS="@im=fcitx"
export XIM=fcitx
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE="XIM"
export QT_IM_MODULE="XIM"
fcitx
3.时间
tzselect
ntpdate asia.pool.ntp.org >> /dev/null
4.sudo
#apt-get install sudo
tony ALL=(ALL) NOPASSWD:ALL
5.PDF 阅读器
$sudo aptitude install xpdf-chinese-simplified xpdf-reader evince
6. MP3播放器
$ sudo aptitude install alsa-base alsa-utils beep-media-player
$sudo alsaconf
7. 安装office
安装永中office
无法驱动打印机, 据说是cups 版本太高
8. 安装vmware
insmod 错误, module-init-tools(3.3-pre11-1)的bug 降级使用(3.3-pre4-2)
9.安装RSS阅读器
liferea
...
明天继续
静态页面-2006-05-27
http://www.flashnet.cn/bbs/dispbbs.asp?boardid=33&ID=553&replyID=553
为了减轻服务器压力,将原来的文章管理系统由JSP文件的从数据库中取数据显示改为由jsp生成静态html文件后直接访问html文件。下面是一个简单的示例
1.buildhtml.jsp
<%@ page contentType="text/html; charset=gb2312" import="java.util.*,java.io.*"%>
<%
try{
String title="This is Title";String content="This is Content Area";
String editer="LaoMao";
String filePath = "";
filePath = request.getRealPath("/")+"test/template.htm";
//out.print(filePath+"<br>");
String templateContent="";
FileInputStream fileinputstream = new FileInputStream(filePath);//读取模块文件
int lenght = fileinputstream.available();
byte bytes[] = new byte[lenght];
fileinputstream.read(bytes);
fileinputstream.close();
templateContent = new String(bytes);
//out.print(templateContent);
templateContent=templateContent.replaceAll("###title###",title);
templateContent=templateContent.replaceAll("###content###",content);
templateContent=templateContent.replaceAll("###author###",editer);// 替换掉模块中相应的地方
//out.print(templateContent);
// 根据时间得文件名
Calendar calendar = Calendar.getInstance();
String fileame = String.valueOf(calendar.getTimeInMillis()) +".html";
fileame = request.getRealPath("/")+fileame;//生成的html文件保存路径
FileOutputStream fileoutputstream = new FileOutputStream(fileame);//建立文件输出流
byte tag_bytes[] = templateContent.getBytes();
fileoutputstream.write(tag_bytes);
fileoutputstream.close();
}
catch(Exception e){
out.print(e.toString());
}
%>
2. template.htm
<html>
<head>
<title>###title###</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="../css.css" rel=stylesheet type=text/css>
</head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="2">
<tr>
<td align="center">###title###</td>
</tr>
<tr>
<td align="center">author:###author### </td>
</tr>
<tr>
<td>###content###
</td>
</tr>
</table>
</body>
</html>
oracle资料备份
# Generated by Oracle configuration tools.
GZJS_192.168.102.200 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.102.200)(PORT = 1521))
)
(CONNECT_DATA =
(SID = gzjs)
(SERVER = DEDICATED)
)
)
JLXT_192.168.201.2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.201.2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = jlxt)
(SERVER = DEDICATED)
)
)
系统升级错误-2006-11-23
A70DAF536070D3A1
W: You may want to run apt-get update to correct these problems
# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys A70DAF536070D3A1 && gpg --armor --export A70DAF536070D3A1 | apt-key add -
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: requesting key 6070D3A1 from hkp server wwwkeys.eu.pgp.net
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 6070D3A1: public key "Debian Archive Automatic Signing Key (4.0/etch)
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
OK
装hp1022n打印机-2006-11-28
Printer : HP laserJet 1022n/network
$ sudo aptitude install hplip hplip-base hplip-data hplip-ppds cupsys-client cupsys foomatic-db-hpijs hpijs
$ sudo hp-setup
http://hplip.sourceforge.net/install/step1/apt.html
oracle客户端安装备忘-2006-12-06
oracle: 9.2.0.1.0
安装客户端
需要安装以下包:make compat-db compat-gcc-32 compat-gcc-32-c++ compat-oracle-rhel4 compat-libcwait compat-libgcc-296compat-libstdc++-296 compat-libstdc++-33 gcc gcc-c++ gnome-libs gnome-libs-devel libaio-devel libaio make openmotif21 xorg-x11-deprecated-libs-devel xorg-x11-deprecated-libs
更新以下包:up2date gnome-libs gnome-libs-devel
设置以下变量:export LD_ASSUME_KERNEL=2.4.19
可以在以下网站下载光盘上未提供的软件包:http://oss.oracle.com/projects/compat-oracle/files/RedHat/
如�
��出现以下错误:
DllGroup = false
Calling action unixActions2.2.0.6.0 createLink
source = /opt/ora9/jre/1.1.8/bin/.java_wrapper
destination = /opt/ora9/jre/1.1.8/bin/jre
overwriteExistingLink = true
则可能是 $LD_ASSUME_KERNEL 变量没有设置
参考文档:
http://www.puschitz.com/InstallingOracle9i.shtml
Oracle学习笔记-2007-01-17
>select log_mode from v$database;
>archive log list ;
2. 切换归档状态
>shutdown immediate;
>startup mount;
>alter database archivelog(noarchivelog)
>alter database open;
>archive log list;
3. 应用pfile修改
>create pfile from spfile
修改pfile(:\oracle\product\10.1.0\Db_1\database\INITtonydb.ORA)
>create spfile from pfile
or
>show all(parameters parametername)
>alter system set parameter=valuse;
4. 指定 pfile 启动
>shutdown immediate;
>startup pfile="";
5. 手动归档
>archive log all;
6. 数据库冷备份
备份
>select name from v$datafile;
%
09>shutdown immediate;
>$copy ... 复制目标文件
>startup;
恢复
恢复数据库的唯一方法是,从冷备份文件中恢复所有数据库文件,以使数据库处于一致状态
7. 数据库热备份
备份
>alter tablespace system begin backup;
>$copy ...
>alter tablespace system end backup;
恢复
>alter database datafile 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\TONYDB\SYSTEM01.DBF' offline;
>alter database open;
>$copy ...
>recover datafile 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\TONYDB\SYSTEM01.DBF'
>alter database datafile 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\TONYDB\SYSTEM01.DBF' online;
>alter database open
8. 分析备份文件的可用性
F:\>dbv file=f:\SYSTEM01.DBF blocksize=8192
9. 控制文件备份
> alter database backup controlfile to trace;
==
> D:\oracle\product\10.1.0\admin\tonydb\udump\tonydb_ora_xxxx.trc
10. 表空间状态的切换
> alter tablespace
> alter tablespace
11. 数据库不完整恢复
基于取消
>startup mount;
>recover database until cancel;
基于时间
>startup mount;
>recover database until time '2000-01-01:01:01:01';//YYYY-MM-DD:HH:MI:SS
12. RMAN
cmd> rman
RMAN> connect target / //与默认目标数据库建立连接
RMAN> show all;
RMAN> configure retention policy clear; //恢复默认设置
13. RMAN backup
RMAN> report need backup;
RMAN> run {
allocate channel c1 type disk; //信道名和设备类型
backup full //备份类型
format 'd:\backup\%d_%p_%t' //文件格式
(tablespace system //备份对象
include current controlfile);} //备份对象
注: backup {full|incremental level=n|archivelog all|database} //archivelog
backup {database} //noarchivelog
14. RMAN 使用copy 备份
RMAN> run{
allocate channel c1 type disk;
copy level 0
datafile 1 to 'd:\2222\systemimg.dbf';} //4 指定文件, 可以使用 report schema 获取
15. RMAN restore
RMAN> run {
allocate channel c1 type disk;
restore database;
recover database;
}
16. RMAN 不完整恢复
基于时间
RMAN> run {
allocate channel c1 type disk;
set until time 'DD MON YYYY HH: MI: SS';
restore database;
recover database;
}
17. RMAN 维护
RMAN> crosscheck backup of database;
RMAN> crosscheck copy of database;
RMAN> list backup of database;
RMAN> list copy of database;
RMAN> change backupset i {unavailable|unavailable};
18. exp 与 imp
19. SQL*Loader
20. 服务器配置
.\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\listener.ora
SID_LIST_LISTENER = //指定侦听SID, 指定监听服务器列表
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.1.0\Db_1)
(PROGRAM = extproc)
)
)
LISTENER = //LISTENER定义
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = TONYBOX)(PORT = 1521))
)
21. 客户端配置
.\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\sqlnet.ora
有关xwindows的三个命令-2007-01-29
-> Red 1.000, Green 1.000, Blue 1.000
# xgamma -gamma 1.300
# xvidtune
# xrandr -q
# xrandr -s 1280 x 102 -r 75
重装系统-2007-02-02
2.6.17 以上内核均不能上网, 但是能ping通, 也不是都不能上, 比如google就可以
debian的sarge 又不能识别sata的硬盘 郁闷
解决:
# echo 0 > /proc/sys/net/ipv4/
编辑/etc/sysctl.conf 文件, 加入如下行:
net.ipv4.tcp_window_scaling=0
http://lwn.net/Articles/92727/
2007年6月5日星期二
2007年5月22日星期二
2007年5月9日星期三
2007年4月23日星期一
Debina/ETCH:Postfix+SMTP-AUTH安装备份
main.cf
will not be modified by the Postfix install process.
Internet Site
Where should mail for root go NONE
Mail name? mail.mydebian.org
Other destinations to accept mail for? (blank for none)
mail.mydebian.org, localhost.localdomain, localhost.localdomain, localhost
Force synchronous updates on mail queue?
# echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
# echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf
$cat /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
$ cat /etc/default/saslauthd
START=yes
PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR} -r"
PIDFILE="${PWDIR}/saslauthd.pid"
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
$ cat /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = mail.mydebian.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mail.mydebian.org, localhost.localdomain, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#################################################
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
检查 saslauthd 服务是否运行正常, 比如是否生成了 /var/spool/postfix/var/run/saslauthd/saslauthd.pid
测试
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.mydebian.org ESMTP Postfix (Debian/GNU)
ehlo localhost
250-mail.mydebian.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
http://wiki.ubuntu.org.cn/Postfix_%E5%BF%AB%E9%80%9F%E6%8C%87%E5%8D%97
Mar 9 21:46:12 main postfix/smtp[4721]: 7A68C492E: to=
/usr/share/doc/sasl2-bin/README.Debian
To place the saslauthd socket inside the Postfix chroot, edit
/etc/default/saslauthd and set OPTIONS like this (you may omit -c):
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
To set the run directory using dpkg-statoverride, run this command as root:
dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
Finally, to add the postfix user to the sasl group:
adduser postfix sasl
2007年4月21日星期六
.bash_profile 与 .bashrc 文件
而 .bashrc 则是在打开虚拟终端的时候才会起作用,比如在GNOME,KDE中执行rxvt.
如果你想在控制台登录的时候, 同时执行 .bashrc 脚本, 可以在.bash_profile文件中加入如下内容:
if [ -f ~/.bashrc ];
then
source ~/.bashrc
fi
2007年3月20日星期二
GNU 隐私手册
帮助信息
$ gpg --help
gpg (GnuPG) 1.4.7
Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
Home: /home/tony/.gnupg。
支持的算法:
公钥:RSA, RSA-E, RSA-S, ELG-E, DSA
对称加密:3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
压缩:不压缩, ZIP, ZLIB, BZIP2
语法:gpg [选项] [文件名]
签名、检查、加密或解密
默认的操作依输入数据而定
指令:
-s, --sign [文件名] 生成一份签名
--clearsign [文件名] 生成一份明文签名
-b, --detach-sign 生成一份分离的签名
-e, --encrypt 加密数据
-c, --symmetric 仅使用对称加密
-d, --decrypt 解密数据(默认)
--verify 验证签名
--list-keys 列出密钥
--list-sigs 列出密钥和签名
--check-sigs 列出并检查密钥签名
--fingerprint 列出密钥和指纹
-K, --list-secret-keys 列出私钥
--gen-key 生成一副新的密钥对
--delete-keys 从公钥钥匙环里删除密钥
--delete-secret-keys 从私钥钥匙环里删除密钥
--sign-key 为某把密钥添加签名
--lsign-key 为某把密钥添加本地签名
--edit-key 编辑某把密钥或为其添加签名
--gen-revoke 生成一份吊销证书
--export 导出密钥
--send-keys 把密钥导出到某个公钥服务器上
--recv-keys 从公钥服务器上导入密钥
--search-keys 在公钥服务器上搜寻密钥
--refresh-keys 从公钥服务器更新所有的本地密钥
--import 导入/合并密钥
--card-status 打印卡状态
--card-edit 更改卡上的数据
--change-pin 更改卡的 PIN
--update-trustdb 更新信任度数据库
--print-md 算法 [文件] 使用指定的散列算法打印报文散列值
选项:
-a, --armor 输出经 ASCII 封装
-r, --recipient 某甲 为收件者“某甲”加密
-u, --local-user 使用这个用户标识来签名或解密
-z N 设定压缩等级为 N (0 表示不压缩)
--textmode 使用标准的文本模式
-o, --output 指定输出文件
-v, --verbose 详细模式
-n, --dry-run 不做任何改变
-i, --interactive 覆盖前先询问
--openpgp 行为严格遵循 OpenPGP 定义
--pgp2 生成与 PGP 2.x 兼容的报文
(请参考在线说明以获得所有命令和选项的完整清单)
范例:
-se -r Bob [文件名] 为 Bob 这个收件人签名及加密
--clearsign [文件名] 做出明文签名
--detach-sign [文件名] 做出分离式签名
--list-keys [某甲] 显示密钥
--fingerprint [某甲] 显示指纹
请向 <gnupg-bugs@gnu.org> 报告程序缺陷。
请向 <zuxyhere@eastday.com> 反映简体中文翻译的问题。
生成密钥对
$ gpg --gen-key
gpg (GnuPG) 1.4.7; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
请选择您要使用的密钥种类:
(1) DSA 和 ElGamal (默认)
(2) DSA (仅用于签名)
(5) RSA (仅用于签名)
您的选择? 1
DSA 密钥对会有 1024 位。
ELG-E 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 1y
密钥于 03/19/08 08:53:26 过期
以上正确吗?(y/n)y
您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:
“Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”
真实姓名:etony
电子邮件地址:etony@tom.com
注释:test
您选定了这个用户标识:
“etony (test) <etony@tom.com>”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?
您需要一个密码来保护您的私钥。
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
+++++++++++++++++++++++++.++++++++++.++++++++++++++++++++++++++++++.++++++++++++
+++++++++++++++++++++++..+++++.+++++++++++++++.++++++++++>..++++++++++...>.+++++
.............................<+++++.........>.+++++...+++++
gpg: NOTE: you should run 'diskperf -y' to enable the disk statistics
gpg: NOTE: you should run 'diskperf -y' to enable the disk statistics
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
+++++.++++++++++++++++++++.++++++++++++++++++++++++++++++.+++++.+++++.+++++.++++
+.++++++++++++++++++++++++++++++++++++++++.+++++.++++++++++..+++++++++++++++>+++
+++++++>.+++++................................+++++^^^
gpg: 密钥 4FA1A3C6 被标记为绝对信任
公钥和私钥已经生成并经签名。
gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
gpg: 下次信任度数据库检查将于 2008-03-19 进行
pub 1024D/4FA1A3C6 2007-03-20 [有效至:2008-03-19]
密钥指纹 = AC10 1779 4C28 5B9F 0680 D4FB FD0B B21F 4FA1 A3C6
uid etony (test) <etony@tom.com>
sub 2048g/A085553C 2007-03-20 [有效至:2008-03-19]
生成吊销证书
$ gpg --output revoke.ase --gen-revoke etony@tom.com
sec 1024D/4FA1A3C6 2007-03-20 etony (test) <etony@tom.com>
要为这把密钥建立一份吊销证书吗?(y/N)y
请选择吊销的原因:
0 = 未指定原因
1 = 密钥已泄漏
2 = 密钥被替换
3 = 密钥不再使用
Q = 取消
(也许您会想要在这里选择 1)
您的决定是什么?2
请输入描述(可选);以空白行结束:
>
吊销原因:密钥被替换
(不给定描述)
这样可以吗? (y/N)y
您需要输入密码,才能解开这个用户的私钥:“etony (test) <etony@tom.com>”
1024 位的 DSA 密钥,钥匙号 4FA1A3C6,建立于 2007-03-20
已强行使用 ASCII 封装过的输出。
已建立吊销证书。
请把这个文件转移到一个可隐藏起来的介质(如软盘)上;如果坏人能够取得这
份证书的话,那么他就能让您的密钥无法继续使用。把这份凭证打印出来再藏
到安全的地方也是很好的方法,以免您的保存媒体损毁而无法读取。但是千万
小心:您的机器上的打印系统可能会在打印过程中把这些数据临时在某个其他
人也能够看得到的地方!
列出公钥
$ gpg --list-key
/home/tony/.gnupg/pubring.gpg
--------------------------------------------------------------------------
pub 1024D/4FA1A3C6 2007-03-20 [有效至:2008-03-19]
uid etony (test) <etony@tom.com>
sub 2048g/A085553C 2007-03-20 [有效至:2008-03-19]
列出私钥
$ gpg --list-secret-key
/home/tony/.gnupg/secring.gpg
--------------------------------------------------------------------------
sec 1024D/4FA1A3C6 2007-03-20 [有效至:2008-03-19]
uid etony (test) <etony@tom.com>
ssb 2048g/A085553C 2007-03-20
导出公钥
$ gpg --output etony.gpg --export etony@tom.com
$ gpg --armor --export etony@tom.com
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (MingW32)
mQGiBEX/MOERBAC3X5lw7sWeGs/jMM9Ujg+SQY22NZPZytP+UrnSLQntRCzgLCiW
93IznTJJ6qBqbHy4YxipvBvDuc/7/jlIe/iQg1w+pmCAaV9E9IsuQt480agZqHom
pDEDoN17xS47+iuw+aRtry3led/5o5EzKkbB80BY1wlhNrWeH+3XChOjHwCggXim
J9Z/d0LnBjyeIIiCJ1WL3ksEALEvEswe5fVaEukhXE4yomGF5oqVPI43j9h7cqQ8
pqUH1OnEpCnayt4Qm29XuWkHtxsqyCJ+QslJ/f38OVDgzMRaHMCPH4NjYplbwduR
dOzn/5iYONhHrVE61FObrQMXS5Skq0tNvxzdznH8gha4yKNypaRpppqmQD6hxnrq
jJuIA/9xo7rApqEu5GpTbHLgLGs+MCk8cTH/xH+U6glD5hUyQLRGQO0NqWRfQQ7b
BgZijgM9mYV2LS6UE/TKgslqkPLr/w622Qx3/hfL+ispPIpC0uy03W6aQyh8nBWr
glIK0HNhKPOEJx86adPtHvXNdemspjhbrBARvc0ublXmVVdNmrQcZXRvbnkgKHRl
c3QpIDxldG9ueUB0b20uY29tPohmBBMRAgAmBQJF/zDhAhsDBQkB4TOABgsJCAcD
AgQVAggDBBYCAwECHgECF4AACgkQ/QuyH0+ho8ZhTACbBCO9jJp4p6K9ePA5HYJk
gfs7ploAnj/4LaBMxyTaeShBZRf/HPTpFwvIuQINBEX/MOEQCACo6jLmqikWonnD
G/MXyMMYB1Xs4RB+xu9TrNqZbqSXksPgasll+T64qwd7QiMwN6768jNjF52Cmpms
CbFGy1DjIpoybZs/eUEA3t0v/Bjyjxm+c7uO1WPog4lqI8GeRUkvNLnq4ncKrKcp
oKPixSdpxKiPPSqifxGrONtD6HCU/3BbkdTOole/VtHFOQujyakTJLKPWX2wjb0L
InCAMOZIVL20F7XOMw2IOtp2EoEZNtHUneKTYUg5zo2DNMsz9sRcYsm78NRDbVlj
veuWN9bJ9xDKFYlj06yNYJik19Uzo/+8RPNzPghGb770wRoAoT7FyV2kd8incY4h
fS/v6DpjAAMFB/9Ke0dlVLpEvLJpq89iKlm0iG386Wi5u+AHlYOdvQ8VvC5mXwyh
qt9h+5i4DApE3HtSOcjCQ97RBsyaa26RtPzZDwTSrMW5DVDlGS3VNsfHalAlRdfD
dzZNhkmu3JUr5NMA4v9m3utTSl91ZU6mh4Hvj3DEGjbCp1QhImJO6OJ4HAakztiH
hOsql5aqDfGSMwnSRfIH1Yluej4gysCOi9BhpdjyLGJTckDGh8HklqHBQW55MqLu
tPIqwdNbEreKOzch/CxixJkn4olt+/STBrTN5MEtGnx8R3GcIY/tBPpLL01kAeCY
Y7JDOXXy7hgzLSxoahMvByGLuSOt7owThyykiE8EGBECAA8FAkX/MOECGwwFCQHh
M4AACgkQ/QuyH0+ho8briQCeKqRTXoGmNeiGu6vrpqK0eTMGv6gAn0+B8jZLMZFH
8PePPJUB5t5yzqt5
=pL1y
-----END PGP PUBLIC KEY BLOCK-----
导出私钥
$ gpg --armor --export-secret-keys etony@tom.com
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.7 (MingW32)
lQHhBEX/MOERBAC3X5lw7sWeGs/jMM9Ujg+SQY22NZPZytP+UrnSLQntRCzgLCiW
93IznTJJ6qBqbHy4YxipvBvDuc/7/jlIe/iQg1w+pmCAaV9E9IsuQt480agZqHom
pDEDoN17xS47+iuw+aRtry3led/5o5EzKkbB80BY1wlhNrWeH+3XChOjHwCggXim
J9Z/d0LnBjyeIIiCJ1WL3ksEALEvEswe5fVaEukhXE4yomGF5oqVPI43j9h7cqQ8
pqUH1OnEpCnayt4Qm29XuWkHtxsqyCJ+QslJ/f38OVDgzMRaHMCPH4NjYplbwduR
dOzn/5iYONhHrVE61FObrQMXS5Skq0tNvxzdznH8gha4yKNypaRpppqmQD6hxnrq
jJuIA/9xo7rApqEu5GpTbHLgLGs+MCk8cTH/xH+U6glD5hUyQLRGQO0NqWRfQQ7b
BgZijgM9mYV2LS6UE/TKgslqkPLr/w622Qx3/hfL+ispPIpC0uy03W6aQyh8nBWr
glIK0HNhKPOEJx86adPtHvXNdemspjhbrBARvc0ublXmVVdNmv4DAwJ/UjMXQhtQ
P2BPCaGcixZeseEXEFFdX9DnEKTueNiI44V1C6oIzZgD4I61A2X89+w+0UDWhXhp
/FwhRrQcZXRvbnkgKHRlc3QpIDxldG9ueUB0b20uY29tPohmBBMRAgAmBQJF/zDh
AhsDBQkB4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ/QuyH0+ho8ZhTACb
BCO9jJp4p6K9ePA5HYJkgfs7ploAnj/4LaBMxyTaeShBZRf/HPTpFwvInQJjBEX/
MOEQCACo6jLmqikWonnDG/MXyMMYB1Xs4RB+xu9TrNqZbqSXksPgasll+T64qwd7
QiMwN6768jNjF52CmpmsCbFGy1DjIpoybZs/eUEA3t0v/Bjyjxm+c7uO1WPog4lq
I8GeRUkvNLnq4ncKrKcpoKPixSdpxKiPPSqifxGrONtD6HCU/3BbkdTOole/VtHF
OQujyakTJLKPWX2wjb0LInCAMOZIVL20F7XOMw2IOtp2EoEZNtHUneKTYUg5zo2D
NMsz9sRcYsm78NRDbVljveuWN9bJ9xDKFYlj06yNYJik19Uzo/+8RPNzPghGb770
wRoAoT7FyV2kd8incY4hfS/v6DpjAAMFB/9Ke0dlVLpEvLJpq89iKlm0iG386Wi5
u+AHlYOdvQ8VvC5mXwyhqt9h+5i4DApE3HtSOcjCQ97RBsyaa26RtPzZDwTSrMW5
DVDlGS3VNsfHalAlRdfDdzZNhkmu3JUr5NMA4v9m3utTSl91ZU6mh4Hvj3DEGjbC
p1QhImJO6OJ4HAakztiHhOsql5aqDfGSMwnSRfIH1Yluej4gysCOi9BhpdjyLGJT
ckDGh8HklqHBQW55MqLutPIqwdNbEreKOzch/CxixJkn4olt+/STBrTN5MEtGnx8
R3GcIY/tBPpLL01kAeCYY7JDOXXy7hgzLSxoahMvByGLuSOt7owThyyk/gMDAn9S
MxdCG1A/YHSam634Q1L7LivR8bIquGe50Gj9v8FQdwWJ73EdPhapRBbzXmWKGXQj
7+aonlHclzxHFUphVA1oeJYWroROfKDa/yEPbFWyw2GITwQYEQIADwUCRf8w4QIb
DAUJAeEzgAAKCRD9C7IfT6GjxuuJAJ0UgxD/Pnxtw2EMEvyEumL/kKiqcACffZdU
CsRssPq1INdi8AGnVFvMNvk=
=IFCr
-----END PGP PRIVATE KEY BLOCK-----
导入密钥
$ gpg --import etony.gpg
gpg: 密钥 4FA1A3C6:公钥“etony (test) <etony@tom.com>”已导入
gpg: 合计被处理的数量:1
gpg: 已导入:1
编辑密钥
$ gpg --edit-key etony@tom.com
gpg (GnuPG) 1.4.7; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
pub 1024D/4FA1A3C6 创建于:2007-03-20 有效至:2008-03-19 可用于:SC
信任度:未知 有效性:未知
sub 2048g/A085553C 创建于:2007-03-20 有效至:2008-03-19 可用于:E
[ 未知 ] (1). etony (test) <etony@tom.com>
命令> help
quit 离开这个菜单
save 保存并离开
help 显示这份在线说明
fpr 显示密钥指纹
list 列出密钥和用户标识
uid 选择用户标识 N
key 选择子钥 N
check 检查签名
sign 为所选用户标识添加签名[* 参见下面的相关命令]
lsign 为所选用户标识添加本地签名
tsign 为所选用户标识添加信任签名
nrsign 为所选用户标识添加不可吊销签名
deluid 删除选定的用户标识
delkey 删除选定的子钥
delsig 删除所选用户标识上的签名
pref 列出首选项(专家模式)
showpref 列出首选项(详细模式)
trust 更改信任度
revsig 吊销所选用户标识上的签名
enable 启用密钥
disable 禁用密钥
showphoto 显示选定的照片标识
clean 压缩不可用的用户标识并删除不可用的签名
minimize 压缩不可用的用户标识并删除所有签名
* ‘sign’命令可以带‘l’前缀(lsign)以添加本地签名,或‘t’前缀(tsign)以添加
信任签名,或‘nr’前缀(nrsign)以添加不可吊销签名,或者以上三种前缀的任何组
合(ltsign、tnrsign 等)。
命令> check
uid etony (test) <etony@tom.com>
sig!3 4FA1A3C6 2007-03-20 [自身签名]
文件加密
$ gpg --output test.gpg --recipient etony.an@gmail.com --encrypt test.txt
gpg: 9CC58940:没有证据表明这把密钥真的属于它所声称的持有者
pub 2048g/9CC58940 2007-03-15 etony C.F.AN (etony@tom.com) <etony.an@gmail.com>
主钥指纹: 2F1D D32D E993 37E9 09A8 6292 A6C5 E506 738D F159
子钥指纹: 5F2B 2456 519E 1713 1F86 F51D A501 B60D 9CC5 8940
这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自
己在做什么,您可以在下一个问题回答 yes。
无论如何还是使用这把密钥吗?(y/N)y
$ gpg --armor --output test.gpg --recipient etony.an@gmail.com --encrypt test.txt
文件解密
$ gpg --output test --decrypt test.gpg
您需要输入密码,才能解开这个用户的私钥:“etony C.F.AN (etony@tom.com) <etony.an
@gmail.com>”
2048 位的 ELG-E 密钥,钥匙号 9CC58940,建立于 2007-03-15 (主钥匙号 738DF159)
gpg: 由 2048 位的 ELG-E 密钥加密,钥匙号为 9CC58940、生成于 2007-03-15
“etony C.F.AN (etony@tom.com) <etony.an@gmail.com>”
文件签名
$ gpg --output test.sig --sign test.txt
您需要输入密码,才能解开这个用户的私钥:“etony (test) <etony@tom.com>”
1024 位的 DSA 密钥,钥匙号 4FA1A3C6,建立于 2007-03-20
文件解密
$ gpg --armor --output test --decrypt test.sig
gpg: 于 03/20/07 09:55:49 创建的签名,使用 DSA,钥匙号 4FA1A3C6
gpg: 完好的签名,来自于“etony (test) <etony@tom.com>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg: 没有证据表明这个签名属于它所声称的持有者。
主钥指纹: AC10 1779 4C28 5B9F 0680 D4FB FD0B B21F 4FA1 A3C6
明文签名
$ gpg --output test.sig --clearsign test.txt
您需要输入密码,才能解开这个用户的私钥:“etony (test) <etony@tom.com>”
1024 位的 DSA 密钥,钥匙号 4FA1A3C6,建立于 2007-03-20
签名文件内容
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
1234567890qwertyuiopasdfghjklzxcvbnm
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
iD8DBQFF/z+s/QuyH0+ho8YRAg/BAJ4rooYLAPHfQwAA9iF8NMMSAifIaQCeOCIt
bwI6GTKt9Aqim/iHM8FoZvM=
=VHit
-----END PGP SIGNATURE-----
只做签名
$ gpg --output test.sig --detach-sign test.txt
您需要输入密码,才能解开这个用户的私钥:“etony (test) <etony@tom.com>”
1024 位的 DSA 密钥,钥匙号 4FA1A3C6,建立于 2007-03-20
$ gpg --armor --output test.sig --detach-sign test.txt
签名内容
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
iD8DBQBF/0BS/QuyH0+ho8YRAqeUAJ9KZA5ePJorCA56cFhp+CsBPOlNTgCZAcav
UKkQmkaLMeqN3ddDc1U6BZk=
=wXL+
-----END PGP SIGNATURE-----
校验签名
$ gpg --verify test.sig test.txt
gpg: 于 03/20/07 10:00:50 创建的签名,使用 DSA,钥匙号 4FA1A3C6
gpg: 完好的签名,来自于“etony (test) <etony@tom.com>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg: 没有证据表明这个签名属于它所声称的持有者。
主钥指纹: AC10 1779 4C28 5B9F 0680 D4FB FD0B B21F 4FA1 A3C6