{"id":4878,"date":"2020-12-15T16:12:59","date_gmt":"2020-12-15T08:12:59","guid":{"rendered":"https:\/\/damogame.cn\/wordpress\/?p=4878"},"modified":"2020-12-15T16:12:59","modified_gmt":"2020-12-15T08:12:59","slug":"unix-toolbox-%e4%b8%ad%e6%96%87%e7%89%88","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/4878","title":{"rendered":"UNIX TOOLBOX &#8211; \u4e2d\u6587\u7248"},"content":{"rendered":"<div><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#hardwareinfo\">\u539f\u6587\u5730\u5740<\/a><\/div>\n<div><\/div>\n<div class=\"title\">UNIX TOOLBOX &#8211; \u4e2d\u6587\u7248<\/div>\n<div class=\"abstract\">\u8fd9\u662f\u4e00\u4efd\u6536\u96c6Unix\/Linux\/BSD\u547d\u4ee4\u548c\u4efb\u52a1\u7684\u6587\u6863\uff0c\u5b83\u6709\u52a9\u4e8e\u9ad8\u7ea7\u7528\u6237\u6216IT\u5de5\u4f5c\u3002\u5b83\u662f\u4e00\u4efd\u7b80\u660e\u627c\u8981\u7684\u5b9e\u7528\u6307\u5357\uff0c\u5f53\u7136\u8bfb\u8005\u5e94\u8be5\u77e5\u9053\u4ed6\/\u5979\u5728\u5e72\u4ec0\u4e48\u3002<\/p>\n<\/div>\n<div class=\"footerfirst\">Unix Toolbox \u7248\u672c\uff1a12<br \/>\n\u4f60\u53ef\u4ee5\u5230\u00a0<a href=\"http:\/\/cb.vu\/unixtoolbox.xhtml\">http:\/\/cb.vu\/unixtoolbox.xhtml<\/a>\u00a0\u627e\u5230\u672c\u6587\u6863\u7684\u6700\u65b0\u7248\u3002PDF\u7248\u672c\u53ef\u4ee5\u66ff\u6362\u94fe\u63a5\u4e2d\u7684.xhtml\u4e3a\u00a0<a href=\"http:\/\/cb.vu\/unixtoolbox.pdf\">.pdf<\/a>\u00a0\uff0c\u5c0f\u518c\u5b50\u7248\u672c\u53ef\u4ee5\u66ff\u6362\u6210\u00a0<a href=\"http:\/\/cb.vu\/unixtoolbox.book.pdf\">.book.pdf<\/a>\u00a0\u3002 \u7528\u53cc\u9762\u6253\u5370\u673a\u53ef\u5c06\u5c0f\u518c\u5b50\u6253\u5370\u6210\u518c\u3002<span class=\"web\">\u8fd9\u4efdXHTML\u9875\u9762\u53ef\u4ee5\u901a\u8fc7CSS3\u76f8\u517c\u5bb9\u7684\u5e94\u7528\u7a0b\u5e8f\u8f6c\u6362\u6210\u4e00\u4efd\u6f02\u4eae\u7684PDF\u6587\u6863(\u770b\u00a0<a class=\"xref\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#bourneexample\">\u811a\u672c\u4f8b\u5b50<\/a>).<\/span><br \/>\n\u9519\u8bef\u62a5\u544a\u548c\u8bc4\u8bba\u662f\u6700\u6b22\u8fce\u7684 &#8211;\u00a0<a href=\"mailto:c\\at\\cb.vu\">c@cb.vu<\/a>\u00a0Colin Barschel.<br \/>\n\u4f60\u53ef\u4ee5\u5230<a href=\"http:\/\/code.google.com\/p\/unixtoolboxcn\/\">http:\/\/code.google.com\/p\/unixtoolboxcn\/<\/a>\u627e\u5230\u4e2d\u6587\u6700\u65b0\u7248\u3002<br \/>\n\u4e5f\u53ef\u5230\u6211\u7684\u4e3b\u9875\u83b7\u53d6<a href=\"http:\/\/silenceisdefeat.org\/~greco\/unixtoolbox_zh_CN.xhtml\">http:\/\/silenceisdefeat.org\/~greco\/unixtoolbox_zh_CN.xhtml<\/a><br \/>\n\u5173\u4e8e\u4e2d\u6587\u7248\u7684\u4efb\u4f55\u9519\u8bef\u548c\u4fee\u6b63\u8bf7\u53d1\u9001E-Mail\u5230\u00a0<![CDATA[\"Greco Shi\" <greco.open@gmail.com]]>]]&gt;<\/p>\n<p class=\"copyright\">\u00a9\u00a0<a href=\"mailto:c_at_cb.vu\">Colin Barschel and Greco Shi<\/a>\u00a02007-2008.\u00a0<a href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\" rel=\"license\">Some rights reserved under Creative Commons<\/a>.<\/p>\n<\/div>\n<div class=\"menu\">\n<ol class=\"toc\">\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#sysinfo\">\u7cfb\u7edf<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#processes\">\u8fdb\u7a0b<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#filesystem\">\u6587\u4ef6\u7cfb\u7edf<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#network\">\u7f51\u7edc<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#ssh\">SSH SCP<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#vpn\">\u4f7f\u7528 SSH \u5efa\u7acb VPN<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#rsync\">RSYNC<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#sudo\">SUDO<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#crypt\">\u6587\u4ef6\u52a0\u5bc6<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#cryptpart\">\u5206\u533a\u52a0\u5bc6<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#certs\">SSL\u8ba4\u8bc1<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#cvs\">CVS<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#svn\">SVN<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#other\">\u5b9e\u7528\u547d\u4ee4<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#software\">\u8f6f\u4ef6\u5b89\u88c5<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#convert\">\u5a92\u4f53\u8f6c\u6362<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#printing\">\u6253\u5370<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#databases\">\u6570\u636e\u5e93<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#quota\">\u78c1\u76d8\u9650\u989d<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#shells\">Shells<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#scripting\">\u811a\u672c<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#programming\">\u7f16\u7a0b<\/a><\/li>\n<li><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#onlinehelp\">\u5728\u7ebf\u5e2e\u52a9<\/a><\/li>\n<\/ol>\n<div class=\"changestyle\"><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#\">\u00a0\u767d\u8272\u00a0<\/a><a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#\">\u00a0\u9ed1\u8272<\/a><\/div>\n<\/div>\n<div class=\"pb\"><\/div>\n<div id=\"sysinfo\">\n<h1><a>\u7cfb\u7edf<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#hardwareinfo\">\u786c\u4ef6<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#loadstats\">\u72b6\u6001\u4fe1\u606f<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#users\">\u7528\u6237<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#limits\">\u9650\u5236<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#runlevels\">\u8fd0\u884c\u7ea7\u522b<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#resetpasswd\">root \u5bc6\u7801<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#compilekernel\">\u7f16\u8bd1\u5185\u6838<\/a><\/p>\n<p>\u6b63\u5728\u8fd0\u884c\u7684\u5185\u6838\u548c\u7cfb\u7edf\u4fe1\u606f<\/p>\n<pre># uname -a                           <span class=\"cmt\"># \u83b7\u53d6\u5185\u6838\u7248\u672c\uff08\u548cBSD\u7248\u672c\uff09<\/span>\r\n# lsb_release -a                     <span class=\"cmt\"># \u663e\u793a\u4efb\u4f55 LSB \u53d1\u884c\u7248\u7248\u672c\u4fe1\u606f<\/span>\r\n# cat \/etc\/SuSE-release              <span class=\"cmt\"># \u83b7\u53d6 SuSE \u7248\u672c<\/span>\r\n# cat \/etc\/debian_version            <span class=\"cmt\"># \u83b7\u53d6 Debian \u7248\u672c<\/span>\r\n<\/pre>\n<p>\u4f7f\u7528 \/etc\/<code>DISTR<\/code>-release \u5176\u4e2d<code>DISTR(\u53d1\u884c\u4ee3\u53f7)=<\/code>\u00a0lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris), \u7b49\u7b49\u3002<\/p>\n<pre># uptime                             <span class=\"cmt\"># \u663e\u793a\u7cfb\u7edf\u5f00\u673a\u8fd0\u884c\u5230\u73b0\u5728\u7ecf\u8fc7\u7684\u65f6\u95f4<\/span>\r\n# hostname                           <span class=\"cmt\"># \u663e\u793a\u7cfb\u7edf\u4e3b\u673a\u540d<\/span>\r\n# hostname -i                        <span class=\"cmt\"># \u663e\u793a\u4e3b\u673a\u7684 IP \u5730\u5740<\/span>\r\n# man hier                           <span class=\"cmt\"># \u63cf\u8ff0\u6587\u4ef6\u7cfb\u7edf\u76ee\u5f55\u7ed3\u6784<\/span>\r\n# last reboot                        <span class=\"cmt\"># \u663e\u793a\u7cfb\u7edf\u6700\u540e\u91cd\u542f\u7684\u5386\u53f2\u8bb0\u5f55<\/span>\r\n<\/pre>\n<h2 id=\"hardwareinfo\">\u786c\u4ef6\u4fe1\u606f<\/h2>\n<p>\u5185\u6838\u68c0\u6d4b\u5230\u7684\u786c\u4ef6\u4fe1\u606f<\/p>\n<pre># dmesg                              <span class=\"cmt\"># \u68c0\u6d4b\u5230\u7684\u786c\u4ef6\u548c\u542f\u52a8\u7684\u6d88\u606f<\/span>\r\n# lsdev                              <span class=\"cmt\"># \u5173\u4e8e\u5df2\u5b89\u88c5\u786c\u4ef6\u7684\u4fe1\u606f<\/span>\r\n# dd if=\/dev\/mem bs=1k skip=768 count=256 2&gt;\/dev\/null | strings -n 8 <span class=\"cmt\"># \u8bfb\u53d6 BIOS \u4fe1\u606f<\/span>\r\n<\/pre>\n<h3>Linux<\/h3>\n<pre># cat \/proc\/cpuinfo                  <span class=\"cmt\"># CPU \u8baf\u606f<\/span>\r\n# cat \/proc\/meminfo                  <span class=\"cmt\"># \u5185\u5b58\u4fe1\u606f<\/span>\r\n# grep MemTotal \/proc\/meminfo        <span class=\"cmt\"># \u663e\u793a\u7269\u7406\u5185\u5b58\u5927\u5c0f<\/span>\r\n# watch -n1 'cat \/proc\/interrupts'   <span class=\"cmt\"># \u76d1\u63a7\u5185\u6838\u5904\u7406\u7684\u6240\u6709\u4e2d\u65ad<\/span>\r\n# free -m                            <span class=\"cmt\"># \u663e\u793a\u5df2\u7528\u548c\u7a7a\u95f2\u7684\u5185\u5b58\u4fe1\u606f (-m \u4e3a MB)<\/span>\r\n# cat \/proc\/devices                  <span class=\"cmt\"># \u663e\u793a\u5f53\u524d\u6838\u5fc3\u914d\u7f6e\u7684\u8bbe\u5907<\/span>\r\n# lspci -tv                          <span class=\"cmt\"># \u663e\u793a PCI \u8bbe\u5907<\/span>\r\n# lsusb -tv                          <span class=\"cmt\"># \u663e\u793a USB \u8bbe\u5907<\/span>\r\n# lshal                              <span class=\"cmt\"># \u663e\u793a\u6240\u6709\u8bbe\u5907\u5c5e\u6027\u5217\u8868<\/span>\r\n# dmidecode                          <span class=\"cmt\"># \u663e\u793a\u4ece BIOS \u4e2d\u83b7\u53d6\u7684\u786c\u4ef6\u4fe1\u606f<\/span>\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<pre># sysctl hw.model                    <span class=\"cmt\"># CPU \u8baf\u606f<\/span>\r\n# sysctl hw                          <span class=\"cmt\"># \u5f97\u5230\u5f88\u591a\u786c\u4ef6\u4fe1\u606f<\/span>\r\n# sysctl vm                          <span class=\"cmt\"># \u865a\u62df\u5185\u5b58\u4f7f\u7528\u60c5\u51b5<\/span>\r\n# dmesg | grep \"real mem\"            <span class=\"cmt\"># \u7269\u7406\u5185\u5b58<\/span>\r\n# sysctl -a | grep mem               <span class=\"cmt\"># \u5185\u6838\u5185\u5b58\u7684\u8bbe\u7f6e\u548c\u4fe1\u606f<\/span>\r\n# sysctl dev                         <span class=\"cmt\"># \u663e\u793a\u5f53\u524d\u6838\u5fc3\u914d\u7f6e\u7684\u8bbe\u5907<\/span>\r\n# pciconf -l -cv                     <span class=\"cmt\"># \u663e\u793a PCI \u8bbe\u5907<\/span>\r\n# usbdevs -v                         <span class=\"cmt\"># \u663e\u793a USB \u8bbe\u5907<\/span>\r\n# atacontrol list                    <span class=\"cmt\"># \u663e\u793a ATA \u8bbe\u5907<\/span>\r\n<\/pre>\n<h2 id=\"loadstats\">\u663e\u793a\u72b6\u6001\u4fe1\u606f<\/h2>\n<p>\u4ee5\u4e0b\u7684\u547d\u4ee4\u6709\u52a9\u4e8e\u627e\u51fa\u6b63\u5728\u7cfb\u7edf\u4e2d\u8fd0\u884c\u7740\u7684\u7a0b\u5e8f\u3002<\/p>\n<pre># top                                <span class=\"cmt\"># \u663e\u793a\u548c\u66f4\u65b0\u4f7f\u7528 cpu \u6700\u591a\u7684\u8fdb\u7a0b<\/span>\r\n# mpstat 1                           <span class=\"cmt\"># \u663e\u793a\u8fdb\u7a0b\u76f8\u5173\u7684\u4fe1\u606f<\/span>\r\n# vmstat 2                           <span class=\"cmt\"># \u663e\u793a\u865a\u62df\u5185\u5b58\u7684\u72b6\u6001\u4fe1\u606f<\/span>\r\n# iostat 2                           <span class=\"cmt\"># \u663e\u793a I\/O \u72b6\u6001\u4fe1\u606f(2 \u79d2 \u95f4\u9699)<\/span>\r\n# systat -vmstat 1                   <span class=\"cmt\"># \u663e\u793a BSD \u7cfb\u7edf\u72b6\u6001\u4fe1\u606f(1 \u79d2 \u95f4\u9699)<\/span>\r\n# systat -tcp 1                      <span class=\"cmt\"># \u663e\u793a BSD TCP \u8fde\u63a5\u4fe1\u606f(\u4e5f\u53ef\u4ee5\u8bd5\u8bd5 -ip)<\/span>\r\n# systat -netstat 1                  <span class=\"cmt\"># \u663e\u793a BSD \u5f53\u524d\u7f51\u7edc\u8fde\u63a5\u4fe1\u606f<\/span>\r\n# systat -ifstat 1                   <span class=\"cmt\"># \u663e\u793a BSD \u5f53\u524d\u7f51\u5361\u5e26\u5bbd\u4fe1\u606f<\/span>\r\n# systat -iostat 1                   <span class=\"cmt\"># \u663e\u793a BSD CPU \u548c\u78c1\u76d8\u4f7f\u7528\u60c5\u51b5<\/span>\r\n# tail -n 500 \/var\/log\/messages      <span class=\"cmt\"># \u663e\u793a\u6700\u65b0500\u6761\u5185\u6838\/\u7cfb\u7edf\u65e5\u5fd7\u7684\u4fe1\u606f<\/span>\r\n# tail \/var\/log\/warn                 <span class=\"cmt\"># \u663e\u793a\u7cfb\u7edf\u8b66\u544a\u4fe1\u606f(\u770bsyslog.conf)<\/span>\r\n<\/pre>\n<h2 id=\"users\">\u7528\u6237<\/h2>\n<pre># id                                 <span class=\"cmt\"># \u663e\u793a\u5f53\u524d\u7528\u6237\u548c\u7528\u6237\u7ec4\u7684 ID<\/span>\r\n# last                               <span class=\"cmt\"># \u5217\u51fa\u76ee\u524d\u4e0e\u8fc7\u53bb\u767b\u5165\u7cfb\u7edf\u7684\u7528\u6237\u76f8\u5173\u4fe1\u606f<\/span>\r\n# who                                <span class=\"cmt\"># \u663e\u793a\u76ee\u524d\u767b\u5165\u7cfb\u7edf\u7684\u7528\u6237\u4fe1\u606f<\/span>\r\n# groupadd admin                     <span class=\"cmt\"># \u5efa\u7acb\u65b0\u7ec4\"admin\"\u548c\u6dfb\u52a0\u65b0\u7528\u6237 colin \u5e76\u52a0\u5165 admin \u7528\u6237\u7ec4(Linux\/Solaris)<\/span>\r\n# useradd -c \"Colin Barschel\" -g admin -m colin\r\n# userdel colin                      <span class=\"cmt\"># \u5220\u9664\u7528\u6237 colin(Linux\/Solaris)<\/span>\r\n# adduser joe                        <span class=\"cmt\"># FreeBSD \u6dfb\u52a0\u7528\u6237 joe(\u4ea4\u4e92\u5f0f)<\/span>\r\n# rmuser joe                         <span class=\"cmt\"># FreeBSD \u5220\u9664\u7528\u6237 joe(\u4ea4\u4e92\u5f0f)<\/span>\r\n# pw groupadd admin                  <span class=\"cmt\"># \u5728 FreeBSD \u4e0a\u4f7f\u7528 pw<\/span>\r\n# pw groupmod admin -m newmember     <span class=\"cmt\"># \u6dfb\u52a0\u65b0\u7528\u6237\u5230\u4e00\u4e2a\u7ec4<\/span>\r\n# pw useradd colin -c \"Colin Barschel\" -g admin -m -s \/bin\/tcsh \r\n# pw userdel colin; pw groupdel admin\r\n<\/pre>\n<p>\u52a0\u5bc6\u8fc7\u7684\u5bc6\u7801\u5b58\u50a8\u5728 \/etc\/shadow (Linux and Solaris) \u6216 \/etc\/master.passwd (FreeBSD) \u4e2d. \u5982\u679c\u624b\u52a8\u4fee\u6539\u4e86 master.passwd\uff0c\u9700\u8981\u8fd0\u884c\u00a0<code># pwd_mkdb -p master.passwd<\/code>\u00a0\u6765\u91cd\u5efa\u6570\u636e\u5e93\u3002<\/p>\n<p>\u4f7f\u7528 nologin \u6765\u4e34\u65f6\u963b\u6b62\u6240\u6709\u7528\u6237\u767b\u5f55(root\u9664\u5916)\u3002\u7528\u6237\u767b\u5f55\u65f6\u5c06\u4f1a\u663e\u793a nologin \u4e2d\u7684\u4fe1\u606f\u3002<\/p>\n<pre># echo \"Sorry no login now\" &gt; \/etc\/nologin       <span class=\"cmt\"># (Linux)<\/span>\r\n# echo \"Sorry no login now\" &gt; \/var\/run\/nologin   <span class=\"cmt\"># (FreeBSD)<\/span>\r\n<\/pre>\n<h2 id=\"limits\">\u9650\u5236<\/h2>\n<p>\u67d0\u4e9b\u5e94\u7528\u7a0b\u5e8f\u9700\u8981\u8bbe\u7f6e\u53ef\u6253\u5f00\u6700\u5927\u6587\u4ef6\u548c socket \u6570\u91cf(\u50cf\u4ee3\u7406\u670d\u52a1\u5668\uff0c\u6570\u636e\u5e93)\u3002 \u9ed8\u8ba4\u9650\u5236\u901a\u5e38\u5f88\u4f4e\u3002<\/p>\n<h3>Linux<\/h3>\n<h4>\u6bcf shell\/\u811a\u672c<\/h4>\n<p>shell \u7684\u9650\u5236\u662f\u53d7\u00a0<code>ulimit<\/code>\u00a0\u652f\u914d\u7684\u3002\u4f7f\u7528\u00a0<code>ulimit -a<\/code>\u00a0\u53ef\u67e5\u770b\u5176\u72b6\u6001\u4fe1\u606f\u3002 \u4e3e\u4e2a\u4f8b\u5b50\uff0c\u6539\u53d8\u53ef\u6253\u5f00\u6700\u5927\u6587\u4ef6\u6570\u4ece 1024 \u5230 10240\uff0c\u53ef\u4ee5\u8fd9\u4e48\u505a\uff1a<\/p>\n<pre># ulimit -n 10240                    <span class=\"cmt\"># \u8fd9\u53ea\u5728shell\u4e2d\u6709\u7528<\/span>\r\n<\/pre>\n<p><code>ulimit<\/code>\u00a0\u547d\u4ee4\u53ef\u4ee5\u4f7f\u7528\u5728\u811a\u672c\u4e2d\u6765\u66f4\u6539\u5bf9\u6b64\u811a\u672c\u7684\u9650\u5236\u3002<\/p>\n<h4>\u6bcf \u7528\u6237\/\u8fdb\u7a0b<\/h4>\n<p>\u767b\u5f55\u7528\u6237\u548c\u5e94\u7528\u7a0b\u5e8f\u7684\u9650\u5236\u53ef\u4ee5\u5728\u00a0<code>\/etc\/security\/limits.conf<\/code>\u00a0\u4e2d\u914d\u7f6e\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<pre># cat \/etc\/security\/limits.conf\r\n*   hard    nproc   250              <span class=\"cmt\"># \u9650\u5236\u6240\u6709\u7528\u6237\u8fdb\u7a0b\u6570<\/span>\r\nasterisk hard nofile 409600          <span class=\"cmt\"># \u9650\u5236\u5e94\u7528\u7a0b\u5e8f\u53ef\u6253\u5f00\u6700\u5927\u6587\u4ef6\u6570<\/span>\r\n<\/pre>\n<h4>\u7cfb\u7edf\u7ea7<\/h4>\n<p>\u7528sysctl\u6765\u8bbe\u7f6e\u5185\u6838\u9650\u5236\u3002\u8981\u4f7f\u5176\u6c38\u4e45\uff0c\u53ef\u4ee5\u5728\u00a0<code>\/etc\/sysctl.conf<\/code>\u00a0\u4e2d\u8fdb\u884c\u914d\u7f6e\u3002<\/p>\n<pre># sysctl -a                          <span class=\"cmt\"># \u663e\u793a\u6240\u6709\u7cfb\u7edf\u9650\u5236<\/span>\r\n# sysctl fs.file-max                 <span class=\"cmt\"># \u663e\u793a\u7cfb\u7edf\u6700\u5927\u6587\u4ef6\u6253\u5f00\u6570<\/span>\r\n# sysctl fs.file-max=102400          <span class=\"cmt\"># \u66f4\u6539\u7cfb\u7edf\u6700\u5927\u6587\u4ef6\u6253\u5f00\u6570<\/span>\r\n# cat \/etc\/sysctl.conf\r\nfs.file-max=102400                   <span class=\"cmt\"># \u5728 sysctl.conf \u4e2d\u7684\u6c38\u4e45\u9879<\/span>\r\n# cat \/proc\/sys\/fs\/file-nr           <span class=\"cmt\"># \u5728\u4f7f\u7528\u7684\u6587\u4ef6\u53e5\u67c4\u6570<\/span>\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<h4>\u6bcf shell\/\u811a\u672c<\/h4>\n<p>\u5728 csh \u6216 tcsh \u4e2d\u4f7f\u7528\u00a0<code>limits<\/code>\u00a0\u547d\u4ee4\uff0c\u5728 sh \u6216 bash \u4e2d\u4f7f\u7528\u00a0<code>ulimit<\/code>\u00a0\u547d\u4ee4\u3002<\/p>\n<h4>\u6bcf \u7528\u6237\/\u8fdb\u7a0b<\/h4>\n<p>\u5728\u00a0<code>\/etc\/login.conf<\/code>\u00a0\u4e2d\u914d\u7f6e\u767b\u5f55\u540e\u7684\u9ed8\u8ba4\u9650\u5236\u3002\u672a\u4f5c\u9650\u5236\u7684\u503c\u4e3a\u7cfb\u7edf\u6700\u5927\u9650\u5236\u503c\u3002<\/p>\n<h4>\u7cfb\u7edf\u7ea7<\/h4>\n<p>\u5185\u6838\u9650\u5236\u540c\u6837\u4f7f\u7528 sysctl \u6765\u8bbe\u7f6e\u3002\u6c38\u4e45\u914d\u7f6e\uff0c\u5728\u00a0<code>\/etc\/sysctl.conf<\/code>\u00a0\u6216\u00a0<code>\/boot\/loader.conf<\/code>\u00a0\u4e2d\u3002\u5176\u8bed\u6cd5\u4e0e Linux \u76f8\u540c\uff0c\u53ea\u662f\u952e\u503c\u4e0d\u540c\u3002<\/p>\n<pre># sysctl -a                          <span class=\"cmt\"># \u663e\u793a\u6240\u6709\u7cfb\u7edf\u9650\u5236<\/span>\r\n# sysctl kern.maxfiles=XXXX          <span class=\"cmt\"># \u6700\u5927\u6587\u4ef6\u63cf\u8ff0\u7b26\u6570<\/span>\r\nkern.ipc.nmbclusters=32768           <span class=\"cmt\"># \u5728 \/etc\/sysctl.conf \u4e2d\u7684\u6c38\u4e45\u9879<\/span>\r\nkern.maxfiles=65536                  <span class=\"cmt\"># Squid \u901a\u5e38\u7528\u8fd9\u4e2a\u503c<\/span>\r\nkern.maxfilesperproc=32768\r\nkern.ipc.somaxconn=8192              <span class=\"cmt\"># TCP \u5217\u961f\u3002apache\/sendmail \u6700\u597d\u7528\u8fd9\u4e2a\u503c<\/span>\r\n# sysctl kern.openfiles              <span class=\"cmt\"># \u5728\u4f7f\u7528\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u6570<\/span>\r\n# sysctl kern.ipc.numopensockets     <span class=\"cmt\"># \u5df2\u7ecf\u5f00\u542f\u7684 socket \u6570\u76ee<\/span>\r\n<\/pre>\n<p>\u8be6\u60c5\u8bf7\u770b\u00a0<a href=\"http:\/\/www.freebsd.org\/doc\/en_US.ISO8859-1\/books\/handbook\/configtuning-kernel-limits.html\">FreeBSD \u624b\u518c 11\u7ae0<\/a>\u3002<\/p>\n<h3>Solaris<\/h3>\n<p>\u5728\u00a0<code>\/etc\/system<\/code>\u00a0\u4e2d\u7684\u4e0b\u5217\u8bbe\u7f6e\uff0c\u4f1a\u63d0\u9ad8\u6bcf\u4e2a\u8fdb\u7a0b\u53ef\u4ee5\u6253\u5f00\u6700\u5927\u6587\u4ef6\u63cf\u8ff0\u7b26\u7684\u6570\u91cf\uff1a<\/p>\n<pre>set rlim_fd_max = 4096               <span class=\"cmt\"># \u4e00\u4e2a\u8fdb\u7a0b\u53ef\u4ee5\u6253\u5f00\u6587\u4ef6\u63cf\u8ff0\u7b26\u7684\"\u786c\"\u9650\u5236<\/span>\r\nset rlim_fd_cur = 1024               <span class=\"cmt\"># \u4e00\u4e2a\u8fdb\u7a0b\u53ef\u4ee5\u6253\u5f00\u6587\u4ef6\u63cf\u8ff0\u7b26\u7684\"\u8f6f\"\u9650\u5236<\/span>\r\n<\/pre>\n<h2 id=\"runlevels\">\u8fd0\u884c\u7ea7\u522b<\/h2>\n<h3>Linux<\/h3>\n<p>\u4e00\u65e6\u5185\u6838\u52a0\u8f7d\u5b8c\u6210\uff0c\u5185\u6838\u4f1a\u542f\u52a8\u00a0<code>init<\/code>\u00a0\u8fdb\u7a0b\uff0c\u7136\u540e\u8fd0\u884c\u00a0<code>rc<\/code>\u00a0\u811a\u672c\uff0c\u4e4b\u540e\u8fd0\u884c\u6240\u6709\u5c5e\u4e8e\u5176\u8fd0\u884c\u7ea7\u522b\u7684\u547d\u4ee4\u811a\u672c\u3002\u8fd9\u4e9b\u811a\u672c\u90fd\u50a8\u5b58\u5728 \/etc\/rc.d\/rcN.d \u4e2d(N\u4ee3\u8868\u8fd0\u884c\u7ea7\u522b)\uff0c\u5e76\u4e14\u90fd\u5efa\u7acb\u7740\u5230 \/etc\/init.d \u5b50\u76ee\u5f55\u4e2d\u547d\u4ee4\u811a\u672c\u7a0b\u5e8f\u7684\u7b26\u53f7\u94fe\u63a5\u3002<br \/>\n\u9ed8\u8ba4\u8fd0\u884c\u7ea7\u522b\u914d\u7f6e\u5728 \/etc\/inittab \u4e2d\u3002\u5b83\u901a\u5e38\u4e3a 3 \u6216 5\uff1a<\/p>\n<pre># grep default: \/etc\/inittab                                         \r\nid:3:initdefault:\r\n<\/pre>\n<p>\u53ef\u4ee5\u4f7f\u7528\u00a0<code>init<\/code>\u00a0\u6765\u6539\u53d8\u5f53\u524d\u8fd0\u884c\u7ea7\u522b\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<pre># init 5                             <span class=\"cmt\"># \u8fdb\u5165\u8fd0\u884c\u7ea7\u522b 5<\/span><\/pre>\n<p>\u8fd0\u884c\u7ea7\u522b\u5217\u8868\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li>0 \u00a0 \u00a0 \u00a0 \u7cfb\u7edf\u505c\u6b62<\/li>\n<li>1 \u00a0 \u00a0 \u00a0 \u8fdb\u5165\u5355\u7528\u6237\u6a21\u5f0f(\u4e5f\u53ef\u4ee5\u662f S)<\/li>\n<li>2 \u00a0 \u00a0 \u00a0 \u6ca1\u6709 NFS \u7279\u6027\u7684\u591a\u7528\u6237\u6a21\u5f0f<\/li>\n<li>3 \u00a0 \u00a0 \u00a0 \u5b8c\u5168\u591a\u7528\u6237\u6a21\u5f0f(\u6b63\u5e38\u64cd\u4f5c\u6a21\u5f0f)<\/li>\n<li>4 \u00a0 \u00a0 \u00a0 \u672a\u4f7f\u7528<\/li>\n<li>5 \u00a0 \u00a0 \u00a0 \u7c7b\u4f3c\u4e8e\u7ea7\u522b3\uff0c\u4f46\u63d0\u4f9b XWindow \u7cfb\u7edf\u767b\u5f55\u73af\u5883<\/li>\n<li>6 \u00a0 \u00a0 \u00a0 \u91cd\u65b0\u542f\u52a8\u7cfb\u7edf<\/li>\n<\/ul>\n<p>\u4f7f\u7528\u00a0<code>chkconfig<\/code>\u00a0\u5de5\u5177\u63a7\u5236\u7a0b\u5e8f\u5728\u4e00\u4e2a\u8fd0\u884c\u7ea7\u522b\u542f\u52a8\u548c\u505c\u6b62\u3002<\/p>\n<pre># chkconfig --list                   <span class=\"cmt\"># \u5217\u51fa\u6240\u6709 init \u811a\u672c<\/span>\r\n# chkconfig --list sshd              <span class=\"cmt\"># \u67e5\u770b sshd \u5728\u5404\u4e2a\u8fd0\u884c\u7ea7\u522b\u4e2d\u7684\u542f\u52a8\u914d\u7f6e<\/span>\r\n# chkconfig sshd --level 35 on       <span class=\"cmt\"># \u5bf9 sshd \u5728\u7ea7\u522b 3 \u548c 5 \u4e0b\u521b\u5efa\u542f\u52a8\u9879<\/span>\r\n# chkconfig sshd off                 <span class=\"cmt\"># \u5728\u6240\u6709\u7684\u8fd0\u884c\u7ea7\u522b\u4e0b\u7981\u7528 sshd<\/span>\r\n<\/pre>\n<p>Debian \u548c\u57fa\u4e8eDebian \u53d1\u884c\u7248\u50cf Ubuntu \u6216 Knoppix \u4f7f\u7528\u547d\u4ee4\u00a0<code>update-rc.d<\/code>\u00a0\u6765\u7ba1\u7406\u8fd0\u884c\u7ea7\u522b\u811a\u672c\u3002\u9ed8\u8ba4\u542f\u52a8\u4e3a 2,3,4 \u548c 5\uff0c\u505c\u6b62\u4e3a 0,1 \u548c 6\u3002<\/p>\n<pre># update-rc.d sshd defaults          <span class=\"cmt\"># \u8bbe\u7f6e sshd \u4e3a\u9ed8\u8ba4\u542f\u52a8\u7ea7\u522b<\/span>\r\n# update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 .  <span class=\"cmt\"># \u7528\u663e\u793a\u53c2\u6570<\/span>\r\n# update-rc.d -f sshd remove         <span class=\"cmt\"># \u5728\u6240\u6709\u7684\u8fd0\u884c\u7ea7\u522b\u4e0b\u7981\u7528 sshd<\/span>\r\n# shutdown -h now (\u6216\u8005 # poweroff)  <span class=\"cmt\"># \u5173\u95ed\u505c\u6b62\u7cfb\u7edf<\/span>\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<p>BSD \u542f\u52a8\u6b65\u9aa4\u4e0d\u540c\u4e8e SysV, \u5979\u6ca1\u6709\u8fd0\u884c\u7ea7\u522b\u3002\u5979\u7684\u542f\u52a8\u72b6\u6001(\u5355\u7528\u6237\uff0c\u6709\u6216\u6ca1\u6709 XWindow)\u88ab\u914d\u7f6e\u5728\u00a0<code>\/etc\/ttys<\/code>\u4e2d\u3002\u6240\u6709\u7684\u7cfb\u7edf\u811a\u672c\u90fd\u4f4d\u4e8e\u00a0<code>\/etc\/rc.d\/<\/code>\u4e2d\uff0c\u7b2c\u4e09\u65b9\u5e94\u7528\u7a0b\u5e8f\u4f4d\u4e8e\u00a0<code>\/usr\/local\/etc\/rc.d\/<\/code>\u4e2d\u3002service \u7684\u542f\u52a8\u987a\u5e8f\u88ab\u914d\u7f6e\u5728\u00a0<code>\/etc\/rc.conf<\/code>\u00a0\u548c<code>\/etc\/rc.conf.local<\/code>\u4e2d\u3002\u9ed8\u8ba4\u884c\u4e3a\u53ef\u5728\u00a0<code>\/etc\/defaults\/rc.conf<\/code>\u00a0\u4e2d\u8fdb\u884c\u914d\u7f6e\u3002 \u8fd9\u4e9b\u811a\u672c\u81f3\u5c11\u54cd\u5e94 start|stop|status.<\/p>\n<pre># \/etc\/rc.d\/sshd status\r\nsshd is running as pid 552.\r\n# shutdown now                       <span class=\"cmt\"># \u8fdb\u5165\u5355\u7528\u6237\u6a21\u5f0f<\/span>\r\n# exit                               <span class=\"cmt\"># \u8fd4\u56de\u5230\u591a\u7528\u6237\u6a21\u5f0f<\/span>\r\n# shutdown -p now                    <span class=\"cmt\"># \u5173\u95ed\u505c\u6b62\u7cfb\u7edf<\/span>\r\n# shutdown -r now                    <span class=\"cmt\"># \u91cd\u65b0\u542f\u52a8\u7cfb\u7edf<\/span>\r\n<\/pre>\n<p>\u540c\u6837\u53ef\u4ee5\u4f7f\u7528\u8fdb\u7a0b\u00a0<code>init<\/code>\u00a0\u8fdb\u5165\u4e0b\u5217\u72b6\u6001\u7ea7\u522b\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff1a\u00a0<code># init 6<\/code>\u00a0\u4e3a\u91cd\u542f\u3002<\/p>\n<ul>\n<li>0 \u00a0 \u00a0 \u00a0 \u505c\u6b62\u7cfb\u7edf\u5e76\u5173\u95ed\u7535\u6e90 (\u4fe1\u53f7\u00a0<code>USR2<\/code>)<\/li>\n<li>1 \u00a0 \u00a0 \u00a0 \u8fdb\u5165\u5355\u7528\u6237\u6a21\u5f0f (\u4fe1\u53f7\u00a0<code>TERM<\/code>)<\/li>\n<li>6 \u00a0 \u00a0 \u00a0 \u91cd\u65b0\u542f\u52a8 (\u4fe1\u53f7\u00a0<code>INT<\/code>)<\/li>\n<li>c \u00a0 \u00a0 \u00a0 \u963b\u6b62\u8fdb\u4e00\u6b65\u767b\u5f55 (\u4fe1\u53f7\u00a0<code>TSTP<\/code>)<\/li>\n<li>q \u00a0 \u00a0 \u00a0 \u91cd\u65b0\u68c0\u67e5 ttys(5) \u6587\u4ef6 (\u4fe1\u53f7\u00a0<code>HUP<\/code>)<\/li>\n<\/ul>\n<h2 id=\"resetpasswd\">\u91cd\u8bbe root \u5bc6\u7801<\/h2>\n<h3>Linux \u65b9\u6cd5 1<\/h3>\n<p>\u5728\u5f15\u5bfc\u52a0\u8f7d\u5668(lilo \u6216 grub)\u4e2d\uff0c\u952e\u5165\u5982\u4e0b\u542f\u9009\u9879\uff1a<\/p>\n<pre>init=\/bin\/sh<\/pre>\n<p>\u5185\u6838\u4f1a\u6302\u8f7d root \u5206\u533a\uff0c\u8fdb\u7a0b\u00a0<code>init<\/code>\u00a0\u4f1a\u542f\u52a8 bourne shell \u800c\u4e0d\u662f\u00a0<code>rc<\/code>\uff0c\u7136\u540e\u662f\u8fd0\u884c\u7ea7\u522b\u3002\u4f7f\u7528\u547d\u4ee4\u00a0<code>passwd<\/code>\u00a0\u8bbe\u7f6e\u5bc6\u7801\u7136\u540e\u91cd\u542f\u3002\u522b\u5fd8\u4e86\u9700\u8981\u5728\u5355\u7528\u6237\u6a21\u5f0f\u4e0b\u505a\u8fd9\u4e9b\u52a8\u4f5c\u3002<br \/>\n\u5982\u679c\u91cd\u542f\u540e root \u5206\u533a\u88ab\u6302\u8f7d\u4e3a\u53ea\u8bfb\uff0c\u91cd\u65b0\u6302\u5728\u5b83\u4e3a\u8bfb\u5199\uff1a<\/p>\n<pre># mount -o remount,rw \/\r\n# passwd                             <span class=\"cmt\"># \u6216\u8005\u5220\u9664 root \u5bc6\u7801 (\/etc\/shadow)<\/span>\r\n# sync; mount -o remount,ro \/        <span class=\"cmt\"># sync \u5728\u91cd\u65b0\u6302\u5728\u4e3a\u53ea\u8bfb\u4e4b\u524d sync \u4e00\u4e0b<\/span>\r\n# reboot\r\n<\/pre>\n<h3>FreeBSD \u548c Linux \u65b9\u6cd5 2<\/h3>\n<p>FreeBSD \u4e0d\u4f1a\u8ba9\u4f60\u8fd9\u4e48\u505a\u3002\u89e3\u51b3\u65b9\u6848\u662f\u7528\u5176\u4ed6\u64cd\u4f5c\u7cfb\u7edf(\u50cf\u7cfb\u7edf\u7d27\u6025\u4fee\u590d\u5149\u76d8)\u6302\u8f7d root \u5206\u533a\uff0c\u7136\u540e\u66f4\u6539\u5bc6\u7801\u3002<\/p>\n<ul>\n<li>\u7528 live cd \u6216\u5b89\u88c5\u76d8\u542f\u52a8\u8fdb\u5165\u4fee\u590d\u6a21\u5f0f\u540e\uff0c\u4f1a\u5f97\u5230\u4e00\u4e2a shell\u3002<\/li>\n<li>\u7528 fdisk \u67e5\u627e root \u5206\u533a\u3002\u6bd4\u5982\uff1afdisk \/dev\/sda<\/li>\n<li>\u6302\u8f7d\u5b83\u5e76\u4f7f\u7528 chroot \u547d\u4ee4:<\/li>\n<\/ul>\n<pre># mount -o rw \/dev\/ad4s3a \/mnt\r\n# chroot \/mnt                        <span class=\"cmt\"># \u6539\u53d8\u7a0b\u5e8f\u6267\u884c\u65f6\u6240\u53c2\u8003\u7684\u6839\u76ee\u5f55\u4f4d\u7f6e\u4e3a \/mnt<\/span>\r\n# passwd\r\n# reboot\r\n<\/pre>\n<h2 id=\"kernelmodules\">\u5185\u6838\u6a21\u5757<\/h2>\n<h3>Linux<\/h3>\n<pre># lsmod                              <span class=\"cmt\"># \u5217\u51fa\u6240\u6709\u5df2\u8f7d\u5165\u5185\u6838\u7684\u6a21\u5757<\/span>\r\n# modprobe isdn                      <span class=\"cmt\"># \u8f7d\u5165 isdn \u6a21\u5757<\/span>\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<pre># kldstat                            <span class=\"cmt\"># \u5217\u51fa\u6240\u6709\u5df2\u8f7d\u5165\u5185\u6838\u7684\u6a21\u5757<\/span>\r\n# kldload crypto                     <span class=\"cmt\"># \u8f7d\u5165 crypto \u6a21\u5757<\/span>\r\n<\/pre>\n<h2 id=\"compilekernel\">\u7f16\u8bd1\u5185\u6838<\/h2>\n<h3>Linux<\/h3>\n<pre># cd \/usr\/src\/linux\r\n# make mrproper                      <span class=\"cmt\"># \u6e05\u9664\u6240\u6709\u4e1c\u897f\uff0c\u5305\u62ec\u914d\u7f6e\u6587\u4ef6<\/span>\r\n# make oldconfig                     <span class=\"cmt\"># \u4ece\u5f53\u524d\u5185\u6838\u914d\u7f6e\u6587\u4ef6\u7684\u57fa\u7840\u4e0a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u914d\u7f6e\u6587\u4ef6<\/span>\r\n# make menuconfig                    <span class=\"cmt\"># \u6216\u8005 xconfig (Qt) \u6216\u8005 gconfig (GTK)<\/span>\r\n# make                               <span class=\"cmt\"># \u521b\u5efa\u4e00\u4e2a\u5df2\u538b\u7f29\u7684\u5185\u6838\u6620\u50cf\u6587\u4ef6<\/span>\r\n# make modules                       <span class=\"cmt\"># \u7f16\u8bd1\u6a21\u5757<\/span>\r\n# make modules_install               <span class=\"cmt\"># \u5b89\u88c5\u6a21\u5757<\/span>\r\n# make install                       <span class=\"cmt\"># \u5b89\u88c5\u5185\u6838<\/span>\r\n# reboot\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<p>\u8981\u6539\u53d8\u548c\u91cd\u5efa\u5185\u6838\uff0c\u9700\u8981\u62f7\u8d1d\u6e90\u914d\u7f6e\u6587\u4ef6\u7136\u540e\u7f16\u8f91\u5b83\u3002\u5f53\u7136\u4e5f\u53ef\u4ee5\u76f4\u63a5\u7f16\u8f91\u00a0<code>GENERIC<\/code>\u00a0\u6587\u4ef6\u3002<\/p>\n<pre># cd \/usr\/src\/sys\/i386\/conf\/\r\n# cp GENERIC MYKERNEL\r\n# cd \/usr\/src\r\n# make buildkernel KERNCONF=MYKERNEL\r\n# make installkernel KERNCONF=MYKERNEL\r\n<\/pre>\n<p>\u8981\u91cd\u5efa\u5b8c\u5168\u7684\u64cd\u4f5c\u7cfb\u7edf\uff1a<\/p>\n<pre># make buildworld                    <span class=\"cmt\"># \u6784\u5efa\u5b8c\u5168\u7684\u7cfb\u7edf\uff0c\u4f46\u4e0d\u662f\u5185\u6838<\/span>\r\n# make buildkernel                   <span class=\"cmt\"># \u4f7f\u7528 KERNCONF \u914d\u7f6e\u6587\u4ef6\u7f16\u8bd1\u5185\u6838<\/span>\r\n# make installkernel\r\n# reboot\r\n# mergemaster -p                     <span class=\"cmt\"># \u5efa\u7acb\u4e34\u65f6\u6839\u73af\u5883\u5e76\u6bd4\u5bf9\u7cfb\u7edf\u914d\u7f6e\u6587\u4ef6<\/span>\r\n# make installworld\r\n# mergemaster                        <span class=\"cmt\"># \u5347\u7ea7\u6240\u6709\u914d\u7f6e\u548c\u5176\u4ed6\u6587\u4ef6<\/span>\r\n# reboot\r\n<\/pre>\n<p>\u5bf9\u4e8e\u6e90\u7684\u4e00\u4e9b\u5c0f\u6539\u52a8\uff0c\u6709\u65f6\u5019\u7b80\u5355\u7684\u547d\u4ee4\u5c31\u8db3\u591f\u4e86\uff1a<\/p>\n<pre># make kernel world                  <span class=\"cmt\"># \u7f16\u8bd1\u5e76\u5b89\u88c5\u5185\u6838\u548c\u7cfb\u7edf<\/span>\r\n# mergemaster\r\n# reboot\r\n<\/pre>\n<\/div>\n<div id=\"processes\">\n<h1><a>\u8fdb\u7a0b<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#ps\">\u5217\u8868<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#nice\">\u4f18\u5148\u7ea7<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#bgfg\">\u540e\u53f0\/\u524d\u53f0<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#top\">Top<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#kill\">Kill<\/a><\/p>\n<h2 id=\"ps\">\u8fdb\u7a0b\u5217\u8868<\/h2>\n<p>PID\u662f\u6bcf\u4e2a\u8fdb\u7a0b\u552f\u4e00\u53f7\u7801\u3002\u4f7f\u7528\u00a0<code>ps<\/code>\u00a0\u83b7\u53d6\u6240\u6709\u6b63\u5728\u8fd0\u884c\u7684\u8fdb\u7a0b\u5217\u8868\u3002<\/p>\n<pre># ps -auxefw                         <span class=\"cmt\"># \u6240\u6709\u6b63\u5728\u8fd0\u884c\u8fdb\u7a0b\u7684\u8be6\u5c3d\u5217\u8868<\/span><\/pre>\n<p>\u7136\u800c\uff0c\u66f4\u5178\u578b\u7684\u7528\u6cd5\u662f\u4f7f\u7528\u7ba1\u9053\u6216\u8005\u00a0<code>pgrep<\/code>:<\/p>\n<pre># ps axww | grep cron\r\n  586  ??  Is     0:01.48 \/usr\/sbin\/cron -s\r\n# ps aux | grep 'ss[h]'              <span class=\"cmt\"># Find all ssh pids without the grep pid<\/span>\r\n# pgrep -l sshd                      <span class=\"cmt\"># \u67e5\u627e\u6240\u6709\u8fdb\u7a0b\u540d\u4e2d\u6709sshd\u7684\u8fdb\u7a0bID<\/span>\r\n# echo $$                            <span class=\"cmt\"># The PID of your shell<\/span>\r\n# fuser -va 22\/tcp                   <span class=\"cmt\"># \u5217\u51fa\u4f7f\u7528\u7aef\u53e322\u7684\u8fdb\u7a0b<\/span>\r\n# fuser -va \/home                    <span class=\"cmt\"># \u5217\u51fa\u8bbf\u95ee \/home \u5206\u533a\u7684\u8fdb\u7a0b<\/span>\r\n# strace df                          <span class=\"cmt\"># \u8ddf\u8e2a\u7cfb\u7edf\u8c03\u7528\u548c\u4fe1\u53f7<\/span>\r\n# truss df                           <span class=\"cmt\"># \u540c\u4e0a(FreeBSD\/Solaris\/\u7c7bUnix)<\/span>\r\n# history | tail -50                 <span class=\"cmt\"># \u663e\u793a\u6700\u540e50\u4e2a\u4f7f\u7528\u8fc7\u7684\u547d\u4ee4<\/span>\r\n<\/pre>\n<h2 id=\"nice\">\u4f18\u5148\u7ea7<\/h2>\n<p>\u7528\u00a0<code>renice<\/code>\u00a0\u66f4\u6539\u6b63\u5728\u8fd0\u884c\u8fdb\u7a0b\u7684\u4f18\u5148\u7ea7\u3002\u8d1f\u503c\u662f\u66f4\u9ad8\u7684\u4f18\u5148\u7ea7\uff0c\u6700\u5c0f\u4e3a-20\uff0c\u5176\u6b63\u503c\u4e0e &#8220;nice&#8221; \u503c\u7684\u610f\u4e49\u76f8\u540c\u3002<\/p>\n<pre># renice -5 586                      <span class=\"cmt\"># \u66f4\u5f3a\u7684\u4f18\u5148\u7ea7<\/span>\r\n586: old priority 0, new priority -5\r\n<\/pre>\n<p>\u4f7f\u7528\u00a0<code>nice<\/code>\u00a0\u547d\u4ee4\u542f\u52a8\u4e00\u4e2a\u5df2\u5b9a\u4e49\u4f18\u5148\u7ea7\u7684\u8fdb\u7a0b\u3002 \u6b63\u503c\u4e3a\u4f4e\u4f18\u5148\u7ea7\uff0c\u8d1f\u503c\u4e3a\u9ad8\u4f18\u5148\u7ea7\u3002\u786e\u5b9a\u4f60\u77e5\u9053\u00a0<code>\/usr\/bin\/nice<\/code>\u00a0\u6216\u8005\u4f7f\u7528 shell \u5185\u7f6e\u547d\u4ee4(<code># which nice<\/code>)\u3002<\/p>\n<pre># nice -n -5 top                     <span class=\"cmt\"># \u66f4\u9ad8\u4f18\u5148\u7ea7(\/usr\/bin\/nice)<\/span>\r\n# nice -n 5 top                      <span class=\"cmt\"># \u66f4\u4f4e\u4f18\u5148\u7ea7(\/usr\/bin\/nice)<\/span>\r\n# nice +5 top                        <span class=\"cmt\"># tcsh \u5185\u7f6e nice \u547d\u4ee4(\u540c\u4e0a)<\/span>\r\n<\/pre>\n<p>nice \u53ef\u4ee5\u5f71\u54cd CPU \u7684\u8c03\u5ea6\uff0c\u53e6\u4e00\u4e2a\u5b9e\u7528\u547d\u4ee4\u00a0<code>ionice<\/code>\u00a0\u53ef\u4ee5\u8c03\u5ea6\u78c1\u76d8 IO\u3002This is very useful for intensive IO application which can bring a machine to its knees while still in a lower priority. \u6b64\u547d\u4ee4\u4ec5\u53ef\u5728 Linux (AFAIK) \u4e0a\u4f7f\u7528\u3002\u4f60\u53ef\u4ee5\u9009\u62e9\u4e00\u4e2a\u7c7b\u578b(idle &#8211; best effort &#8211; real time)\uff0c\u5b83\u7684 man \u9875\u5f88\u77ed\u5e76\u6709\u5f88\u597d\u7684\u89e3\u91ca\u3002<\/p>\n<pre># ionice c3 -p123                    <span class=\"cmt\"># \u7ed9 pid 123 \u8bbe\u7f6e\u4e3a idle \u7c7b\u578b<\/span>\r\n# ionice -c2 -n0 firefox             <span class=\"cmt\"># \u7528 best effort \u7c7b\u578b\u8fd0\u884c firefox \u5e76\u4e14\u8bbe\u4e3a\u9ad8\u4f18\u5148\u7ea7<\/span>\r\n# ionice -c3 -p$$                    <span class=\"cmt\"># \u5c06\u5f53\u524d\u7684\u8fdb\u7a0b(shell)\u7684\u78c1\u76d8 IO \u8c03\u5ea6\u8bbe\u7f6e\u4e3a idle \u7c7b\u578b<\/span>\r\n<\/pre>\n<p>\u4f8b\u4e2d\u6700\u540e\u4e00\u6761\u547d\u4ee4\u5bf9\u4e8e\u7f16\u8bd1(\u6216\u8c03\u8bd5)\u4e00\u4e2a\u5927\u578b\u9879\u76ee\u4f1a\u975e\u5e38\u6709\u7528\u3002\u6bcf\u4e00\u4e2a\u8fd0\u884c\u4e8e\u6b64 shell \u7684\u547d\u4ee4\u90fd\u4f1a\u6709\u4e00\u4e2a\u8f83\u4f4e\u7684\u4f18\u5148\u7ea7\uff0c\u4f46\u5e76\u4e0d\u59a8\u788d\u8fd9\u4e2a\u7cfb\u7edf\u3002$$ \u662f\u4f60 shell \u7684 pid (\u8bd5\u8bd5 echo $$)\u3002<\/p>\n<h2 id=\"bgfg\">\u524d\u53f0\/\u540e\u53f0<\/h2>\n<p>\u5f53\u4e00\u4e2a\u8fdb\u7a0b\u5728 shell \u4e2d\u5df2\u8fd0\u884c\uff0c\u53ef\u4ee5\u4f7f\u7528\u00a0<code>[Ctrl]-[Z] (^Z)<\/code>,\u00a0<code>bg<\/code>\u00a0\u548c\u00a0<code>fg<\/code>\u00a0\u6765 \u8c03\u5165\u8c03\u51fa\u524d\u540e\u53f0\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff1a\u542f\u52a8 2 \u4e2a\u8fdb\u7a0b\uff0c\u8c03\u5165\u540e\u53f0\u3002\u4f7f\u7528\u00a0<code>jobs<\/code>\u00a0\u5217\u51fa\u540e\u53f0\u5217\u8868\uff0c\u7136\u540e\u518d\u8c03\u5165\u4e00\u4e2a\u8fdb\u7a0b\u5230\u524d\u53f0\u3002<\/p>\n<pre># ping cb.vu &gt; ping.log\r\n^Z                                   <span class=\"cmt\"># ping \u4f7f\u7528 [Ctrl]-[Z] \u6765\u6682\u505c(\u505c\u6b62)<\/span> \r\n# bg                                 <span class=\"cmt\"># \u8c03\u5165\u540e\u53f0\u7ee7\u7eed\u8fd0\u884c<\/span>\r\n# jobs -l                            <span class=\"cmt\"># \u540e\u53f0\u8fdb\u7a0b\u5217\u8868<\/span>\r\n[1]  - 36232 Running                       ping cb.vu &gt; ping.log\r\n[2]  + 36233 Suspended (tty output)        top\r\n# fg %2                              <span class=\"cmt\"># \u8ba9\u8fdb\u7a0b 2 \u8fd4\u56de\u5230\u524d\u53f0\u8fd0\u884c<\/span>\r\n<\/pre>\n<p>\u4f7f\u7528\u00a0<code>nohup<\/code>\u00a0\u5f00\u542f\u4e00\u4e2a\u6301\u7eed\u8fd0\u884c\u7684\u8fdb\u7a0b\u76f4\u5230 shell \u88ab\u5173\u95ed(\u907f\u514d\u6302\u65ad)\u3002<\/p>\n<pre># nohup ping -i 60 &gt; ping.log &amp;\r\n<\/pre>\n<h2 id=\"top\">Top<\/h2>\n<p><code>top<\/code>\u00a0\u7a0b\u5e8f\u7528\u6765\u5b9e\u65f6\u663e\u793a\u7cfb\u7edf\u4e2d\u5404\u4e2a\u8fdb\u7a0b\u7684\u8fd0\u884c\u4fe1\u606f\u3002<\/p>\n<pre># top<\/pre>\n<p>\u5f53\u00a0<code>top<\/code>\u00a0\u5728\u8fd0\u884c\u7684\u65f6\u5019\uff0c\u6309\u4e0b\u00a0<code>h<\/code>\u00a0\u952e\u4f1a\u663e\u793a\u5e2e\u52a9\u753b\u9762\u3002\u5e38\u7528\u952e\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li><b>u [\u7528\u6237\u540d]<\/b>\u00a0\u53ea\u663e\u793a\u5c5e\u4e8e\u6b64\u7528\u6237\u7684\u8fdb\u7a0b\u3002\u4f7f\u7528 + \u6216\u8005\u7a7a\u767d\u53ef\u4ee5\u67e5\u770b\u6240\u6709\u7528\u6237<\/li>\n<li><b>k [PID]<\/b>\u00a0\u7ed3\u675f PID \u8fdb\u7a0b<\/li>\n<li><b>1<\/b>\u00a0\u663e\u793a\u6240\u6709\u8fdb\u7a0b\u72b6\u6001\u4fe1\u606f(\u53ea\u6709Linux)<\/li>\n<li><b>R<\/b>\u00a0\u5c06\u5f53\u524d\u6392\u5e8f\u5012\u8f6c<\/li>\n<\/ul>\n<h2 id=\"kill\">Kill\u547d\u4ee4\u4e0e\u4fe1\u53f7<\/h2>\n<p>\u4f7f\u7528\u00a0<code>kill<\/code>\u00a0\u6216\u00a0<code>killall<\/code>\u00a0\u7ec8\u6b62\u6216\u53d1\u9001\u4e00\u4e2a\u4fe1\u53f7\u7ed9\u8fdb\u7a0b\u3002<\/p>\n<pre># ping -i 60 cb.vu &gt; ping.log &amp;\r\n[1] 4712\r\n# kill -s TERM 4712                  <span class=\"cmt\"># \u540c kill -15 4712<\/span>\r\n# killall -1 httpd                   <span class=\"cmt\"># \u53d1\u9001 HUP \u4fe1\u53f7\u7ec8\u6b62\u8fdb\u7a0b httpd<\/span>\r\n# pkill -9 http                      <span class=\"cmt\"># \u53d1\u9001 TERM \u4fe1\u53f7\u7ec8\u6b62\u5305\u542b http \u7684\u8fdb\u7a0b<\/span>\r\n# pkill -TERM -u www                 <span class=\"cmt\"># \u53d1\u9001 TERM \u4fe1\u53f7\u7ec8\u6b62 www \u6240\u6709\u8005\u8fdb\u7a0b<\/span>\r\n# fuser -k -TERM -m \/home            <span class=\"cmt\"># \u7ec8\u6b62\u6240\u6709\u8bbf\u95ee \/home \u7684\u8fdb\u7a0b(\u5378\u8f7d\u8be5\u5206\u533a\u524d)<\/span>\r\n<\/pre>\n<p>\u4e0b\u9762\u662f\u4e00\u4e9b\u91cd\u8981\u7684\u4fe1\u53f7\uff1a<\/p>\n<ul>\n<li>1 \u00a0 \u00a0 \u00a0\u00a0<code>HUP<\/code>\u00a0(\u6302\u8d77)<\/li>\n<li>2 \u00a0 \u00a0 \u00a0\u00a0<code>INT<\/code>\u00a0(\u4e2d\u65ad)<\/li>\n<li>3 \u00a0 \u00a0 \u00a0\u00a0<code>QUIT<\/code>\u00a0(\u9000\u51fa)<\/li>\n<li>9 \u00a0 \u00a0 \u00a0\u00a0<code>KILL<\/code>\u00a0(KILL \u4fe1\u53f7\u4e0d\u80fd\u88ab\u6355\u6349\uff0c\u4e0d\u80fd\u88ab\u5ffd\u7565\u3002)<\/li>\n<li>15 \u00a0 \u00a0\u00a0<code>TERM<\/code>\u00a0(\u8f6f\u4ef6\u7ec8\u6b62\u4fe1\u53f7)<\/li>\n<\/ul>\n<\/div>\n<div id=\"filesystem\">\n<h1><a>\u6587\u4ef6\u7cfb\u7edf<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#diskinfo\">\u78c1\u76d8\u4fe1\u606f<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#fsboot\">Boot<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#mountpoints\">\u78c1\u76d8\u4f7f\u7528\u60c5\u51b5<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#filesstat\">\u5df2\u6253\u5f00\u7684\u6587\u4ef6<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#mountcd\">\u6302\u8f7d\/\u91cd\u6302<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#mountsmb\">\u6302\u8f7d SMB<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#mountimg\">\u6302\u8f7d\u6620\u50cf\u6587\u4ef6<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#burniso\">Burn ISO<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#createimg\">Create image<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#creatememdisk\">Memory disk<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#diskperf\">Disk performance<\/a><\/p>\n<h2 id=\"permissions\">\u6743\u9650<\/h2>\n<p>\u7528\u00a0<code>chmod<\/code>\u00a0\u548c\u00a0<code>chown<\/code>\u00a0\u66f4\u6539\u8bbf\u95ee\u6743\u9650\u548c\u6240\u6709\u6743\u3002\u5bf9\u4e8e\u6240\u6709\u7528\u6237\u7684\u9ed8\u8ba4\u63a9\u7801(umask)\u53ef\u4ee5\u5728 \/etc\/profile (Linux) \u6216 \/etc\/login.conf (FreeBSD) \u4e2d\u4fee\u6539\u3002\u5176\u9ed8\u8ba4\u63a9\u7801(umask)\u901a\u5e38\u4e3a 022\u3002\u63a9\u7801\u53ef\u4ee5\u548c777\u505a\u51cf\u6cd5\uff0c\u4ece\u800c\u5f97\u5230755\u7684\u6743\u9650\u3002<\/p>\n<pre>1 --x \u6267\u884c                           <span class=\"cmt\"># Mode 764 = \u6267\u884c\/\u8bfb\/\u5199 | \u8bfb\/\u5199 | \u8bfb<\/span>\r\n2 -w- \u5199                             <span class=\"cmt\"># |---\u6240\u6709\u8005|---\u7528\u6237\u7ec4|---\u5176\u4ed6\u7528\u6237|<\/span>\r\n4 r-- \u8bfb\r\n  ugo=a                              <span class=\"cmt\">u=\u6240\u6709\u8005, g=\u7528\u6237\u7ec4, o=\u5176\u4ed6\u7528\u6237, a=\u6240\u6709\u7528\u6237<\/span>\r\n<\/pre>\n<pre># chmod [OPTION] MODE[,MODE] FILE    <span class=\"cmt\"># MODE \u53ef\u4ee5\u662f [ugoa]*([-+=]([rwxXst]))<\/span>\r\n# chmod 640 \/var\/log\/maillog         <span class=\"cmt\"># \u66f4\u6539 maillog \u8bbf\u95ee\u6743\u9650\u4e3a -rw-r-----<\/span>\r\n# chmod u=rw,g=r,o= \/var\/log\/maillog <span class=\"cmt\"># \u540c\u4e0a<\/span>\r\n# chmod -R o-r \/home\/*               <span class=\"cmt\"># \u9012\u5f52\u53bb\u9664\u6240\u6709\u5176\u4ed6\u7528\u6237\u7684\u53ef\u8bfb\u6743\u9650<\/span>\r\n# chmod u+s \/path\/to\/prog            <span class=\"cmt\"># \u5728\u53ef\u6267\u884c\u4f4d\u8bbe\u7f6e SUID (\u77e5\u9053\u4f60\u5728\u5e72\u4ec0\u4e48!)<\/span>\r\n# find \/ -perm -u+s -print           <span class=\"cmt\"># \u67e5\u627e\u6240\u6709\u8bbe\u7f6e\u8fc7 SUID \u4f4d\u7684\u7a0b\u5e8f<\/span>\r\n# chown user:group \/path\/to\/file     <span class=\"cmt\"># \u6539\u53d8\u6587\u4ef6\u7684\u6240\u6709\u8005\u548c\u6587\u4ef6\u5173\u8054\u7684\u7ec4<\/span>\r\n# chgrp group \/path\/to\/file          <span class=\"cmt\"># \u6539\u53d8\u6587\u4ef6\u5173\u8054\u7684\u7ec4<\/span>\r\n# chmod 640 `find .\/ -type f -print` <span class=\"cmt\"># Change permissions to 640 for all files<\/span>\r\n# chmod 751 `find .\/ -type d -print` <span class=\"cmt\"># Change permissions to 751 for all directories<\/span>\r\n<\/pre>\n<h2 id=\"diskinfo\">\u78c1\u76d8\u4fe1\u606f<\/h2>\n<pre># diskinfo -v \/dev\/ad2               <span class=\"cmt\"># \u663e\u793a\u78c1\u76d8\u4fe1\u606f(\u6247\u533a\/\u5927\u5c0f) (FreeBSD)<\/span>\r\n# hdparm -I \/dev\/sda                 <span class=\"cmt\"># \u663e\u793a IDE\/ATA \u78c1\u76d8\u4fe1\u606f (Linux)<\/span>\r\n# fdisk \/dev\/ad2                     <span class=\"cmt\"># \u663e\u793a\u548c\u4fee\u6539\u78c1\u76d8\u5206\u533a\u8868<\/span>\r\n# smartctl -a \/dev\/ad2               <span class=\"cmt\"># \u663e\u793a\u78c1\u76d8\u68c0\u6d4b\u4fe1\u606f<\/span>\r\n<\/pre>\n<h2 id=\"fsboot\">Boot<\/h2>\n<h3>FreeBSD<\/h3>\n<p>\u5982\u679c\u65b0\u5185\u6838\u4e0d\u80fd\u5f15\u5bfc\uff0c\u8981\u5f15\u5bfc\u4e00\u4e2a\u65e7\u5185\u6838\uff0c\u505c\u6b62\u542f\u52a8\u5012\u8ba1\u65f6\uff0c\u505a\u5982\u4e0b\u52a8\u4f5c\uff1a<\/p>\n<pre># unload\r\n# load kernel.old\r\n# boot\r\n<\/pre>\n<h2 id=\"mountpoints\">\u7cfb\u7edf\u6302\u8f7d\u70b9\/\u78c1\u76d8\u4f7f\u7528\u60c5\u51b5<\/h2>\n<pre># mount | column -t                  <span class=\"cmt\"># \u663e\u793a\u7cfb\u7edf\u5df2\u6302\u8f7d\u5206\u533a\u60c5\u51b5<\/span>\r\n# df                                 <span class=\"cmt\"># \u663e\u793a\u78c1\u76d8\u5269\u4f59\u7a7a\u95f4\u548c\u6302\u8f7d\u7684\u8bbe\u5907<\/span>\r\n# cat \/proc\/partitions               <span class=\"cmt\"># \u663e\u793a\u6240\u6709\u8bbe\u5907\u7684\u6240\u6709\u5206\u533a(Linux)<\/span>\r\n<\/pre>\n<h3 id=\"diskusage\">\u78c1\u76d8\u4f7f\u7528\u60c5\u51b5<\/h3>\n<pre># du -sh *                           <span class=\"cmt\"># \u5217\u51fa\u5f53\u524d\u76ee\u5f55\u4e0b\u6240\u6709\u6587\u4ef6\u5939\u5927\u5c0f<\/span>\r\n# du -csh                            <span class=\"cmt\"># \u5f53\u524d\u76ee\u5f55\u4e0b\u6240\u6709\u76ee\u5f55\u5927\u5c0f\u603b\u6570<\/span>\r\n# du -ks * | sort -n -r              <span class=\"cmt\"># \u7531\u5927\u5230\u5c0f\u6392\u5e8f\u663e\u793a\u76ee\u5f55\u5927\u5c0f<\/span>\r\n# ls -lSr                            <span class=\"cmt\"># \u7531\u5c0f\u5230\u5927\u663e\u793a\u6587\u4ef6\u5217\u8868<\/span>\r\n<\/pre>\n<h2 id=\"filesstat\">\u8c01\u6253\u5f00\u4e86\u90a3\u4e9b\u6587\u4ef6<\/h2>\n<p>\u5bf9\u4e8e\u627e\u51fa\u54ea\u4e9b\u6587\u4ef6\u963b\u6b62\u5378\u8f7d\u5206\u533a\u5e76\u7ed9\u51fa\u6709\u4ee3\u8868\u6027\u7684\u9519\u8bef\u662f\u6709\u5e2e\u52a9\u7684\uff1a<\/p>\n<pre># umount \/home\/\r\numount: unmount of \/home             <span class=\"cmt\"># \u4e0d\u80fd\u5378\u8f7d\uff0c\u56e0\u4e3a\u6709\u4e00\u4e2a\u6587\u4ef6\u9501\u5b9a\u4e86 home<\/span>\r\n   failed: Device busy\r\n<\/pre>\n<h3>FreeBSD \u548c\u5927\u591a\u6570 Unix<\/h3>\n<pre># fstat -f \/home                     <span class=\"cmt\"># \u5bf9\u4e8e\u4e00\u4e2a\u6302\u8f7d\u70b9<\/span>\r\n# fstat -p PID                       <span class=\"cmt\"># \u5bf9\u4e8e\u4e00\u4e2a\u5e94\u7528\u7a0b\u5e8f\u8fdb\u7a0b ID<\/span>\r\n# fstat -u user                      <span class=\"cmt\"># \u5bf9\u4e8e\u4e00\u4e2a\u7528\u6237<\/span>\r\n<\/pre>\n<p>\u67e5\u627e\u5df2\u6253\u5f00\u65e5\u5fd7\u6587\u4ef6(\u6216\u5176\u4ed6\u5df2\u6253\u5f00\u6587\u4ef6)\uff0c \u6bd4\u5982 Xorg\uff1a<\/p>\n<pre># ps ax | grep Xorg | awk '{print $1}'\r\n1252\r\n# fstat -p 1252\r\nUSER     CMD          PID   FD MOUNT      INUM MODE         SZ|DV R\/W\r\nroot     Xorg        1252 root \/             2 drwxr-xr-x     512  r\r\nroot     Xorg        1252 text \/usr     216016 -rws--x--x  1679848 r\r\nroot     Xorg        1252    0 \/var     212042 -rw-r--r--   56987  w\r\n<\/pre>\n<p>\u5728 \/var \u4e2d\u7684\u53ea\u6709\u4e00\u4e2a inum \u4e3a 212042 \u7684\u6587\u4ef6\uff1a<\/p>\n<pre># find -x \/var -inum 212042\r\n\/var\/log\/Xorg.0.log\r\n<\/pre>\n<h3>Linux<\/h3>\n<p>\u4f7f\u7528\u00a0<code>fuser<\/code>\u00a0\u6216\u00a0<code>lsof<\/code>\u00a0\u5728\u4e00\u4e2a\u6302\u8f7d\u70b9\u4e2d\u67e5\u627e\u5df2\u6253\u5f00\u7684\u6587\u4ef6\uff1a<\/p>\n<pre># fuser -m \/home                     <span class=\"cmt\"># \u5217\u51fa\u8bbf\u95ee \/home \u7684\u8fdb\u7a0b<\/span>\r\n# lsof \/home\r\nCOMMAND   PID    USER   FD   TYPE DEVICE    SIZE     NODE NAME\r\ntcsh    29029 eedcoba  cwd    DIR   0,18   12288  1048587 \/home\/eedcoba (guam:\/home)\r\nlsof    29140 eedcoba  cwd    DIR   0,18   12288  1048587 \/home\/eedcoba (guam:\/home)\r\n<\/pre>\n<p>\u5173\u4e8e\u4e00\u4e2a\u5e94\u7528\u7a0b\u5e8f\uff1a<\/p>\n<pre>ps ax | grep Xorg | awk '{print $1}'\r\n3324\r\n# lsof -p 3324\r\nCOMMAND   PID    USER   FD   TYPE DEVICE    SIZE    NODE NAME\r\nXorg    3324 root    0w   REG        8,6   56296      12492 \/var\/log\/Xorg.0.log\r\n<\/pre>\n<p>\u5173\u4e8e\u5355\u4e2a\u6587\u4ef6\uff1a<\/p>\n<pre># lsof \/var\/log\/Xorg.0.log\r\nCOMMAND  PID USER   FD   TYPE DEVICE  SIZE  NODE NAME\r\nXorg    3324 root    0w   REG    8,6 56296 12492 \/var\/log\/Xorg.0.log\r\n<\/pre>\n<h2 id=\"mountcd\">\u6302\u8f7d\/\u91cd\u6302\u8f7d\u4e00\u4e2a\u6587\u4ef6\u7cfb\u7edf<\/h2>\n<p>\u4e3e\u4e2a cdrom \u7684\u4f8b\u5b50\u3002\u5982\u679c\u5df2\u7ecf\u5217\u4e8e \/etc\/fstab \u4e2d\uff1a<\/p>\n<pre># mount \/cdrom<\/pre>\n<p>\u6216\u5728 \/dev\/ \u4e2d\u67e5\u627e\u8bbe\u5907\uff0c\u4ea6\u6216\u4f7f\u7528\u00a0<code>dmesg<\/code>\u00a0\u547d\u4ee4<\/p>\n<h3>FreeBSD<\/h3>\n<pre># mount -v -t cd9660 \/dev\/cd0c \/mnt  <span class=\"cmt\"># cdrom<\/span>\r\n# mount_cd9660 \/dev\/wcd0c \/cdrom     <span class=\"cmt\"># \u53e6\u5916\u4e00\u4e2a\u65b9\u6cd5<\/span>\r\n# mount -v -t msdos \/dev\/fd0c \/mnt   <span class=\"cmt\"># \u8f6f\u9a71<\/span>\r\n<\/pre>\n<p>\/etc\/fstab \u4e2d\u7684\u4e00\u6761\uff1a<\/p>\n<pre># Device                Mountpoint      FStype  Options         Dump    Pass#\r\n\/dev\/acd0               \/cdrom          cd9660  ro,noauto       0       0\r\n<\/pre>\n<p>\u8981\u5141\u8bb8\u7528\u6237\u505a\u8fd9\u4e9b\uff0c\u53ef\u4ee5\u8fd9\u4e48\u505a\uff1a<\/p>\n<pre># sysctl vfs.usermount=1  <span class=\"cmt\"># \u6216\u8005\u5728 \/etc\/sysctl.conf \u4e2d\u63d2\u5165\u4e00\u6761 \"vfs.usermount=1\"<\/span>\r\n<\/pre>\n<h3>Linux<\/h3>\n<pre># mount -t auto \/dev\/cdrom \/mnt\/cdrom   <span class=\"cmt\"># \u5178\u578b\u7684 cdrom \u6302\u8f7d\u547d\u4ee4<\/span>\r\n# mount \/dev\/hdc -t iso9660 -r \/cdrom   <span class=\"cmt\"># IDE<\/span>\r\n# mount \/dev\/sdc0 -t iso9660 -r \/cdrom  <span class=\"cmt\"># SCSI<\/span>\r\n<\/pre>\n<p>\/etc\/fstab \u4e2d\u7684\u6761\u76ee\uff1a<\/p>\n<pre>\/dev\/cdrom   \/media\/cdrom  subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0<\/pre>\n<h4>\u7528 Linux \u6302\u8f7d\u4e00\u4e2a FreeBSD \u5206\u533a<\/h4>\n<p>\u7528 fdisk \u67e5\u627e\u5206\u533a\u53f7\uff0c\u8fd9\u901a\u5e38\u662f root \u5206\u533a\uff0c\u4f46\u4e5f\u53ef\u80fd\u662f\u5176\u4ed6 BSD slice\u3002\u5982\u679c FreeBSD \u6709\u8bb8\u591a slice\uff0c\u4ed6\u4eec\u4e0d\u5217\u4e8e\u540c\u4e00\u4e2a fdisk \u5206\u533a\u8868\u4e2d\uff0c\u4f46\u53ef\u89c1\u4e8e \/dev\/sda* \u6216 \/dev\/hda* \u4e2d\u3002<\/p>\n<pre># fdisk \/dev\/sda                     <span class=\"cmt\"># \u67e5\u627e FreeBSD \u5206\u533a<\/span>\r\n\/dev\/sda3   *        5357        7905    20474842+  a5  FreeBSD\r\n# mount -t ufs -o ufstype=ufs2,ro \/dev\/sda3 \/mnt\r\n\/dev\/sda10 = \/tmp; \/dev\/sda11 \/usr   <span class=\"cmt\"># \u5176\u4ed6 slice<\/span>\r\n<\/pre>\n<h3 id=\"remount\">\u91cd\u6302\u8f7d<\/h3>\n<p>\u4e0d\u7528\u5378\u8f7d\u4e00\u4e2a\u8bbe\u5907\u6765\u91cd\u6302\u8f7d\u3002 \u5bf9\u00a0<code>fsck<\/code>\u00a0\u6765\u8bf4\u662f\u5fc5\u987b\u7684\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<pre># mount -o remount,ro \/              <span class=\"cmt\"># Linux<\/span>\r\n# mount -o ro \/                      <span class=\"cmt\"># FreeBSD<\/span>\r\n<\/pre>\n<p>\u4ece cdrom \u62f7\u8d1d\u539f\u59cb\u6570\u636e\u8fdb\u4e00\u4e2a iso \u6620\u50cf\u6587\u4ef6\uff1a<\/p>\n<pre># dd if=\/dev\/cd0c of=file.iso<\/pre>\n<h2 id=\"addswap\">\u7ed9\u5373\u65f6\u70e7\u5f55(on-the-fly)\u6dfb\u52a0 swap<\/h2>\n<p>\u5047\u8bbe\u4f60\u9700\u8981\u5f88\u591a\u7684 swap (\u5373\u523b)\uff0c\u5982\u4e00\u4e2a 2GB \u6587\u4ef6 \/swap2gb (\u53ea\u9650 Linux)\u3002<\/p>\n<pre># dd if=\/dev\/zero of=\/swap2gb bs=1024k count=2000\r\n# mkswap \/swap2gb                    <span class=\"cmt\"># \u521b\u5efa\u4ea4\u6362\u533a<\/span>\r\n# swapon \/swap2gb                    <span class=\"cmt\"># \u6fc0\u6d3b\u8fd9\u4e2a swap\u3002\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u4e86<\/span>\r\n# swapoff \/swap2gb                   <span class=\"cmt\"># \u5f53\u4f7f\u7528\u5b8c\u6bd5\uff0c\u91ca\u653e\u8fd9\u4e2a swap<\/span>\r\n# rm \/swap2gb\r\n<\/pre>\n<h2 id=\"mountsmb\">\u6302\u8f7d\u4e00\u4e2a SMB\u00a0\u5171\u4eab<\/h2>\n<p>\u5047\u8bbe\u6211\u4eec\u8981\u8bbf\u95ee\u8ba1\u7b97\u673a smbserver \u4e0a\u7684\u540d\u53eb myshare \u7684 SMB \u5171\u4eab\uff0c\u5728 window PC \u4e0a\u952e\u5165\u7684\u5730\u5740\u662f \\\\smbserver\\myshare\\\u3002\u6211\u6302\u8f7d\u5230 \/mnt\/smbshare \u4e0a\u3002\u6ce8\u610f cifs \u5fc5\u987b\u662f IP \u6216 DNS \u540d\uff0c\u4e0d\u662f Windows \u540d\u5b57\u3002<\/p>\n<h3>Linux<\/h3>\n<pre># smbclient -U user -I 192.168.16.229 -L \/\/smbshare\/    <span class=\"cmt\"># \u5217\u51fa\u5171\u4eab<\/span>\r\n# mount -t smbfs -o username=winuser \/\/smbserver\/myshare \/mnt\/smbshare\r\n# mount -t cifs -o username=winuser,password=winpwd \/\/192.168.16.229\/myshare \/mnt\/share\r\n<\/pre>\n<p>\u6b64\u5916\uff0cmount.cifs \u8f6f\u4ef6\u5305\u53ef\u4ee5\u5b58\u50a8\u8ba4\u8bc1\u5230\u4e00\u4e2a\u6587\u4ef6\u4e2d\u3002\u4f8b\u5982\uff0c<code>\/home\/user\/.smb<\/code>:<\/p>\n<pre>username=winuser\r\npassword=winpwd\r\n<\/pre>\n<p>\u73b0\u5728\u53ef\u4ee5\u50cf\u4e0b\u9762\u90a3\u6837\u6302\u8f7d\uff1a<\/p>\n<pre># mount -t cifs -o credentials=\/home\/user\/.smb \/\/192.168.16.229\/myshare \/mnt\/smbshare<\/pre>\n<h3>FreeBSD<\/h3>\n<p>\u4f7f\u7528 -I \u6765\u83b7\u53d6 IP (\u6216 DNS \u540d\uff09\uff1bsmbserver \u662f Windows \u540d\u3002<\/p>\n<pre># smbutil view -I 192.168.16.229 \/\/winuser@smbserver    <span class=\"cmt\"># \u5217\u51fa\u5171\u4eab<\/span>\r\n# mount_smbfs -I 192.168.16.229 \/\/winuser@smbserver\/myshare \/mnt\/smbshare\r\n<\/pre>\n<h2 id=\"mountimg\">\u6302\u8f7d\u955c\u50cf\u6587\u4ef6<\/h2>\n<h3>Linux loop-back<\/h3>\n<pre># mount -t iso9660 -o loop file.iso \/mnt                <span class=\"cmt\"># \u6302\u8f7d CD \u955c\u50cf\u6587\u4ef6<\/span>\r\n# mount -t ext3 -o loop file.img \/mnt                   <span class=\"cmt\"># \u7528 ext3 \u6587\u4ef6\u7cfb\u7edf\u6302\u8f7d\u955c\u50cf\u6587\u4ef6<\/span>\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<p>\u7528\u4e8e\u5b58\u50a8\u8bbe\u5907 (\u5982\u679c\u9700\u8981\u505a # kldload md.ko \u52a8\u4f5c)\uff1a<\/p>\n<pre># mdconfig -a -t vnode -f file.iso -u 0\r\n# mount -t cd9660 \/dev\/md0 \/mnt\r\n# umount \/mnt; mdconfig -d -u 0                         <span class=\"cmt\"># \u6e05\u9664 md \u8bbe\u5907<\/span>\r\n<\/pre>\n<p>\u7528\u4e8e\u865a\u62df\u8282\u70b9\uff1a<\/p>\n<pre># vnconfig \/dev\/vn0c file.iso; mount -t cd9660 \/dev\/vn0c \/mnt\r\n# umount \/mnt; vnconfig -u \/dev\/vn0c                    <span class=\"cmt\"># \u6e05\u9664 vn \u8bbe\u5907<\/span>\r\n<\/pre>\n<h3>Solaris and FreeBSD<\/h3>\n<p>\u7528\u4e8e loop-back \u6587\u4ef6\u63a5\u53e3\u6216 lofi\uff1a<\/p>\n<pre># lofiadm -a file.iso\r\n# mount -F hsfs -o ro \/dev\/lofi\/1 \/mnt\r\n# umount \/mnt; lofiadm -d \/dev\/lofi\/1                   <span class=\"cmt\"># \u6e05\u9664 lofi \u8bbe\u5907<\/span>\r\n<\/pre>\n<h2 id=\"burniso\">\u521b\u5efa\u5e76\u523b\u5f55 ISO \u955c\u50cf\u6587\u4ef6<\/h2>\n<p>\u8fd9\u5c06\u4f1a\u62f7\u8d1d CD \u6216\u8005 DVD \u7684\u6247\u533a\u3002\u5f53\u4e0d\u7528\u00a0<code>conv=notrunc<\/code>\uff0c\u955c\u50cf\u6587\u4ef6\u4f1a\u7b49\u4e8e CD \u5185\u5bb9\u5927\u5c0f\u800c\u975e CD \u5bb9\u91cf\u5927\u5c0f\u3002\u770b\u4e0b\u9762\u548c\u00a0<a class=\"xref\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#dd\">dd \u4f8b\u5b50<\/a>\u3002<\/p>\n<pre># dd if=\/dev\/hdc of=\/tmp\/mycd.iso bs=2048 conv=notrunc<\/pre>\n<p>\u4f7f\u7528 mkisofs \u628a\u76ee\u5f55\u4e2d\u6240\u6709\u6587\u4ef6\u521b\u5efa\u6210 CD\/DVD \u955c\u50cf\u6587\u4ef6\u3002\u514b\u670d\u6587\u4ef6\u540d\u9650\u5236\uff1a-r \u5f00\u542f Rock Ridge \u6269\u5c55\u7528\u4e8e Unix \u7cfb\u7edf\uff0c-J \u5f00\u542f Joliet \u6269\u5c55\u7528\u4e8e\u5fae\u8f6f\u7cfb\u7edf\u3002-L \u5141\u8bb8 ISO9660 \u6587\u4ef6\u540d\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e3a\u53e5\u70b9\u3002<\/p>\n<pre># mkisofs -J -L -r -V TITLE -o imagefile.iso \/path\/to\/dir<\/pre>\n<p>\u5bf9\u4e8e FreeBSD\uff0cmkisofs \u53ef\u4ee5\u5230 port \u7684 sysutils\/cdrtools \u4e2d\u627e\u5230\u3002<\/p>\n<h3>\u523b\u5f55 ISO \u955c\u50cf\u6587\u4ef6<\/h3>\n<h4>FreeBSD<\/h4>\n<p>FreeBSD \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u6ca1\u6709\u5728 ATAPI \u9a71\u52a8\u4e0a\u542f\u7528 DMA\u3002DMA \u53ef\u7528 sysctl \u547d\u4ee4\u542f\u7528\uff0c\u5176\u53c2\u6570\u5982\u4e0b\uff0c\u6216\u8005\u5728 \/boot\/loader.conf \u4e2d\u6dfb\u52a0\u5982\u4e0b\u6761\u76ee\uff1a<\/p>\n<pre>hw.ata.ata_dma=\"1\"\r\nhw.ata.atapi_dma=\"1\"\r\n<\/pre>\n<p><code>burncd<\/code>\u00a0\u7528\u4e8e ATAPI \u9a71\u52a8(<code>burncd<\/code>\u00a0\u4e3a\u57fa\u672c\u7cfb\u7edf\u7684\u4e00\u90e8\u5206)\uff0c<code>cdrecord<\/code>\u00a0(\u5728 sysutils\/cdrtools \u4e2d)\u7528\u4e8e SCSI \u9a71\u52a8\u3002<\/p>\n<pre># burncd -f \/dev\/acd0 data imagefile.iso fixate      <span class=\"cmt\"># ATAPI \u9a71\u52a8<\/span>\r\n# cdrecord -scanbus                  <span class=\"cmt\"># \u67e5\u627e burner \u8bbe\u5907\u63cf\u8ff0\u7b26(\u5982 1,0,0)<\/span>\r\n# cdrecord dev=1,0,0 imagefile.iso\r\n<\/pre>\n<h4>Linux<\/h4>\n<p>\u5bf9\u4e8e Linux\uff0c\u540c\u6837\u4f7f\u7528\u00a0<code>cdrecord<\/code>\u00a0\u5982\u4e0a\u6587\u6240\u8ff0\u3002\u6b64\u5916\uff0c\u5b83\u8fd8\u53ef\u4ee5\u4f7f\u7528\u672c\u5730 ATAPI \u63a5\u53e3\u67e5\u627e\u8bbe\u5907\u63cf\u8ff0\u7b26\uff1a<\/p>\n<pre># cdrecord dev=ATAPI -scanbus<\/pre>\n<p>\u7136\u540e\u540c\u4e0a\u9762\u4e00\u6837\u70e7\u5f55 CD\/DVD\u3002<\/p>\n<h4>dvd+rw-tools<\/h4>\n<p><a href=\"http:\/\/fy.chalmers.se\/~appro\/linux\/DVD+RW\/\">dvd+rw-tools<\/a>\u00a0\u5de5\u5177\u5305(FreeBSD: ports\/sysutils\/dvd+rw-tools)\u53ef\u4ee5\u505a\u4e0a\u9762\u7684\u4e00\u5207\uff0c\u5176\u8fd8\u5305\u62ec growisofs \u5de5\u5177\u6765\u523b\u5f55 CD \u6216 DVD\u3002\u672c\u5b9e\u4f8b\u6240\u5f15\u7528\u7684 DVD \u8bbe\u5907\u00a0<code>\/dev\/dvd<\/code>\u00a0\u53ef\u80fd\u662f\u6307\u5411\u00a0<code>\/dev\/scd0<\/code>\u00a0(Linux)\u7684\u7b26\u53f7\u8fde\u63a5\uff0c\u6216\u8005\u00a0<code>\/dev\/cd0<\/code>\u00a0(FreeBSD)\uff0c\u6216\u8005\u00a0<code>\/dev\/rcd0c<\/code>\u00a0(NetBSD\/OpenBSD)\uff0c\u6216\u8005\u00a0<code>\/dev\/rdsk\/c0t1d0s2<\/code>\u00a0(Solaris)\u3002\u5bf9\u4e8e\u672c\u5b9e\u4f8b\u00a0<a href=\"http:\/\/www.freebsd.org\/handbook\/creating-dvds.html\">FreeBSD \u624b\u518c 18.7 \u7ae0<\/a>\u00a0\u4e0a\u6709\u4e00\u4efd\u5f88\u597d\u7684\u6587\u6863\u3002<\/p>\n<pre>          <span class=\"cmt\"># -dvd-compat \u9009\u9879\u5c06\u5b8c\u7ed3\u5149\u76d8\uff0c\u5149\u76d8\u4fbf\u4e0d\u53ef\u518d\u9644\u52a0\u6570\u636e<\/span>\r\n# growisofs -dvd-compat -Z \/dev\/dvd=imagefile.iso     <span class=\"cmt\"># \u523b\u5f55\u5df2\u5b58\u5728\u7684 iso \u955c\u50cf\u6587\u4ef6<\/span>\r\n# growisofs -dvd-compat -Z \/dev\/dvd -J -R \/p\/to\/data  <span class=\"cmt\"># \u76f4\u63a5\u523b\u5f55<\/span>\r\n<\/pre>\n<h3>\u8f6c\u6362 Nero .nrg \u6587\u4ef6\u6210 .iso<\/h3>\n<p>Nero \u7b80\u5355\u7684\u6dfb\u52a0\u4e86 300KB \u7684\u5934\u5230\u4e00\u4e2a\u5e38\u89c4\u7684 iso \u955c\u50cf\u6587\u4ef6\u4e2d\u3002\u6211\u4eec\u53ef\u7528 dd \u5de5\u5177\u6765\u53bb\u9664\u5b83\u3002<\/p>\n<pre># dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300<\/pre>\n<h3>\u8f6c\u6362 bin\/cue \u955c\u50cf\u6210 .iso<\/h3>\n<p><a href=\"http:\/\/freshmeat.net\/projects\/bchunk\/\"><code>bchunk<\/code>\u00a0\u7a0b\u5e8f<\/a>\u53ef\u4ee5\u505a\u5230\u8fd9\u4e00\u70b9\u3002\u5728 FreeBSD \u4e2d\uff0c\u5b83\u5728 port \u7684 sysutils\/bchunk \u4e2d\u3002<\/p>\n<pre># bchunk imagefile.bin imagefile.cue imagefile.iso\r\n<\/pre>\n<h2 id=\"createimg\">\u521b\u5efa\u57fa\u4e8e\u6587\u4ef6\u7684\u955c\u50cf\u6587\u4ef6<\/h2>\n<p>\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u4e00\u4e2a\u4f7f\u7528\u6587\u4ef6 \/usr\/vdisk.img \u7684 1GB \u5206\u533a\u3002\u8fd9\u91cc\u6211\u4eec\u4f7f\u7528 vnode 0,\u4f46\u4e5f\u53ef\u4e3a 1\u3002<\/p>\n<h3>FreeBSD<\/h3>\n<pre># dd if=\/dev\/random of=\/usr\/vdisk.img bs=1K count=1M\r\n# mdconfig -a -t vnode -f \/usr\/vdisk.img -u 0         <span class=\"cmt\"># \u521b\u5efa\u8bbe\u5907 \/dev\/md1<\/span>\r\n# bsdlabel -w \/dev\/md0\r\n# newfs \/dev\/md0c\r\n# mount \/dev\/md0c \/mnt\r\n# umount \/mnt; mdconfig -d -u 0; rm \/usr\/vdisk.img    <span class=\"cmt\"># \u6e05\u9664 md \u8bbe\u5907<\/span>\r\n<\/pre>\n<p>\u8fd9\u4e2a\u57fa\u4e8e\u6587\u4ef6\u7684\u955c\u50cf\u6587\u4ef6\u53ef\u4ee5\u5728 \/etc\/rc.conf \u548c \/etc\/fstab \u4e2d\u914d\u7f6e\u6210\u542f\u52a8\u671f\u95f4\u81ea\u52a8\u6302\u8f7d\u3002\u53ef\u7528\u00a0<code># \/etc\/rc.d\/mdconfig start<\/code>\u00a0(\u5148\u7528\u00a0<code># mdconfig -d -u 0<\/code>\u00a0\u547d\u4ee4\u5220\u9664 md0 \u8bbe\u5907) \u6d4b\u8bd5\u4f60\u7684\u8bbe\u7f6e\u3002<br \/>\n\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u90a3\u4e2a\u81ea\u52a8\u8bbe\u7f6e\u4ec5\u5de5\u4f5c\u4e8e\u8fd9\u4e2a\u57fa\u4e8e\u6587\u4ef6\u7684\u955c\u50cf\u6587\u4ef6\u4e0d\u5728 root \u5206\u533a\u4e2d\u3002\u539f\u56e0\u662f \/etc\/rc.d\/mdconfig \u811a\u672c\u65e9\u4e8e\u542f\u52a8\u5c31\u6267\u884c\u4e86\uff0c\u5e76\u4e14 root \u5206\u533a\u4ecd\u7136\u662f\u53ea\u8bfb\u7684\u3002\u811a\u672c \/etc\/rc.d\/mdconfig2 \u4e4b\u540e\uff0c\u955c\u50cf\u6587\u4ef6\u5c06\u4f4d\u4e8e root \u5206\u533a\u5916\u6302\u8f7d\u3002<br \/>\n\/boot\/loader.conf:<\/p>\n<pre>md_load=\"YES\"<\/pre>\n<p>\/etc\/rc.conf:<\/p>\n<pre># mdconfig_md0=\"-t vnode -f \/usr\/vdisk.img\"          <span class=\"cmt\"># \/usr \u4e0d\u5728 root \u5206\u533a\u4e2d<\/span><\/pre>\n<p>\/etc\/fstab: (\u884c\u540e\u7684\u4e24\u4e2a 0 0 \u5f88\u91cd\u8981\uff0c\u5b83\u544a\u8bc9 fsck \u5ffd\u7565\u8fd9\u4e2a\u8bbe\u5907,\u73b0\u5728\u8fd8\u4e0d\u5b58\u5728\u3002)<\/p>\n<pre>\/dev\/md0                \/usr\/vdisk      ufs     rw              0       0<\/pre>\n<p>\u4e5f\u53ef\u80fd\u5728\u589e\u52a0\u955c\u50cf\u6587\u4ef6\u7684\u5927\u5c0f\u4e4b\u540e\uff0c\u5982\u589e\u5927\u5230 300MB\u3002<\/p>\n<pre># umount \/mnt; mdconfig -d -u 0\r\n# dd if=\/dev\/zero bs=1m count=300 &gt;&gt; \/usr\/vdisk.img\r\n# mdconfig -a -t vnode -f \/usr\/vdisk.img -u 0\r\n# growfs \/dev\/md0\r\n# mount \/dev\/md0c \/mnt                                <span class=\"cmt\"># \u6587\u4ef6\u5206\u533a\u73b0\u5728\u4e3a 300MB<\/span>\r\n<\/pre>\n<h3>Linux<\/h3>\n<pre># dd if=\/dev\/zero of=\/usr\/vdisk.img bs=1024k count=1024\r\n# mkfs.ext3 \/usr\/vdisk.img\r\n# mount -o loop \/usr\/vdisk.img \/mnt\r\n# umount \/mnt; rm \/usr\/vdisk.img                      <span class=\"cmt\"># \u6e05\u695a<\/span>\r\n<\/pre>\n<h3 id=\"losetup\">Linux with losetup<\/h3>\n<p><code>\/dev\/zero<\/code>\u00a0\u6bd4\u00a0<code>urandom<\/code>\u00a0\u66f4\u5feb\uff0c\u4f46\u5bf9\u4e8e\u52a0\u5bc6\u6765\u8bf4\u5374\u4e0d\u591f\u5b89\u5168\u3002<\/p>\n<pre># dd if=\/dev\/urandom of=\/usr\/vdisk.img bs=1024k count=1024\r\n# losetup \/dev\/loop0 \/usr\/vdisk.img                   <span class=\"cmt\"># \u521b\u5efa\u5e76\u8054\u7ed3 \/dev\/loop0<\/span>\r\n# mkfs.ext3 \/dev\/loop0\r\n# mount \/dev\/loop0 \/mnt\r\n# losetup -a                                          <span class=\"cmt\"># \u67e5\u770b\u5df2\u7ecf\u6302\u8f7d\u7684 loop \u8bbe\u5907<\/span>\r\n# umount \/mnt\r\n# losetup -d \/dev\/loop0                               <span class=\"cmt\"># Detach<\/span>\r\n# rm \/usr\/vdisk.img\r\n<\/pre>\n<h2 id=\"creatememdisk\">\u521b\u5efa\u57fa\u4e8e\u5185\u5b58\u7684\u6587\u4ef6\u7cfb\u7edf<\/h2>\n<p>\u57fa\u4e8e\u5185\u5b58\u7684\u6587\u4ef6\u7cfb\u7edf\u5bf9\u4e8e\u91cd\u91cf\u7ea7 IO \u5e94\u7528\u7a0b\u5e8f\u6765\u8bf4\u975e\u5e38\u5feb\u3002\u600e\u6837\u521b\u5efa\u4e00\u4e2a\u6302\u8f7d\u5230 \/memdisk \u7684 64M \u5206\u533a\uff1a<\/p>\n<h3>FreeBSD<\/h3>\n<pre># mount_mfs -o rw -s 64M md \/memdisk\r\n# umount \/memdisk; mdconfig -d -u 0                   <span class=\"cmt\"># \u6e05\u9664\u8be5 md \u8bbe\u5907<\/span>\r\nmd     \/memdisk     mfs     rw,-s64M    0   0         <span class=\"cmt\"># \/etc\/fstab \u6761\u76ee<\/span>\r\n<\/pre>\n<h3>Linux<\/h3>\n<pre># mount -t tmpfs -osize=64m tmpfs \/memdisk\r\n<\/pre>\n<h2 id=\"diskperf\">\u78c1\u76d8\u6027\u80fd<\/h2>\n<p>\u5728 ad4s3c (\/home) \u5206\u533a\u4e0a\u8bfb\u5199\u4e00\u4e2a 1GB \u7684\u6587\u4ef6\u3002<\/p>\n<pre># time dd if=\/dev\/ad4s3c of=\/dev\/null bs=1024k count=1000\r\n# time dd if=\/dev\/zero bs=1024k count=1000 of=\/home\/1Gb.file\r\n# hdparm -tT \/dev\/hda      <span class=\"cmt\"># \u4ec5\u9650 Linux<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"network\">\n<h1><a>\u7f51\u7edc<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#routing\">\u8def\u7531<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#secondip\">\u989d\u5916 IP<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#changemac\">\u66f4\u6539 MAC \u5730\u5740<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#ports\">\u7aef\u53e3<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#firewall\">\u9632\u706b\u5899<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#ipforward\">IP \u8f6c\u53d1<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#nat\">NAT<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#dns\">DNS<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#dhcp\">DHCP<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#traffic\">\u901a\u4fe1\u91cf<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#trafficctrl\">QoS<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#nis\">NIS<\/a><\/p>\n<h2 id=\"netdebug\">\u8c03\u8bd5 (\u4e5f\u53ef\u770b<a class=\"xref\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#traffic\">\u6d41\u91cf\u5206\u6790)<\/a><\/h2>\n<h3>Linux<\/h3>\n<pre># ethtool eth0              <span class=\"cmt\"># \u663e\u793a\u4ee5\u592a\u7f51\u72b6\u6001(replaces mii-diag)<\/span>\r\n# ethtool -s eth0 speed 100 duplex full <span class=\"cmt\"># \u628a\u7f51\u5361 eth0 \u901f\u5ea6\u6539\u4e3a 100\u5146\/\u79d2\uff0c\u91c7\u7528\u5168\u53cc\u5de5<\/span>\r\n# ethtool -s eth0 autoneg off <span class=\"cmt\"># \u7981\u7528\u81ea\u52a8\u534f\u5546\u6a21\u5f0f<\/span>\r\n# ethtool -p eth1           <span class=\"cmt\"># \u95ea\u70c1\u7f51\u7edc\u63a5\u53e3 LED \u706f - \u5982\u679c\u652f\u6301\u7684\u8bdd\uff0c\u975e\u5e38\u5b9e\u7528<\/span>\r\n# ip link show              <span class=\"cmt\"># \u5728 Linux \u4e0a\u663e\u793a\u6240\u6709\u7f51\u7edc\u63a5\u53e3(\u540c ifconfig \u7c7b\u4f3c)<\/span>\r\n# ip link set eth0 up       <span class=\"cmt\"># \u4f7f\u8bbe\u5907\u6fc0\u6d3b(\u6216Down\u6389)\u3002\u540c \"ifconfig eth0 up\"<\/span>\r\n# ip addr show              <span class=\"cmt\"># \u5728 Linux \u4e0a\u663e\u793a\u6240\u6709 IP \u5730\u5740(\u4e0e ifconfig \u7c7b\u4f3c)<\/span>\r\n# ip neigh show             <span class=\"cmt\"># \u4e0e arp -a \u7c7b\u4f3c<\/span>\r\n<\/pre>\n<h3>\u5176\u4ed6\u7cfb\u7edf<\/h3>\n<pre># ifconfig fxp0             <span class=\"cmt\"># \u67e5\u770b \"media\" \u5b57\u6bb5(FreeBSD)<\/span>\r\n# arp -a                    <span class=\"cmt\"># \u67e5\u770b\u8def\u7531(\u6216\u4e3b\u673a) ARP \u6761\u76ee(\u6240\u6709\u7cfb\u7edf)<\/span>\r\n# ping cb.vu                <span class=\"cmt\"># \u7b2c\u4e00\u4e2a\u8981\u8bd5\u7684\u4e8b\u60c5...<\/span>\r\n# traceroute cb.vu          <span class=\"cmt\"># \u5217\u5370\u5230\u76ee\u7684\u5730\u7684\u8def\u7531\u8def\u5f84<\/span>\r\n# ifconfig fxp0 media 100baseTX mediaopt full-duplex <span class=\"cmt\"># 100\u5146\/\u79d2 \u5168\u53cc\u5de5(FreeBSD)<\/span>\r\n# netstat -s                <span class=\"cmt\"># \u5bf9\u6bcf\u4e2a\u7f51\u7edc\u534f\u8bae\u505a\u7cfb\u7edf\u7ea7\u5206\u6790<\/span>\r\n<\/pre>\n<p>\u53e6\u4e00\u4e9b\u547d\u4ee4\uff0c\u867d\u7136\u4e0d\u603b\u662f\u9ed8\u8ba4\u5b89\u88c5\uff0c\u4f46\u5f88\u597d\u627e\uff1a<\/p>\n<pre># arping 192.168.16.254     <span class=\"cmt\"># \u5728\u7f51\u7edc\u5c42\u4e0a Ping<\/span>\r\n# tcptraceroute -f 5 cb.vu  <span class=\"cmt\"># \u4f7f\u7528 tcp \u66ff\u6362 icmp \u6765\u8ddf\u8e2a\uff0c\u900f\u8fc7\u9632\u706b\u5899<\/span>\r\n<\/pre>\n<h2 id=\"routing\">\u8def\u7531<\/h2>\n<h3>\u5217\u5370\u8def\u7531\u8868<\/h3>\n<pre># route -n                  <span class=\"cmt\"># Linux \u6216\u4f7f\u7528 \"ip route\"<\/span>\r\n# netstat -rn               <span class=\"cmt\"># Linux, BSD \u548c UNIX<\/span>\r\n# route print               <span class=\"cmt\"># Windows<\/span>\r\n<\/pre>\n<h3 id=\"addroute\">\u6dfb\u52a0\u5220\u9664\u8def\u7531<\/h3>\n<h4>FreeBSD<\/h4>\n<pre># route add 212.117.0.0\/16 192.168.1.1\r\n# route delete 212.117.0.0\/16\r\n# route add default 192.168.1.1\r\n<\/pre>\n<p>\u6c38\u4e45\u7684\u6dfb\u52a0\u8def\u7531\u53ef\u5728 \/etc\/rc.conf \u914d\u7f6e\u6587\u4ef6\u4e2d\u8bbe\u7f6e<\/p>\n<pre>static_routes=\"myroute\"\r\nroute_myroute=\"-net 212.117.0.0\/16 192.168.1.1\"\r\n<\/pre>\n<h4>Linux<\/h4>\n<pre># route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254\r\n# ip route add 192.168.20.0\/24 via 192.168.16.254       <span class=\"cmt\"># \u7b49\u540c\u4e8e\u4e0a\u9762\u547d\u4ee4<\/span>\r\n# route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0\r\n# route add default gw 192.168.51.254\r\n# ip route add default via 192.168.51.254 dev eth0      <span class=\"cmt\"># \u7b49\u540c\u4e8e\u4e0a\u9762\u547d\u4ee4<\/span>\r\n# route delete -net 192.168.20.0 netmask 255.255.255.0\r\n<\/pre>\n<h4>Solaris<\/h4>\n<pre># route add -net 192.168.20.0 -netmask 255.255.255.0 192.168.16.254\r\n# route add default 192.168.51.254 1                    <span class=\"cmt\"># 1 = \u901a\u8fc7\u6b64\u8def\u7531\u8df3\u6570\u51cf 1<\/span>\r\n# route change default 192.168.50.254 1\r\n<\/pre>\n<p>\u6c38\u4e45\u6761\u76ee\u914d\u7f6e\u5728\u00a0<code>\/etc\/defaultrouter<\/code>\u00a0\u4e2d\u3002<\/p>\n<h4>Windows<\/h4>\n<pre># Route add 192.168.50.0 mask 255.255.255.0 192.168.51.253\r\n# Route add 0.0.0.0 mask 0.0.0.0 192.168.51.254<\/pre>\n<p>\u4f7f\u7528\u00a0<code>add -p<\/code>\u00a0\u6765\u662f\u8def\u7531\u8bbe\u7f6e\u6c38\u4e45\u6709\u6548\u3002<\/p>\n<h2 id=\"secondip\">\u914d\u7f6e\u989d\u5916\u7684 IP \u5730\u5740<\/h2>\n<h3>Linux<\/h3>\n<pre># ifconfig eth0 192.168.50.254 netmask 255.255.255.0       <span class=\"cmt\"># \u7b2c\u4e00\u4e2a IP<\/span>\r\n# ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0     <span class=\"cmt\"># \u7b2c\u4e8c\u4e2a IP<\/span>\r\n# ip addr add 192.168.50.254\/24 dev eth0                   <span class=\"cmt\"># \u7b49\u4ef7\u547d\u4ee4<\/span>\r\n# ip addr add 192.168.51.254\/24 dev eth0 label eth0:1\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<pre># ifconfig fxp0 inet 192.168.50.254\/24                     <span class=\"cmt\"># \u7b2c\u4e00\u4e2a IP<\/span>\r\n# ifconfig fxp0 alias 192.168.51.254 netmask 255.255.255.0 <span class=\"cmt\"># \u7b2c\u4e8c\u4e2a IP<\/span>\r\n<\/pre>\n<p>\u6c38\u4e45\u6761\u76ee\u8bbe\u7f6e\u5728 \/etc\/rc.conf \u4e2d<\/p>\n<pre>ifconfig_fxp0=\"inet 192.168.50.254  netmask 255.255.255.0\"\r\nifconfig_fxp0_alias0=\"192.168.51.254 netmask 255.255.255.0\"\r\n<\/pre>\n<h3>Solaris<\/h3>\n<p>\u7528\u00a0<code>ifconfig -a<\/code>\u00a0\u547d\u4ee4\u68c0\u67e5\u8bbe\u7f6e<\/p>\n<pre># ifconfig hme0 plumb                                      <span class=\"cmt\"># \u542f\u7528\u7f51\u5361<\/span>\r\n# ifconfig hme0 192.168.50.254 netmask 255.255.255.0 up    <span class=\"cmt\"># \u7b2c\u4e00\u4e2a IP<\/span>\r\n# ifconfig hme0:1 192.168.51.254 netmask 255.255.255.0 up  <span class=\"cmt\"># \u7b2c\u4e8c\u4e2a IP<\/span>\r\n<\/pre>\n<h2 id=\"changemac\">\u66f4\u6539 MAC \u5730\u5740<\/h2>\n<p>\u901a\u5e38\u5728\u4f60\u66f4\u6539\u4e4b\u524d\u5148\u505c\u4e0b\u7f51\u7edc\u63a5\u53e3\u3002\u4e0d\u8981\u544a\u8bc9\u6211\u4e3a\u4ec0\u4e48\u4f60\u60f3\u6539\u53d8 MAC \u5730\u5740&#8230;&#8230;<\/p>\n<pre># ifconfig eth0 down\r\n# ifconfig eth0 hw ether 00:01:02:03:04:05      <span class=\"cmt\"># Linux<\/span>\r\n# ifconfig fxp0 link 00:01:02:03:04:05          <span class=\"cmt\"># FreeBSD<\/span>\r\n# ifconfig hme0 ether 00:01:02:03:04:05         <span class=\"cmt\"># Solaris<\/span>\r\n# sudo ifconfig en0 ether 00:01:02:03:04:05     <span class=\"cmt\"># Mac OS X Tiger<\/span>\r\n# sudo ifconfig en0 lladdr 00:01:02:03:04:05    <span class=\"cmt\"># Mac OS X Leopard<\/span>\r\n<\/pre>\n<p>\u5bf9\u4e8e Windows \u5df2\u7ecf\u6709\u8bb8\u591a\u5de5\u5177\u4e86\u3002\u50cf\u00a0<a href=\"http:\/\/ntsecurity.nu\/toolbox\/etherchange\/\">etherchange<\/a>\u3002\u6216\u8005\u770b\u770b &#8220;Mac Makeup&#8221;, &#8220;smac&#8221;\u3002<\/p>\n<h2 id=\"ports\">\u4f7f\u7528\u4e2d\u7684\u7aef\u53e3<\/h2>\n<p>\u76d1\u542c\u6253\u5f00\u7684\u7aef\u53e3\uff1a<\/p>\n<pre># netstat -an | grep LISTEN\r\n# lsof -i                                       <span class=\"cmt\"># \u5217\u51fa\u6240\u6709\u56e0\u7279\u7f51\u8fde\u63a5(Linux)<\/span>\r\n# socklist                                      <span class=\"cmt\"># \u5217\u51fa\u6253\u5f00\u7684 socket (Linux)<\/span>\r\n# sockstat -4                                   <span class=\"cmt\"># \u4f7f\u7528 socket \u7684\u5e94\u7528\u7a0b\u5e8f\u5217\u8868(FreeBSD)<\/span>\r\n# netstat -anp --udp --tcp | grep LISTEN        <span class=\"cmt\"># Linux<\/span>\r\n# netstat -tup                                  <span class=\"cmt\"># \u5217\u51fa\u6d3b\u8dc3\u7684\u8fde\u63a5(Linux)<\/span>\r\n# netstat -tupl                                 <span class=\"cmt\"># \u5217\u51fa\u7cfb\u7edf\u4e2d\u6b63\u5728\u76d1\u542c\u7684\u7aef\u53e3(Linux)<\/span>\r\n# netstat -ano                                  <span class=\"cmt\"># Windows<\/span>\r\n<\/pre>\n<h2 id=\"firewall\">\u9632\u706b\u5899<\/h2>\n<p>\u68c0\u67e5\u6b63\u5728\u8fd0\u884c\u7684\u9632\u706b\u5899(\u53ea\u662f\u5178\u578b\u914d\u7f6e)\uff1a<\/p>\n<h3>Linux<\/h3>\n<pre># iptables -L -n -v                  <span class=\"cmt\"># \u72b6\u6001\u4fe1\u606f<\/span>\r\nOpen the iptables firewall\r\n# iptables -P INPUT       ACCEPT     <span class=\"cmt\"># \u6253\u5f00\u6240\u6709<\/span>\r\n# iptables -P FORWARD     ACCEPT\r\n# iptables -P OUTPUT      ACCEPT\r\n# iptables -Z                        <span class=\"cmt\"># \u628a\u6240\u6709\u94fe\u7684\u5305\u53ca\u5b57\u8282\u7684\u8ba1\u6570\u5668\u6e05\u7a7a<\/span>\r\n# iptables -F                        <span class=\"cmt\"># \u6e05\u7a7a\u6240\u6709\u94fe<\/span>\r\n# iptables -X                        <span class=\"cmt\"># \u5220\u9664\u6240\u6709\u94fe<\/span>\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<pre># ipfw show                          <span class=\"cmt\"># \u72b6\u6001\u4fe1\u606f<\/span>\r\n# ipfw list 65535 <span class=\"cmt\"># \u5982\u679c\u663e\u793a \"65535 deny ip from any to any\"\uff0c\u90a3\u9632\u706b\u5899\u5df2\u88ab\u7981\u7528<\/span>\r\n# sysctl net.inet.ip.fw.enable=0     <span class=\"cmt\"># \u7981\u7528<\/span>\r\n# sysctl net.inet.ip.fw.enable=1     <span class=\"cmt\"># \u542f\u7528<\/span>\r\n<\/pre>\n<h2 id=\"ipforward\">\u8def\u7531 IP \u8f6c\u53d1<\/h2>\n<h3>Linux<\/h3>\n<p>\u67e5\u770b\u7136\u540e\u542f\u7528 IP \u8f6c\u53d1\uff1a<\/p>\n<pre># cat \/proc\/sys\/net\/ipv4\/ip_forward     <span class=\"cmt\"># \u67e5\u770b IP \u8f6c\u53d1 0=\u7981\u7528, 1=\u542f\u7528<\/span>\r\n# echo 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n<\/pre>\n<p>\u6216\u8005\u7f16\u8f91 \/etc\/sysctl.conf\uff1a<\/p>\n<pre>net.ipv4.ip_forward = 1<\/pre>\n<h3>FreeBSD<\/h3>\n<p>\u67e5\u770b\u5e76\u542f\u7528\uff1a<\/p>\n<pre># sysctl net.inet.ip.forwarding          <span class=\"cmt\"># \u67e5\u770b IP \u8f6c\u53d1 0=\u7981\u7528, 1=\u542f\u7528<\/span>\r\n# sysctl net.inet.ip.forwarding=1\r\n# sysctl net.inet.ip.fastforwarding=1\t <span class=\"cmt\"># \u4e13\u7528\u8def\u7531\u5668\u6216\u9632\u706b\u5899<\/span>\r\nPermanent with entry in \/etc\/rc.conf:\r\ngateway_enable=\"YES\"                     <span class=\"cmt\"># \u5982\u679c\u4e3b\u673a\u662f\u7f51\u5173\u5219\u8bbe\u7f6e\u4e3a YES\u3002<\/span>\r\n<\/pre>\n<h3>Solaris<\/h3>\n<pre># ndd -set \/dev\/ip ip_forwarding 1       <span class=\"cmt\"># \u67e5\u770b IP \u8f6c\u53d1 0=\u7981\u7528, 1=\u542f\u7528<\/span>\r\n<\/pre>\n<h2 id=\"nat\">NAT &#8211; \u7f51\u7edc\u5730\u5740\u8f6c\u6362<\/h2>\n<h3>Linux<\/h3>\n<pre># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\t<span class=\"cmt\"># \u6fc0\u6d3b NAT<\/span>\r\n# iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT \\\r\n--to 192.168.16.44:22           <span class=\"cmt\"># \u8f6c\u53d1\u7aef\u53e3 20022 \u5230\u5185\u90e8 IP \u7aef\u53e3(ssh)<\/span>\r\n# iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT \\\r\n--to 192.168.16.254:993:995     <span class=\"cmt\"># \u8f6c\u53d1 993-995 \u8303\u56f4\u7aef\u53e3<\/span>\r\n# ip route flush cache\r\n# iptables -L -t nat            <span class=\"cmt\"># \u67e5\u770b NAT \u72b6\u6001\u4fe1\u606f<\/span>\r\n<\/pre>\n<p>\u4f7f\u7528 -D \u66ff\u6362 -A \u6765\u5220\u9664\u7aef\u53e3\u8f6c\u53d1\u3002<\/p>\n<h3>FreeBSD<\/h3>\n<pre># natd -s -m -u -dynamic -f \/etc\/natd.conf -n fxp0\r\nOr edit \/etc\/rc.conf with:\r\nfirewall_enable=\"YES\"           <span class=\"cmt\"># \u8bbe\u7f6e YES \u6765\u542f\u7528\u9632\u706b\u5899\u529f\u80fd<\/span>\r\nfirewall_type=\"open\"            <span class=\"cmt\"># \u9632\u706b\u5899\u7c7b\u578b(\u770b \/etc\/rc.firewall)<\/span>\r\nnatd_enable=\"YES\"               <span class=\"cmt\"># \u542f\u7528 natd (\u5982\u679c firewall_enable == YES)\u3002<\/span>\r\nnatd_interface=\"tun0\"           <span class=\"cmt\"># \u516c\u5171\u7684\u7f51\u7edc\u63a5\u53e3\u6216\u8981\u4f7f\u7528\u7684 IP \u5730\u5740\u3002<\/span>\r\nnatd_flags=\"-s -m -u -dynamic -f \/etc\/natd.conf\"\r\n<\/pre>\n<p>\u7aef\u53e3\u8f6c\u53d1\uff1a<\/p>\n<pre># cat \/etc\/natd.conf \r\nsame_ports yes\r\nuse_sockets yes\r\nunregistered_only\r\n# redirect_port tcp insideIP:2300-2399 3300-3399  <span class=\"cmt\"># \u7aef\u53e3\u8303\u56f4<\/span>\r\nredirect_port udp 192.168.51.103:7777 7777\r\n<\/pre>\n<h2 id=\"dns\">DNS<\/h2>\n<p>\u5728 unix \u4e0a\uff0c\u5bf9\u4e8e\u6240\u6709\u7684\u7f51\u7edc\u63a5\u53e3\u7684 DNS \u6761\u76ee\u90fd\u5b58\u50a8\u5728 \/etc\/resolv.conf \u6587\u4ef6\u4e2d\u3002\u4e3b\u673a\u57df\u4e5f\u50a8\u5b58\u5728\u8fd9\u4e2a\u6587\u4ef6\u4e2d\u3002\u6700\u5c0f\u5316\u914d\u7f6e\u5982\u4e0b\uff1a<\/p>\n<pre>nameserver 78.31.70.238\r\nsearch sleepyowl.net intern.lab\r\ndomain sleepyowl.net\r\n<\/pre>\n<p>\u68c0\u67e5\u7cfb\u7edf\u57df\u540d\uff1a<\/p>\n<pre># hostname -d                        <span class=\"cmt\"># \u7b49\u540c\u4e8e dnsdomainname<\/span><\/pre>\n<h3>Windows<\/h3>\n<p>\u5728 Windows \u4e0a\uff0cDNS \u914d\u7f6e\u4e8e\u6bcf\u4e2a\u7f51\u7edc\u63a5\u53e3\u3002\u8981\u663e\u793a\u914d\u7f6e\u7684 DNS \u548c\u6e05\u7a7a DNS \u7f13\u5b58\u53ef\u662f\u4f7f\u7528\uff1a<\/p>\n<pre># ipconfig \/?                        <span class=\"cmt\"># \u663e\u793a\u5e2e\u52a9<\/span>\r\n# ipconfig \/all                      <span class=\"cmt\"># \u663e\u793a\u6240\u6709\u4fe1\u606f\u5305\u62ec DNS<\/span>\r\n# ipconfig \/flushdns                 <span class=\"cmt\"># \u6e05\u9664 DNS \u7f13\u5b58<\/span>\r\n<\/pre>\n<h3>\u8f6c\u53d1\u67e5\u8be2<\/h3>\n<p>Dig \u662f\u4f60\u6d4b\u8bd5 DNS \u8bbe\u7f6e\u7684\u597d\u670b\u53cb\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u7528\u4e8e\u6d4b\u8bd5\u7684 DNS \u670d\u52a1\u5668\u4e3a\u00a0<code>213.133.105.2 ns.second-ns.de<\/code>\u3002\u67e5\u770b\u54ea\u4e2a\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u63a5\u6536\u5e94\u7b54(\u7b80\u5355\u5e94\u7b54).<\/p>\n<pre># dig sleepyowl.net\r\nsleepyowl.net.          600     IN      A       78.31.70.238\r\n;; SERVER: 192.168.51.254#53(192.168.51.254)\r\n<\/pre>\n<p>\u8def\u7531\u5668 192.168.51.254 \u5e94\u7b54\u4e86\uff0c\u5e76\u8fd4\u56de\u4e86\u4e00\u6761 A \u6761\u76ee(\u8bb0\u5f55)\u3002\u4efb\u4f55\u6761\u76ee\u90fd\u53ef\u67e5\u8be2\uff0cDNS \u670d\u52a1\u5668\u53ef\u7528 @ \u6765\u9009\u5b9a\uff1a<\/p>\n<pre># dig MX google.com\r\n# dig @127.0.0.1 NS sun.com          <span class=\"cmt\"># \u6d4b\u8bd5\u672c\u5730\u670d\u52a1\u5668<\/span>\r\n# dig @204.97.212.10 NS MX heise.de  <span class=\"cmt\"># \u67e5\u8be2\u5916\u90e8<\/span>\r\n# dig AXFR @ns1.xname.org cb.vu      <span class=\"cmt\"># \u67e5\u770b\u533a\u4f20\u9001(zone transfer)<\/span>\r\n<\/pre>\n<p>\u7a0b\u5f0f host \u4e5f\u5f88\u5f3a\u5927\u3002<\/p>\n<pre># host -t MX cb.vu                   <span class=\"cmt\"># \u83b7\u53d6\u90ae\u4ef6 MX \u8bb0\u5f55<\/span>\r\n# host -t NS -T sun.com              <span class=\"cmt\"># \u901a\u8fc7 TCP \u8fde\u63a5\u83b7\u53d6 NS \u8bb0\u5f55<\/span>\r\n# host -a sleepyowl.net              <span class=\"cmt\"># \u83b7\u53d6\u6240\u6709<\/span>\r\n<\/pre>\n<h3>\u53cd\u5411\u67e5\u8be2<\/h3>\n<p>\u67e5\u627e\u5c5e\u4e8e\u4e00\u4e2a IP \u5730\u5740(in-addr.arpa.)\u7684\u57df\u540d\u3002\u53ef\u7528\u00a0<code>dig<\/code>,\u00a0<code>host<\/code>\u00a0\u548c\u00a0<code>nslookup<\/code>\u00a0\u547d\u4ee4\u67e5\u8be2\uff1a<\/p>\n<pre># dig -x 78.31.70.238\r\n# host 78.31.70.238\r\n# nslookup 78.31.70.238\r\n<\/pre>\n<h3>\/etc\/hosts<\/h3>\n<p>\u5355\u4e2a\u4e3b\u673a\u53ef\u4ee5\u914d\u7f6e\u4e8e\u6587\u4ef6 \/etc\/hosts \u6765\u4ee3\u66ff\u672c\u5730\u6b63\u5728\u8fd0\u884c\u7684\u00a0<code>named<\/code>\u00a0\u53cd\u5411\u57df\u540d\u67e5\u8be2\u3002\u683c\u5f0f\u5f88\u7b80\u5355\uff0c\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<pre>78.31.70.238   sleepyowl.net   sleepyowl<\/pre>\n<p>\u5bf9\u4e8e hosts \u6587\u4ef6\u548c DNS \u67e5\u8be2\u4e4b\u95f4\u7684\u4f18\u5148\u7ea7\uff0c\u53ef\u5728\u00a0<code>\/etc\/nsswitch.conf<\/code>\u00a0\u548c\u00a0<code>\/etc\/host.conf<\/code>\u00a0\u4e2d\u914d\u7f6e order \u540d\u79f0\u89e3\u6790\u3002\u8fd9\u4e2a\u6587\u4ef6\u540c\u6837\u5b58\u5728\u4e8e Windows \u4e0a\uff0c\u901a\u5e38\u5728\uff1a<\/p>\n<pre>C:\\WINDOWS\\SYSTEM32\\DRIVERS\\ETC<\/pre>\n<h2 id=\"dhcp\">DHCP<\/h2>\n<h3>Linux<\/h3>\n<p>\u4e00\u4e9b\u53d1\u884c\u7248(SuSE)\u4f7f\u7528 dhcpcd \u4f5c\u4e3a\u5ba2\u6237\u7aef\u3002\u9ed8\u8ba4\u7f51\u7edc\u63a5\u53e3\u662f eth0\u3002<\/p>\n<pre># dhcpcd -n eth0           <span class=\"cmt\"># \u89e6\u53d1\u66f4\u65b0(\u5e76\u4e0d\u603b\u662f\u53ef\u4ee5\u5de5\u4f5c)<\/span>\r\n# dhcpcd -k eth0           <span class=\"cmt\"># \u91ca\u653e\u5e76\u5173\u95ed<\/span>\r\n<\/pre>\n<p>\u79df\u7ea6(lease)\u7684\u5168\u90e8\u4fe1\u606f\u5b58\u50a8\u5728\uff1a<\/p>\n<pre>\/var\/lib\/dhcpcd\/dhcpcd-eth0.info<\/pre>\n<h3>FreeBSD<\/h3>\n<p>FreeBSD (\u548c Debian) \u4f7f\u7528\u00a0<code>dhclient<\/code>\u3002\u8981\u914d\u7f6e\u4e00\u4e2a\u7f51\u7edc\u63a5\u53e3(\u5982\uff1abge0)\u8fd0\u884c\uff1a<\/p>\n<pre># dhclient bge0<\/pre>\n<p>\u79df\u7ea6(lease)\u7684\u5168\u90e8\u4fe1\u606f\u5b58\u50a8\u5728\uff1a<\/p>\n<pre>\/var\/db\/dhclient.leases.bge0<\/pre>\n<p>\u4f7f\u7528<\/p>\n<pre>\/etc\/dhclient.conf<\/pre>\n<p>\u8bbe\u7f6e prepend \u9009\u9879\u6216\u5f3a\u5236\u4e0d\u540c\u7684\u9009\u9879\uff1a<\/p>\n<pre># cat \/etc\/dhclient.conf\r\ninterface \"rl0\" {\r\n    prepend domain-name-servers 127.0.0.1;\r\n    default domain-name \"sleepyowl.net\";\r\n    supersede domain-name \"sleepyowl.net\";\r\n}\r\n<\/pre>\n<h3>Windows<\/h3>\n<p>dhcp \u79df\u7ea6(lease)\u4f7f\u7528\u00a0<code>ipconfig<\/code>\u00a0\u6765\u66f4\u65b0\uff1a<\/p>\n<pre># ipconfig \/renew          <span class=\"cmt\"># \u66f4\u65b0\u6240\u6709\u9002\u914d\u5668<\/span>\r\n# ipconfig \/renew LAN      <span class=\"cmt\"># \u66f4\u65b0\u540d\u53eb \"LAN\" \u7684\u9002\u914d\u5668<\/span>\r\n# ipconfig \/release WLAN   <span class=\"cmt\"># \u91ca\u653e\u540d\u53eb \"WLAN\" \u7684\u9002\u914d\u5668<\/span>\r\n<\/pre>\n<p>\u662f\u7684\uff0c\u8fd9\u662f\u4e00\u4e2a\u4f7f\u7528\u7b80\u5355\u540d\u79f0\u91cd\u65b0\u547d\u540d\u4f60\u7684\u9002\u914d\u5668\u7684\u597d\u4e3b\u610f\uff01<\/p>\n<h2 id=\"traffic\">\u901a\u4fe1\u91cf\u5206\u6790(Traffic analysis)<\/h2>\n<p><a href=\"http:\/\/people.suug.ch\/~tgr\/bmon\/\">Bmon<\/a>\u00a0\u662f\u4e00\u4e2a\u5c0f\u7684\u6d41\u91cf\u76d1\u63a7\u63a7\u5236\u53f0\uff0c\u800c\u4e14\u53ef\u4ee5\u663e\u793a\u4e0d\u540c\u7684\u7f51\u7edc\u63a5\u53e3\u7684\u6d41\u91cf\u3002<\/p>\n<h3>\u7528 tcpdump \u55c5\u63a2(sniff)<\/h3>\n<pre># tcpdump -nl -i bge0 not port ssh and src \\(192.168.16.121 or 192.168.16.54\\)\r\n# tcpdump -l &gt; dump &amp;&amp; tail -f dump               <span class=\"cmt\"># \u7f13\u51b2\u8f93\u51fa<\/span>\r\n# tcpdump -i rl0 -w traffic.rl0                   <span class=\"cmt\"># \u628a\u6570\u636e\u62a5\u6587\u5199\u5165\u4e8c\u8fdb\u5236\u6587\u4ef6<\/span>\r\n# tcpdump -r traffic.rl0                          <span class=\"cmt\"># \u4ece\u6587\u4ef6\u8bfb\u53d6\u6570\u636e\u62a5\u6587(\u4e5f\u53ef\u4ee5\u4f7f\u7528 ethereal)<\/span>\r\n# tcpdump port 80                                 <span class=\"cmt\"># \u4e24\u4e2a\u7ecf\u5178\u547d\u4ee4<\/span>\r\n# tcpdump host google.com\r\n# tcpdump -i eth0 -X port \\(110 or 143\\)          <span class=\"cmt\"># \u67e5\u770b\u7aef\u53e3 110(POP) \u6216 143(IMAP)\u7684\u6570\u636e\u62a5\u6587<\/span>\r\n# tcpdump -n -i eth0 icmp                         <span class=\"cmt\"># \u53ea\u6355\u83b7 ping<\/span>\r\n# tcpdump -i eth0 -s 0 -A port 80 | grep GET      <span class=\"cmt\"># -s 0 \u4e3a\u5168\u90e8\u5305, -A \u4e3a ASCII<\/span>\r\n<\/pre>\n<p>\u53e6\u4e00\u4e9b\u91cd\u8981\u9009\u9879\uff1a<\/p>\n<ul>\n<li><code>-A<\/code>\u00a0\u00a0 \u00a0 \u663e\u793a\u6bcf\u4e2a\u5305\u6e05\u6670\u6587\u672c(\u9664\u4e86\u62a5\u5934)<\/li>\n<li><code>-X<\/code>\u00a0\u00a0 \u00a0 \u663e\u793a\u5305\u7684 ASCII \u6587\u672c<\/li>\n<li><code>-l<\/code>\u00a0\u00a0 \u00a0 \u4f7f\u6807\u51c6\u8f93\u51fa\u53d8\u4e3a\u7f13\u51b2\u884c\u5f62\u5f0f<\/li>\n<li><code>-D<\/code>\u00a0\u00a0 \u00a0 \u663e\u793a\u6240\u6709\u53ef\u7528\u7f51\u7edc\u63a5\u53e3<\/li>\n<\/ul>\n<p>\u5bf9\u4e8e Windows \u53ef\u4ee5\u4f7f\u7528\u00a0<a href=\"http:\/\/www.winpcap.org\/\" rel=\"nofollow\">www.winpcap.org<\/a>\u3002\u4f7f\u7528 windump -D \u6765\u5217\u51fa\u7f51\u7edc\u63a5\u53e3\u3002<\/p>\n<h3>\u7528 nmap \u626b\u63cf<\/h3>\n<p><a href=\"http:\/\/insecure.org\/nmap\/\" rel=\"nofollow\">Nmap<\/a>\u00a0\u662f\u4e00\u4e2a\u7528\u4e8e OS \u63a2\u6d4b\u7684\u7aef\u53e3\u626b\u63cf\u5de5\u5177\uff0c\u5979\u901a\u5e38\u5728\u8bb8\u591a\u53d1\u884c\u7248\u4e0a\u6709\u5b89\u88c5\uff0c\u5e76\u4e14\u540c\u6837\u53ef\u7528\u4e8e Windows\u3002\u5982\u679c\u4f60\u4e0d\u626b\u63cf\u4f60\u7684\u670d\u52a1\u5668\uff0c\u9a87\u5ba2\u4eec\u4f1a\u4e3a\u4f60\u505a\u8fd9\u4e9b&#8230;<\/p>\n<pre># nmap cb.vu               <span class=\"cmt\"># \u626b\u63cf\u4e3b\u673a\u4e0a\u6240\u6709\u4fdd\u7559\u7684 TCP \u7aef\u53e3<\/span>\r\n# nmap -sP 192.168.16.0\/24 <span class=\"cmt\"># \u627e\u51fa\u5728 0\/24 \u4e0a\u4e3b\u673a\u6240\u4f7f\u7528\u7684 IP<\/span>\r\n# nmap -sS -sV -O cb.vu    <span class=\"cmt\"># \u505a\u79d8\u5bc6 SYN \u626b\u63cf\u6765\u63a2\u6d4b\u7cfb\u7edf\u548c\u7cfb\u7edf\u670d\u52a1\u7684\u7248\u672c\u4fe1\u606f<\/span>\r\nPORT      STATE  SERVICE             VERSION\r\n22\/tcp    open   ssh                 OpenSSH 3.8.1p1 FreeBSD-20060930 (protocol 2.0)\r\n25\/tcp    open   smtp                Sendmail smtpd 8.13.6\/8.13.6\r\n80\/tcp    open   http                Apache httpd 2.0.59 ((FreeBSD) DAV\/2 PHP\/4.\r\n[...]\r\nRunning: FreeBSD 5.X\r\nUptime 33.120 days (since Fri Aug 31 11:41:04 2007)\r\n<\/pre>\n<p>\u5176\u4ed6\u975e\u6807\u51c6\u4f46\u597d\u7528\u7684\u5de5\u5177\u6709\u00a0<code>hping<\/code>\u00a0(www.hping.org)\uff0c\u5979\u662f\u4e00\u4e2a IP \u5206\u7ec4\u7ec4\u88c5\/\u5206\u6790\u5668\uff0c\u548c\u00a0<code>fping<\/code>\u00a0(fping.sourceforge.net)\u3002fping \u53ef\u4ee5\u5728\u4e00\u4e2a\u5faa\u73af\u961f\u5217(round-robin fashion)\u4e2d\u626b\u63cf\u591a\u79cd\u4e3b\u673a\u3002<\/p>\n<h2 id=\"trafficctrl\">\u6d41\u91cf\u63a7\u5236(QoS)<\/h2>\n<p>\u6d41\u91cf\u63a7\u5236\u7ba1\u7406\u7740\u4e00\u4e2a\u7f51\u7edc\u7684\u961f\u5217\u3001\u6d41\u91cf\u76d1\u63a7\u3001\u8c03\u5ea6\u4ee5\u53ca\u5176\u4ed6\u6d41\u91cf\u8bbe\u7f6e(traffic parameters)\u3002\u4ee5\u4e0b\u7b80\u5355\u5b9e\u7528\u7684\u793a\u4f8b\u4f7f\u7528 Linux \u548c FreeBSD \u7684\u80fd\u529b\u6765\u66f4\u597d\u7684\u5229\u7528\u5e26\u5bbd\u3002<\/p>\n<h3>\u4e0a\u4f20\u9650\u5236<\/h3>\n<p>DSL \u6216\u6709\u7ebf\u8c03\u5236\u89e3\u8c03\u5668\u6709\u4e00\u4e2a\u5f88\u957f\u7684\u5217\u961f\u6765\u63d0\u9ad8\u4e0a\u4f20\u541e\u5410\u91cf(upload throughput)\u3002\u7136\u800c\u7528\u4e00\u4e2a\u5feb\u901f\u7684\u8bbe\u5907(\u5982\u4ee5\u592a\u7f51)\u586b\u5145\u8fd9\u4e2a\u5217\u961f\u5c06\u5927\u5927\u51cf\u5c11\u4ea4\u4e92\u6027\u3002\u8fd9\u5c31\u662f\u9650\u5236\u8bbe\u5907\u4e0a\u4f20\u901f\u5ea6\u6709\u7528\u7684\u539f\u56e0\uff0c\u4ee5\u5339\u914d\u8c03\u5236\u89e3\u8c03\u5668\u7684\u5b9e\u9645\u80fd\u529b\uff0c\u8fd9\u53ef\u4ee5\u6709\u6548\u63d0\u9ad8\u4ea4\u4e92\u6027\u3002\u8bbe\u7f6e\u5927\u7ea6\u4e3a modem \u6700\u5927\u901f\u5ea6\u7684 90%\u3002<\/p>\n<h4>Linux<\/h4>\n<p>\u7ed9 512K \u4e0a\u4f20\u901f\u5ea6\u7684 modem\u3002<\/p>\n<pre># tc qdisc add dev eth0 root tbf rate 480kbit latency 50ms burst 1540\r\n# tc -s qdisc ls dev eth0                         <span class=\"cmt\"># \u72b6\u6001<\/span>\r\n# tc qdisc del dev eth0 root                      <span class=\"cmt\"># \u5220\u9664\u961f\u5217<\/span>\r\n# tc qdisc change dev eth0 root tbf rate 220kbit latency 50ms burst 1540\r\n<\/pre>\n<h4>FreeBSD<\/h4>\n<p>FreeBSD \u4f7f\u7528\u00a0<code>dummynet<\/code>\u00a0\u6765\u63a7\u5236\u5e26\u5bbd\uff0c\u5176\u914d\u7f6e\u5de5\u5177\u4e3a ipfw\u3002Pipe \u7528\u6765\u8bbe\u7f6e\u9650\u5236\u5e26\u5bbd\u7684\u5355\u4f4d[K|M]{\u6bd4\u7279\/\u79d2|\u5b57\u8282\/\u79d2}\uff0c0 \u610f\u5473\u7740\u6ca1\u6709\u9650\u5236\u3002\u4f7f\u7528\u540c\u6837\u7684 pipe \u6570\u5b57\u53ef\u91cd\u65b0\u914d\u7f6e\u5b83\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u9650\u5236\u4e0a\u4f20\u5e26\u5bbd\u4e3a 500K\u3002<\/p>\n<pre># kldload dummynet                                <span class=\"cmt\"># \u5982\u6709\u5fc5\u8981\u52a0\u8f7d\u8fd9\u4e2a\u6a21\u5757<\/span>\r\n# ipfw pipe 1 config bw 500Kbit\/s                 <span class=\"cmt\"># \u521b\u5efa\u4e00\u4e2a\u5e26\u5bbd\u9650\u5236\u7684 pipe<\/span>\r\n# ipfw add pipe 1 ip from me to any               <span class=\"cmt\"># \u8f6c\u79fb\u6240\u6709\u4e0a\u4f20\u8fdb\u5165\u8fd9\u4e2a pipe<\/span>\r\n<\/pre>\n<h3>\u670d\u52a1\u8d28\u91cf (Quality of service)<\/h3>\n<h4>Linux<\/h4>\n<p>\u4f7f\u7528\u00a0<code>tc<\/code>\u00a0\u7684\u4f18\u5148\u7ea7\u961f\u5217\u6765\u4f18\u5316 VoIP\u3002\u5728\u00a0<a href=\"http:\/\/www.voip-info.org\/wiki-QoS+Linux+with+HFS\" rel=\"nofollow\">voip-info.org<\/a>\u00a0\u6216\u00a0<a href=\"http:\/\/www.howtoforge.com\/voip_qos_traffic_shaping_iproute2_asterisk\" rel=\"nofollow\">www.howtoforge.com<\/a>\u00a0\u4e0a\u53ef\u4ee5\u770b\u5230\u5b8c\u6574\u7684\u4f8b\u5b50\u3002\u5047\u8bbe VoIP \u4f7f\u7528 UDP \u7aef\u53e3 10000:11024 \u5e76\u4e14\u4f7f\u7528 eth0 \u8bbe\u5907(\u4e5f\u53ef\u4e3a ppp0 \u6216 so)\u3002\u4e0b\u5217\u547d\u4ee4\u5b9a\u4e49\u4e86\u4e09\u4e2a\u961f\u5217\uff0c\u5e76\u4e14\u7528 QoS\u00a0<code>0x1e<\/code>(\u8bbe\u7f6e\u6240\u6709\u4f4d) \u5f3a\u5236 VOIP \u6d41\u91cf\u5230\u961f\u5217 1\u3002\u9ed8\u8ba4\u6d41\u91cf\u6d41\u5165\u961f\u5217 3\uff0cQos\u00a0<i>Minimize-Delay<\/i>\u00a0\u6d41\u5165\u961f\u5217 2\u3002<\/p>\n<pre># tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0\r\n# tc qdisc add dev eth0 parent 1:1 handle 10: sfq\r\n# tc qdisc add dev eth0 parent 1:2 handle 20: sfq\r\n# tc qdisc add dev eth0 parent 1:3 handle 30: sfq\r\n# tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \\\r\n  match ip dport 10000 0x3C00 flowid 1:1          <span class=\"cmt\"># \u4f7f\u7528\u670d\u52a1\u7aef\u7aef\u53e3\u8303\u56f4<\/span>\r\n  match ip dst 123.23.0.1 flowid 1:1              <span class=\"cmt\"># \u6216\/\u548c\u4f7f\u7528\u670d\u52a1\u5668 IP<\/span>\r\n<\/pre>\n<p>\u72b6\u6001\u548c\u79fb\u9664\uff1a<\/p>\n<pre># tc -s qdisc ls dev eth0                         <span class=\"cmt\"># queue status<\/span>\r\n# tc qdisc del dev eth0 root                      <span class=\"cmt\"># delete all QoS<\/span>\r\n<\/pre>\n<h4>\u8ba1\u7b97\u7aef\u53e3\u8303\u56f4\u548c\u63a9\u7801 (mask)<\/h4>\n<p>\u7528\u4f60\u6240\u8ba1\u7b97\u7684\u7aef\u53e3\u63a9\u7801\u6765\u5b9a\u4e49 tc \u8fc7\u6ee4\u5668\u7684\u7aef\u53e3\u8303\u56f4\u3002\u67e5\u8be2 2^N \u7aef\u53e3\u8303\u56f4\u7ed3\u5c3e\uff0c\u63a8\u65ad\u8303\u56f4\u5e76\u8f6c\u6362\u6210\u5341\u516d\u8fdb\u5236\u3002\u8fd9\u5c31\u662f\u4f60\u7684\u63a9\u7801 (mask)\u3002\u4f8b\u5982 10000 -&gt; 11024\uff0c\u5b83\u7684\u8303\u56f4\u662f 1024\u3002<\/p>\n<pre># 2^13 (8192) &lt; 10000 &lt; 2^14 (16384)              <span class=\"cmt\"># \u7ed3\u5c3e\u662f 2^14 = 16384<\/span>\r\n# echo \"obase=16;(2^14)-1024\" | bc                <span class=\"cmt\"># \u63a9\u7801\u662f 0x3C00<\/span>\r\n<\/pre>\n<h4>FreeBSD<\/h4>\n<p>\u5047\u8bbe\u6700\u5927\u8fde\u63a5\u5e26\u5bbd\u4e3a 500Kbit\/s\uff0c\u6211\u4eec\u4f7f\u7528\u4f18\u5148\u7ea7 100:10:1 \u5b9a\u4e49 3 \u4e2a\u961f\u5217\u7ed9 VoIP:ssh:\u5269\u4f59\u6240\u6709\u3002<\/p>\n<pre># ipfw pipe 1 config bw 500Kbit\/s \r\n# ipfw queue 1 config pipe 1 weight 100\r\n# ipfw queue 2 config pipe 1 weight 10\r\n# ipfw queue 3 config pipe 1 weight 1\r\n# ipfw add 10 queue 1 proto udp dst-port 10000-11024\r\n# ipfw add 11 queue 1 proto udp dst-ip 123.23.0.1 <span class=\"cmt\"># \u6216\/\u548c\u4f7f\u7528\u670d\u52a1\u5668 IP<\/span>\r\n# ipfw add 20 queue 2 dsp-port ssh\r\n# ipfw add 30 queue 3 from me to any              <span class=\"cmt\"># \u5269\u4f59\u6240\u6709<\/span>\r\n<\/pre>\n<p>\u72b6\u6001\u548c\u79fb\u9664\uff1a<\/p>\n<pre># ipfw list                                       <span class=\"cmt\"># \u89c4\u5219\u4fe1\u606f<\/span>\r\n# ipfw pipe list                                  <span class=\"cmt\"># \u7ba1\u9053\u4fe1\u606f<\/span>\r\n# ipfw flush                                      <span class=\"cmt\"># \u5220\u9664\u9664\u9ed8\u8ba4\u5916\u6240\u6709\u89c4\u5219<\/span>\r\n<\/pre>\n<h2 id=\"nis\">NIS \u8c03\u8bd5<\/h2>\n<p>\u4e00\u4e9b\u53ef\u5de5\u4f5c\u5728\u5df2\u914d\u7f6e\u597d\u7684 NIS \u5ba2\u6237\u7aef\u4e0a\u7684\u547d\u4ee4\uff1a<\/p>\n<pre># ypwhich                  <span class=\"cmt\"># \u83b7\u53d6\u63d0\u4f9b NIS \u670d\u52a1\u7684\u670d\u52a1\u5668\u540d<\/span>\r\n# domainname               <span class=\"cmt\"># \u5df2\u914d\u7f6e\u7684 NIS \u57df\u540d<\/span>\r\n# ypcat group              <span class=\"cmt\"># \u5217\u5370 NIS \u6620\u5c04 group<\/span>\r\n# cd \/var\/yp &amp;&amp; make       <span class=\"cmt\"># \u91cd\u5efa yp \u6570\u636e\u5e93<\/span>\r\n<\/pre>\n<p>ypbind \u6b63\u5728\u8fd0\u884c\u5417\uff1f<\/p>\n<pre># ps auxww | grep ypbind\r\n\/usr\/sbin\/ypbind -s -m -S servername1,servername2\t<span class=\"cmt\"># FreeBSD<\/span>\r\n\/usr\/sbin\/ypbind           <span class=\"cmt\"># Linux<\/span>\r\n# yppoll passwd.byname\r\nMap passwd.byname has order number 1190635041. Mon Sep 24 13:57:21 2007\r\nThe master server is servername.domain.net.\r\n<\/pre>\n<h3>Linux<\/h3>\n<pre># cat \/etc\/yp.conf\r\nypserver servername\r\ndomain domain.net broadcast\r\n<\/pre>\n<\/div>\n<div id=\"ssh\">\n<h1><a>SSH SCP<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#publickey\">\u516c\u94a5\u8ba4\u8bc1<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#sshfingerprint\">\u6307\u7eb9<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#scp\">SCP<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#sshtunnel\">\u96a7\u9053(Tunneling)<\/a><\/p>\n<h2 id=\"publickey\">Public key authentication<\/h2>\n<p>\u4f7f\u7528\u516c\u94a5\u8ba4\u8bc1\u800c\u4e0d\u662f\u5bc6\u7801\u8fde\u63a5\u4e3b\u673a\u3002\u65b9\u6cd5\u662f\u9644\u52a0\u4f60\u7684\u516c\u94a5\u6587\u4ef6\u5230\u8fdc\u7a0b\u4e3b\u673a\u3002\u672c\u4f8b\u4e2d\u6211\u4eec\u7528\u5ba2\u6237\u7aef\u4ea7\u751f\u7684 key\u00a0<b>\u4ece\u00a0<i>host-client<\/i>\u00a0\u8fde\u63a5\u5230\u00a0<i>host-server<\/i><\/b>\u3002<\/p>\n<ul>\n<li>\u4f7f\u7528 ssh-keygen \u751f\u6210\u5bc6\u94a5\u5bf9\u3002\u79c1\u94a5\u653e\u5728\u00a0<code>~\/.ssh\/id_dsa<\/code>\uff0c\u516c\u94a5\u5728\u00a0<code>~\/.ssh\/id_dsa.pub<\/code>\u3002<\/li>\n<li>\u62f7\u8d1d\u4f60\u7684\u516c\u94a5\u5230\u670d\u52a1\u5668\u7684\u00a0<code>~\/.ssh\/authorized_keys2<\/code>\u3002<\/li>\n<\/ul>\n<pre># ssh-keygen -t dsa -N ''\r\n# cat ~\/.ssh\/id_dsa.pub | ssh you@host-server \"cat - &gt;&gt; ~\/.ssh\/authorized_keys2\"\r\n<\/pre>\n<h3>\u4f7f\u7528\u6765\u81ea ssh.com \u7684 Windows \u5ba2\u6237\u7aef<\/h3>\n<p>ssh.com \u7684\u975e\u5546\u4e1a\u6027\u7248\u672c\u7684\u5ba2\u6237\u7aef\u53ef\u4e0b\u8f7d\u81ea\u5b83\u4e3b FTP \u7ad9\u70b9\uff1a<a href=\"http:\/\/ftp.ssh.com\/pub\/ssh\/\" rel=\"nofollow\">ftp.ssh.com\/pub\/ssh\/<\/a>\u3002 \u7528 ssh.com \u5ba2\u6237\u7aef\u4ea7\u751f\u7684\u5bc6\u94a5\u9700\u8981\u5728 OpenSSH \u670d\u52a1\u5668\u4e0a\u8fdb\u884c\u8f6c\u6362\u3002\u53ef\u4ee5\u4f7f\u7528 ssh-keygen \u547d\u4ee4\u6765\u5b8c\u6210\u3002<\/p>\n<ul>\n<li>\u4f7f\u7528 ssh.com \u5ba2\u6237\u7aef\u521b\u5efa\u4e00\u5bf9\u5bc6\u94a5\uff1aSettings &#8211; User Authentication &#8211; Generate New&#8230;.<\/li>\n<li>\u6211\u4f7f\u7528 DSA \u5bc6\u94a5\u7c7b\u578b\uff1b\u5bc6\u94a5\u957f\u5ea6\u4e3a 2048\u3002<\/li>\n<li>\u62f7\u8d1d ssh.com \u5ba2\u6237\u7aef\u4ea7\u751f\u7684\u516c\u94a5\u5230\u670d\u52a1\u5668\u7684 ~\/.ssh \u76ee\u5f55\u3002<\/li>\n<li>\u5979\u7684\u5bc6\u94a5\u5bf9\u5728 C:\\Documents and Settings\\%USERNAME%\\Application Data\\SSH\\UserKeys\u3002<\/li>\n<li>\u5728\u670d\u52a1\u5668\u4e0a\u4f7f\u7528 ssh-keygen \u8f6c\u6362\u516c\u94a5\uff1a\n<pre># cd ~\/.ssh\r\n# ssh-keygen -i -f keyfilename.pub &gt;&gt; authorized_keys2\r\n<\/pre>\n<\/li>\n<\/ul>\n<p><i>\u6ce8\u610f\uff1a<\/i>\u00a0\u6211\u4eec\u4f7f\u7528 DSA \u5bc6\u94a5\uff0c\u4f7f\u7528 RSA \u5bc6\u94a5\u4e5f\u662f\u53ef\u4ee5\u7684\u3002\u8fd9\u4e2a\u5bc6\u94a5\u4e0d\u53d7\u5bc6\u7801\u4fdd\u62a4\u3002<\/p>\n<h3>\u5728 Windows \u4e0a\u4f7f\u7528 Putty<\/h3>\n<p><a href=\"http:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/download.html\">Putty<\/a>\u00a0\u662f\u4e00\u4e2a\u7b80\u5355\u5e76\u4e14\u81ea\u7531\u7684(MIT\u8bb8\u53ef)\u00a0ssh Windows \u5ba2\u6237\u7aef\u3002<\/p>\n<ul>\n<li>\u4f7f\u7528 puTTYgen \u7a0b\u5e8f\u521b\u5efa\u5bc6\u94a5\u5bf9\u3002<\/li>\n<li>\u4fdd\u5b58\u5bc6\u94a5\u5bf9(\u6bd4\u5982\uff1aC:\\Documents and Settings\\%USERNAME%\\.ssh).<\/li>\n<li>\u62f7\u8d1d\u516c\u94a5\u5230\u670d\u52a1\u5668\u7684 ~\/.ssh \u76ee\u5f55\uff1a\n<pre># scp .ssh\/puttykey.pub root@192.168.51.254:.ssh\/<\/pre>\n<\/li>\n<li>\u4f7f\u7528 ssh-keygen \u5728 OpenSSH \u670d\u52a1\u5668\u4e0a\u8f6c\u6362\u8fd9\u4e2a\u516c\u94a5\uff1a\n<pre># cd ~\/.ssh\r\n# ssh-keygen -i -f puttykey.pub &gt;&gt; authorized_keys2\r\n<\/pre>\n<\/li>\n<li>\u5728 Putty \u4e2d\u8bbe\u7f6e\u6307\u5411\u79c1\u94a5\u7684\u4f4d\u7f6e\uff1aConnection &#8211; SSH &#8211; Auth<\/li>\n<\/ul>\n<h2 id=\"sshfingerprint\">\u68c0\u67e5\u6307\u7eb9<\/h2>\n<p>\u5728\u9996\u6b21\u8fde\u63a5\u65f6\uff0cSSH \u4f1a\u8bf7\u6c42\u4fdd\u5b58\u4e0d\u77e5\u9053\u7684\u4e3b\u673a\u6307\u7eb9\u3002\u8981\u907f\u514d\u4e2d\u95f4\u4eba(man-in-the-middle)\u653b\u51fb\uff0c\u670d\u52a1\u5668\u7684\u7ba1\u7406\u5458\u53ef\u4ee5\u53d1\u9001\u5bc6\u94a5\u6307\u7eb9\u7ed9\u5ba2\u6237\u7aef\uff0c\u6765\u8ba9\u5176\u5728\u9996\u6b21\u767b\u9646\u65f6\u9a8c\u8bc1\u670d\u52a1\u5668\u7684\u771f\u5b9e\u6027\u3002\u4f7f\u7528\u00a0<code>ssh-keygen -l<\/code>\u00a0\u83b7\u53d6\u670d\u52a1\u5668\u7684\u6307\u7eb9\uff1a<\/p>\n<pre># ssh-keygen -l -f \/etc\/ssh\/ssh_host_rsa_key.pub      <span class=\"cmt\"># RSA \u5bc6\u94a5<\/span>\r\n2048 61:33:be:9b:ae:6c:36:31:fd:83:98:b7:99:2d:9f:cd \/etc\/ssh\/ssh_host_rsa_key.pub\r\n# ssh-keygen -l -f \/etc\/ssh\/ssh_host_dsa_key.pub      <span class=\"cmt\"># DSA \u5bc6\u94a5(\u9ed8\u8ba4)<\/span>\r\n2048 14:4a:aa:d9:73:25:46:6d:0a:48:35:c7:f4:16:d4:ee \/etc\/ssh\/ssh_host_dsa_key.pub\r\n<\/pre>\n<p>\u73b0\u5728\u5ba2\u6237\u7aef\u5728\u8fde\u63a5\u5230\u670d\u52a1\u5668\u65f6\u53ef\u9a8c\u8bc1\u5176\u670d\u52a1\u5668\u7684\u771f\u5b9e\u6027\uff1a<\/p>\n<pre># ssh linda\r\nThe authenticity of host 'linda (192.168.16.54)' can't be established.\r\nDSA key fingerprint is 14:4a:aa:d9:73:25:46:6d:0a:48:35:c7:f4:16:d4:ee.\r\nAre you sure you want to continue connecting (yes\/no)? yes\r\n<\/pre>\n<h2 id=\"scp\">\u5b89\u5168\u6587\u4ef6\u4f20\u8f93<\/h2>\n<p>\u4e00\u4e9b\u7b80\u5355\u7684\u547d\u4ee4\uff1a<\/p>\n<pre># scp file.txt host-two:\/tmp\r\n# scp joe@host-two:\/www\/*.html \/www\/tmp\r\n# scp -r joe@host-two:\/www \/www\/tmp\r\n<\/pre>\n<p>\u5728 Konqueror \u6216 Midnight \u63a7\u5236\u53f0\u4e2d\uff0c\u7528\u5730\u5740\u00a0<strong>fish:\/\/user@gate<\/strong>\u00a0\u6765\u8bbf\u95ee\u8fdc\u7a0b\u6587\u4ef6\u7cfb\u7edf\u662f\u53ef\u884c\u7684\uff0c\u5c31\u662f\u6bd4\u8f83\u6162\u800c\u5df2\u3002<br \/>\n\u6b64\u5916\uff0c\u4e5f\u53ef\u4ee5\u7528\u57fa\u4e8e SCP \u6587\u4ef6\u7cfb\u7edf\u5ba2\u6237\u7aef\u7684\u00a0<strong>sshfs<\/strong>\u00a0\u6765\u6302\u8f7d\u4e00\u4e2a\u8fdc\u7a0b\u76ee\u5f55\u3002<a href=\"http:\/\/fuse.sourceforge.net\/sshfs.html\">\u770b fuse sshfs<\/a>.<\/p>\n<h2 id=\"sshtunnel\">\u96a7\u9053(Tunneling)<\/h2>\n<p>SSH \u96a7\u9053\u53ef\u4ee5\u8ba9\u4f60\u901a\u8fc7 SSH \u8fde\u63a5\u8fdb\u884c\u7aef\u53e3\u8f6c\u53d1(\u8f6c\u53d1\/\u53cd\u5411\u96a7\u9053)\uff0c\u4ece\u800c\u786e\u4fdd\u4e86\u4f20\u8f93\u53ca\u7aef\u53e3\u8bbf\u95ee\u7684\u5b89\u5168\u3002\u5b83\u53ea\u80fd\u5de5\u4f5c\u5728 TCP \u534f\u8bae\u4e0a\u3002\u901a\u5e38\u7aef\u53e3\u8f6c\u53d1\u547d\u4ee4\u5982\u4e0b(\u4e5f\u53ef\u770b\u00a0<a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#sshnat\">ssh \u548c NAT \u5b9e\u4f8b<\/a>)\uff1a<\/p>\n<pre># ssh -L localport:desthost:destport user@gate  <span class=\"cmt\"># gate \u4e3a\u76ee\u6807\u4e3b\u673a\u7f51\u5173<\/span>\r\n# ssh -R destport:desthost:localport user@gate  <span class=\"cmt\"># \u8f6c\u53d1\u4f60\u7684 localport \u5230\u76ee\u6807\u7aef\u53e3<\/span>\r\n# ssh -X user@gate   <span class=\"cmt\"># \u8f6c\u53d1 X \u7a0b\u5e8f<\/span>\r\n<\/pre>\n<p>\u8fd9\u5c06\u4f1a\u8fde\u63a5\u5230 gate \u5e76\u8f6c\u53d1\u7aef\u53e3\u5230\u76ee\u6807\u4e3b\u673a desthost:destport\u3002\u6ce8\u610f desthost \u4e3a gate \u4e2d\u7684\u76ee\u6807\u4e3b\u673a\u540d\u3002\u56e0\u6b64\uff0c\u5982\u679c\u8fde\u63a5\u5230\u4e86 gate\uff0c\u90a3\u4e48 desthost \u5c31\u662f localhost\u3002\u4e5f\u53ef\u4ee5\u505a\u66f4\u591a\u7684\u7aef\u53e3\u8f6c\u53d1\u3002<\/p>\n<h3>\u5728 gate \u4e0a\u76f4\u63a5\u8f6c\u53d1<\/h3>\n<p>\u5047\u8bbe\u6211\u4eec\u60f3\u8bbf\u95ee\u5728 gate \u4e0a\u8fd0\u884c\u7684 CVS(2401\u7aef\u53e3) \u548c HTTP(80\u7aef\u53e3)\u3002\u4e0b\u9762\u662f\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\uff0cdesthost \u5c31\u662f localhost\uff0c\u6211\u4eec\u4f7f\u7528\u672c\u7684\u7aef\u53e3 8080 \u4ee3\u66ff 80 \u7aef\u53e3\uff0c\u6240\u4ee5\u6211\u4eec\u4e0d\u9700\u8981 root \u6743\u9650\u3002\u4e00\u65e6 ssh session \u6253\u5f00\uff0c\u4e8c\u4e2a\u670d\u52a1\u5c31\u90fd\u53ef\u5728\u672c\u5730\u7aef\u53e3\u8bbf\u95ee\u3002<\/p>\n<pre># ssh -L 2401:localhost:2401 -L 8080:localhost:80 user@gate<\/pre>\n<h3>\u8f6c\u53d1 Netbios \u548c\u8fdc\u7a0b\u684c\u9762\u5230\u7b2c\u4e8c\u4e2a\u670d\u52a1\u5668<\/h3>\n<p>\u5047\u8bbe\u6709\u4e00\u53f0\u5728 gate \u540e\u9762\u6ca1\u6709\u8fd0\u884c ssh \u7684 Winodws SMB \u670d\u52a1\u5668\u3002\u6211\u4eec\u9700\u8981\u8bbf\u95ee SMB \u5171\u4eab\u548c\u8fdc\u7a0b\u684c\u9762\u3002<\/p>\n<pre># ssh -L 139:smbserver:139 -L 3388:smbserver:3389 user@gate<\/pre>\n<p>\u73b0\u5728\u8fd9\u4e2a SMB \u5171\u4eab\u53ef\u4ee5\u4f7f\u7528 \\\\127.0.0.1\\ \u8bbf\u95ee\uff0c\u4f46\u53ea\u80fd\u5728\u672c\u5730\u5171\u4eab\u5173\u95ed\u7684\u60c5\u51b5\u4e0b\uff0c\u56e0\u4e3a<i>\u672c\u7684\u5171\u4eab\u4e5f\u662f\u5728 139 \u7aef\u53e3\u76d1\u542c\u7684<\/i>\u3002<br \/>\n\u4fdd\u6301\u672c\u7684\u5171\u4eab\u4e5f\u662f\u53ef\u884c\u7684\uff0c\u56e0\u6b64\u6211\u4eec\u9700\u8981\u4e3a\u8fd9\u4e2a\u901a\u9053\u4f7f\u7528\u65b0 IP \u5730\u5740\u6765\u65b0\u5efa\u4e00\u4e2a\u865a\u62df\u8bbe\u5907\uff0cSMB \u5171\u4eab\u5c06\u4f1a\u4f7f\u7528\u6b64\u5730\u5740\u8fde\u63a5\u3002\u6b64\u5916\uff0c<i>\u672c\u5730 RDP \u5df2\u7ecf\u5728 3389 \u7aef\u53e3\u76d1\u542c\u4e86<\/i>\uff0c\u6240\u4ee5\u6211\u4eec\u9009\u62e9\u7aef\u53e3 3388\u3002\u5bf9\u4e8e\u8fd9\u4e2a\u4f8b\u5b50\uff0c\u8ba9\u6211\u4eec\u4f7f\u7528\u4e00\u4e2a\u865a\u62df IP \u5730\u5740 10.1.1.1\u3002<\/p>\n<ul>\n<li>\u5bf9\u4e8e Putty \u4e0a\u4f7f\u7528\u6e90\u7aef\u53e3=10.1.1.1:139\u3002\u5b83\u53ef\u4ee5\u521b\u5efa\u591a\u91cd\u56de\u8def(multiple loop)\u8bbe\u5907\u548c\u901a\u9053\u3002\u5728 Windows 2000 \u4e0a\uff0c\u53ea\u6709 Putty \u4e3a\u6211\u5de5\u4f5c\u3002<\/li>\n<li>\u5bf9\u4e8e ssh.com \u7684\u5ba2\u6237\u7aef\uff0c\u8981\u7981\u7528 &#8220;Allow local connections only&#8221;\u3002\u56e0\u4e3a ssh.com \u5ba2\u6237\u7aef\u7ed1\u5b9a\u4e86\u6240\u6709\u5730\u5740\uff0c\u6240\u4ee5\u53ea\u80fd\u8fde\u63a5\u5355\u4e2a\u5171\u4eab\u3002<\/li>\n<\/ul>\n<p>\u73b0\u5728\u7528 IP \u5730\u5740 10.1.1.1 \u521b\u5efa\u56de\u8def(loopback)\u63a5\u53e3\uff1a<\/p>\n<ul>\n<li># \u7cfb\u7edf-&gt;\u63a7\u5236\u9762\u677f-&gt;\u6dfb\u52a0\u786c\u4ef6 # \u662f\uff0c\u6211\u5df2\u7ecf\u8fde\u63a5\u4e86\u6b64\u786c\u4ef6(Y) # \u6dfb\u52a0\u65b0\u7684\u786c\u4ef6\u8bbe\u5907(\u5728\u5217\u8868\u6700\u4e0b\u9762)\u3002<\/li>\n<li># \u5b89\u88c5\u6211\u624b\u52a8\u9009\u62e9\u7684\u786c\u4ef6 # \u7f51\u7edc\u9002\u914d\u5668 # Microsoft , Microsoft Loopback Adapter\u3002<\/li>\n<li>\u914d\u7f6e\u8fd9\u4e2a\u5047\u8bbe\u5907\u7684 IP \u5730\u5740\u4e3a 10.1.1.1\uff0c\u63a9\u7801 255.255.255.0\uff0c\u6ca1\u6709\u7f51\u5173\u3002<\/li>\n<li>\u9ad8\u7ea7-&gt;WINS\uff0c\u5f00\u542f LMHOSTS \u67e5\u8be2\uff1b\u7981\u7528 TCP\/IP \u4e0a\u7684 NetBIOS\u3002<\/li>\n<li># \u542f\u7528 Microsoft \u7f51\u7edc\u5ba2\u6237\u7aef\u3002# \u7981\u7528 Microsoft \u7f51\u7edc\u6587\u4ef6\u548c\u6253\u5370\u673a\u5171\u4eab<\/li>\n<\/ul>\n<p>\u505a\u5b8c\u8fd9\u4e9b\u4e4b\u540e\u6211\u6709\u91cd\u542f\u3002\u73b0\u5728\u7528 \\\\10.1.1.1 \u8fde\u63a5 SMB \u5171\u4eab\u548c\u7528 10.1.1.1:3388 \u8fde\u63a5\u8fdc\u7a0b\u684c\u9762\u3002<\/p>\n<h4>\u8c03\u8bd5<\/h4>\n<p>\u5982\u679c\u4e0d\u80fd\u5de5\u4f5c\uff1a<\/p>\n<ul>\n<li>\u7aef\u53e3\u6709\u6ca1\u6709\u8f6c\u53d1\uff1a\u8fd0\u884c\u63a7\u5236\u53f0\u8fd0\u884c netstat -an \u547d\u4ee4\u5e76\u67e5\u770b\u6709\u6ca1\u6709 0.0.0.0:139 \u6216\u8005 10.1.1.1:139<\/li>\n<li>\u6709\u6ca1\u6709 telnet \u5230 10.1.1.1 139\uff1f<\/li>\n<li>\u4f60\u9700\u8981\u6253\u5f00 &#8220;\u672c\u5730\u7aef\u53e3\u63a5\u53d7\u5176\u4ed6\u4e3b\u673a\u8fde\u63a5&#8221;\u3002<\/li>\n<li>&#8220;Microsoft \u7f51\u7edc\u6587\u4ef6\u548c\u6253\u5370\u673a\u5171\u4eab&#8221; \u6709\u6ca1\u6709\u88ab\u7981\u7528\uff1f<\/li>\n<\/ul>\n<h3 id=\"sshnat\">\u5728 NAT \u540e\u9762\u8fde\u63a5\u4e24\u4e2a\u5ba2\u6237\u7aef<\/h3>\n<p>\u5047\u8bbe\u4e24\u4e2a\u5ba2\u6237\u7aef\u5728\u4e00\u4e2a NAT \u7f51\u5173\u540e\u9762\uff0ccliadmin \u5ba2\u6237\u7aef\u8981\u8fde\u63a5\u5230 cliuser \u5ba2\u6237\u7aef(\u76ee\u7684\u5730)\uff0c\u4e24\u8005\u90fd\u53ef\u7528 ssh \u767b\u5f55\u5230\u6b63\u5728\u8fd0\u884c sshd \u7684 gate \u4e0a\u3002\u4f60\u4e0d\u9700\u8981 root \u6743\u9650\uff0c\u53ea\u8981\u7aef\u53e3\u5927\u4e8e 1024 \u5373\u53ef\u3002\u6211\u4eec\u5728 gate \u4e0a\u4f7f\u7528 2022 \u7aef\u53e3\u3002\u800c\u4e14\uff0c\u7531\u4e8e gate \u4f7f\u7528\u4e0e\u672c\u5730\uff0c\u6240\u4ee5\u7f51\u5173\u7aef\u53e3\u4e0d\u662f\u5fc5\u987b\u7684\u3002<br \/>\n\u5f00\u542f cliuser \u5ba2\u6237\u7aef(\u4ece\u76ee\u6807\u5230 gate)\uff1a<\/p>\n<pre># ssh -R 2022:localhost:22 user@gate            <span class=\"cmt\"># \u8f6c\u53d1\u5ba2\u6237\u7aef 22 \u7aef\u53e3\u5230 gate:2022 \u7aef\u53e3<\/span><\/pre>\n<p>\u5f00\u542f cliadmin \u5ba2\u6237\u7aef(\u4ece\u4e3b\u673a\u5230 gate)\uff1a<\/p>\n<pre># ssh -L 3022:localhost:2022 admin@gate         <span class=\"cmt\"># \u8f6c\u53d1\u5ba2\u6237\u7aef 3022 \u7aef\u53e3\u5230 gate:2022 \u7aef\u53e3<\/span><\/pre>\n<p>\u73b0\u5728 admin \u53ef\u4ee5\u76f4\u63a5\u8fde\u63a5 cliuser \u5ba2\u6237\u7aef\uff1a<\/p>\n<pre># ssh -p 3022 admin@localhost                   <span class=\"cmt\"># local:3022 -&gt; gate:2022 -&gt; client:22<\/span><\/pre>\n<h3>\u5728 NAT \u540e\u9762\u7684 VNC \u8fde\u63a5<\/h3>\n<p>\u5047\u8bbe\u4e00\u4e2a\u5728 NAT \u540e\u9762\uff0c\u76d1\u542c\u5728\u7aef\u53e3 5900 \u4e0a\u53ef\u88ab\u8bbf\u95ee\u7684 Windows VNC \u5ba2\u6237\u7aef\u3002<br \/>\n\u5f00\u542f cliwin \u5ba2\u6237\u7aef\u5230 gate\uff1a<\/p>\n<pre># ssh -R 15900:localhost:5900 user@gate<\/pre>\n<p>\u5f00\u542f cliadmin \u5ba2\u6237\u7aef(\u4ece\u4e3b\u673a\u5230 gate)\uff1a<\/p>\n<pre># ssh -L 5900:localhost:15900 admin@gate<\/pre>\n<p>\u73b0\u5728 admin \u76f4\u63a5\u8fde\u63a5\u5230 VNC \u5ba2\u6237\u7aef\uff1a<\/p>\n<pre># vncconnect -display :0 localhost<\/pre>\n<\/div>\n<div id=\"vpn\">\n<h1><a>\u4f7f\u7528 SSH \u5efa\u7acb VPN<\/a><\/h1>\n<p>\u81ea 4.3 \u7248\u5f00\u59cb\uff0cOpenSSH \u53ef\u4ee5\u4f7f\u7528 tun\/tap\u00a0\u8bbe\u5907\u6765\u52a0\u5bc6\u4e00\u4e2a\u96a7\u9053\u3002\u5176\u975e\u5e38\u7c7b\u4f3c\u4e8e\u57fa\u4e8e TLS \u7684 VPN \u89e3\u51b3\u65b9\u6848(\u50cf OpenVPN)\u3002\u5bf9\u4e8e SSH \u7684\u4e00\u4e2a\u4f18\u52bf\u662f\uff0c\u5979\u4e0d\u9700\u8981\u5b89\u88c5\u548c\u914d\u7f6e\u989d\u5916\u7684\u8f6f\u4ef6\u3002\u53e6\u5916\u96a7\u9053\u4f7f\u7528 SSH \u8ba4\u8bc1(\u50cf\u5171\u4eab\u5bc6\u94a5)\u3002 \u5176\u7f3a\u70b9\u662f\uff0c\u5bf9\u4e8e\u4e00\u4e2a\u7f13\u6162\u7684\u8fde\u63a5\uff0c \u5176\u4f20\u8f93\u6548\u7387\u8f83\u4f4e\u3002\u5e76\u4e14\u8fd9\u4e2a\u96a7\u9053\u4f9d\u8d56\u4e8e\u5355\u4e2a(\u6613\u65ad\u7684) TCP \u94fe\u63a5\u3002\u8fd9\u4e2a\u6280\u672f\u5bf9\u4e8e\u5feb\u901f\u8bbe\u7f6e\u4e00\u4e2a\u57fa\u4e8e IP \u7684 VPN \u6765\u8bf4\u975e\u5e38\u6709\u7528\u3002\u5979\u5bf9\u4e8e\u7528\u5355\u4e2a TCP \u7aef\u53e3\u8f6c\u53d1\u6ca1\u6709\u9650\u5236\uff0c\u5e76\u4e14\u5728\u6240\u6709 3\/4 \u5c42 \u534f\u8bae\u50cf ICMP\u3001TCP\/UDP \u7b49\u4e0a\u90fd\u53ef\u7528\u3002\u4e0d\u7ba1\u600e\u4e48\u6837\uff0c\u4e0b\u9762\u8fd9\u4e9b\u9009\u62e9\u5728 sshd_conf \u6587\u4ef6\u4e2d\u662f\u5fc5\u987b\u7684\uff1a<\/p>\n<pre>PermitRootLogin yes\r\nPermitTunnel yes\r\n<\/pre>\n<h2 id=\"sshp2p\">\u5355\u4e2a P2P \u8fde\u63a5<\/h2>\n<p>\u8fd9\u91cc\uff0c\u6211\u4eec\u7528\u70b9\u5bf9\u70b9\u96a7\u9053\u8fde\u63a5 hclient \u548c hserver \u4e24\u4e2a\u4e3b\u673a\u3002\u8fd9\u4e2a\u8fde\u63a5\u662f<i>\u4ece hclient \u5f00\u59cb<\/i>\u5230 hserver \u7684\uff0c\u5e76\u4e14\u662f\u7528 root \u6765\u505a\u3002\u8fd9\u4e2a\u901a\u9053\u7684\u8fde\u63a5\u70b9\u662f 10.0.1.1(\u670d\u52a1\u7aef)\u548c 10.0.1.2(\u5ba2\u6237\u7aef)\uff0c\u7136\u540e\u6211\u4eec\u521b\u5efa\u8bbe\u5907 tun5(\u5f53\u7136\u4e5f\u53ef\u4ee5\u662f\u5176\u5b83\u6570\u5b57)\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u975e\u5e38\u7b80\u5355\uff1a<\/p>\n<ul>\n<li>\u4f7f\u7528 SSH \u7684\u901a\u9053\u9009\u9879 -w \u6765\u8fde\u63a5<\/li>\n<li>\u8bbe\u7f6e\u96a7\u9053\u7684 IP \u5730\u5740\u3002\u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u5404\u4e00\u6b21\u3002<\/li>\n<\/ul>\n<h3>\u8fde\u63a5\u5230\u670d\u52a1\u7aef<\/h3>\n<p>\u8fde\u63a5\u59cb\u4e8e\u5ba2\u6237\u7aef,\u7136\u540e\u518d\u670d\u52a1\u7aef\u6267\u884c\u547d\u4ee4\u3002<\/p>\n<h4>Linux\u4e0a\u7684\u670d\u52a1\u7aef<\/h4>\n<pre><span class=\"cmt\">cli&gt;#<\/span> ssh -w5:5 root@hserver\r\n<span class=\"cmt\">srv&gt;#<\/span> ifconfig tun5 10.0.1.1 netmask 255.255.255.252   <span class=\"cmt\"># \u5728\u670d\u52a1\u7aef shell \u4e0a\u6267\u884c<\/span>\r\n<\/pre>\n<h4>FreeBSD\u4e0a\u7684\u670d\u52a1\u7aef<\/h4>\n<pre><span class=\"cmt\">cli&gt;#<\/span> ssh -w5:5 root@hserver\r\n<span class=\"cmt\">srv&gt;#<\/span> ifconfig tun5 10.0.1.1 10.0.1.2                  <span class=\"cmt\"># \u5728\u670d\u52a1\u7aef shell \u4e0a\u6267\u884c<\/span>\r\n<\/pre>\n<h3>\u8fde\u63a5\u5230\u5ba2\u6237\u7aef<\/h3>\n<p>\u5728\u5ba2\u6237\u7aef\u4e0a\u6267\u884c\u547d\u4ee4\uff1a<\/p>\n<pre><span class=\"cmt\">cli&gt;#<\/span> ifconfig tun5 10.0.1.2 netmask 255.255.255.252   <span class=\"cmt\"># Linux\u4e0a\u7684\u5ba2\u6237\u7aef<\/span>\r\n<span class=\"cmt\">cli&gt;#<\/span> ifconfig tun5 10.0.1.2 10.0.1.1                  <span class=\"cmt\"># FreeBSD\u4e0a\u7684\u5ba2\u6237\u7aef<\/span>\r\n<\/pre>\n<p>\u73b0\u5728\u4e24\u4e2a\u4e3b\u673a\u90fd\u8fde\u4e0a\u4e86\uff0c\u5e76\u4e14\u53ef\u4ee5\u5728\u4efb\u4f55 3\/4 \u5c42\u534f\u8bae\u4e0a\u4f7f\u7528\u6b64\u901a\u9053 IP \u5730\u5740\u900f\u660e\u7684\u901a\u8baf\u3002<\/p>\n<h2 id=\"sshg2g\">\u8fde\u63a5\u4e24\u4e2a\u7f51\u7edc<\/h2>\n<p>\u9664\u4e0a\u9762\u7684 p2p \u8bbe\u7f6e\u5916\uff0c\u4e00\u4e2a\u66f4\u6709\u7528\u7684\u662fSSH VPN \u7528\u4e24\u4e2a gate \u8fde\u63a5\u4e24\u4e2a\u79c1\u6709\u7f51\u7edc\u3002\u5047\u8bbe\u6709\u8fd9\u6837\u4e00\u4e2a\u4f8b\u5b50\uff0cnetA \u4e3a 192.168.51.0\/24 \u8fd8\u6709 netB \u4e3a 192.168.16.0\/24\u3002\u8bbe\u7f6e\u8fc7\u7a0b\u540c\u4e0a\u9762\u76f8\u4f3c\uff0c\u6211\u4eec\u53ea\u9700\u8981\u6dfb\u52a0 routing\u3002\u5982\u679c gate \u4e0d\u540c\u4e8e\u9ed8\u8ba4\u7f51\u5173\uff0c\u90a3\u5728\u79c1\u6709\u7f51\u7edc\u63a5\u53e3\u4e0a\u5fc5\u987b\u5f00\u542f NAT\u3002<br \/>\n192.168.51.0\/24 (netA)|gateA &lt;-&gt; gateB|192.168.16.0\/24 (netB)<\/p>\n<ul>\n<li>\u4f7f\u7528\u96a7\u9053\u9009\u9879 -w \u8fde\u63a5 SSH\u3002<\/li>\n<li>\u914d\u7f6e\u96a7\u9053\u7684 IP \u5730\u5740\u3002\u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u5404\u4e00\u6b21\u3002<\/li>\n<li>\u4e3a\u4e24\u4e2a\u7f51\u7edc\u6dfb\u52a0 routing\u3002<\/li>\n<li>\u5982\u679c\u9700\u8981\uff0c\u5728 gate \u7684\u79c1\u6709\u7f51\u7edc\u63a5\u53e3\u4e0a\u5f00\u542f NAT\u3002<\/li>\n<\/ul>\n<p>\u8bbe\u7f6e\u662f<i>\u4ece netA \u4e2d\u7684 gasteA \u5f00\u59cb\u7684<\/i>.<\/p>\n<h3>\u8fde\u63a5 gateA \u5230 gateB<\/h3>\n<p>\u8fde\u63a5\u4ece gateA \u5f00\u59cb\uff0c\u547d\u4ee4\u6267\u884c\u4e8e gateB\u3002<\/p>\n<h4>Linux \u4e0a\u7684 gateB<\/h4>\n<pre><span class=\"cmt\">gateA&gt;#<\/span> ssh -w5:5 root@gateB\r\n<span class=\"cmt\">gateB&gt;#<\/span> ifconfig tun5 10.0.1.1 netmask 255.255.255.252 <span class=\"cmt\"># \u5728 gateB \u7684 shell \u4e2d\u6267\u884c<\/span>\r\n<span class=\"cmt\">gateB&gt;#<\/span> route add -net 192.168.51.0 netmask 255.255.255.0 dev tun5\r\n<span class=\"cmt\">gateB&gt;#<\/span> echo 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward         <span class=\"cmt\"># \u5982\u679c\u4e0d\u662f\u9ed8\u8ba4\u7f51\u5173<\/span>\r\n<span class=\"cmt\">gateB&gt;#<\/span> iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\r\n<\/pre>\n<h4>FreeBSD \u4e0a\u7684 gateB<\/h4>\n<pre><span class=\"cmt\">gateA&gt;#<\/span> ssh -w5:5 root@gateB                          <span class=\"cmt\"># \u521b\u5efa tun5 \u8bbe\u5907<\/span>\r\n<span class=\"cmt\">gateB&gt;#<\/span> ifconfig tun5 10.0.1.1 10.0.1.2               <span class=\"cmt\"># \u5728 gateB \u7684 shell \u4e2d\u6267\u884c<\/span>\r\n<span class=\"cmt\">gateB&gt;#<\/span> route add 192.168.51.0\/24 10.0.1.2\r\n<span class=\"cmt\">gateB&gt;#<\/span> sysctl net.inet.ip.forwarding=1               <span class=\"cmt\"># \u5982\u679c\u4e0d\u662f\u9ed8\u8ba4\u7f51\u5173<\/span>\r\n<span class=\"cmt\">gateB&gt;#<\/span> natd -s -m -u -dynamic -n fxp0                <span class=\"cmt\"># \u770b <a class=\"xref\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#nat\">NAT<\/a><\/span>\r\n<span class=\"cmt\">gateA&gt;#<\/span> sysctl net.inet.ip.fw.enable=1\r\n<\/pre>\n<h3>\u914d\u7f6e gateA<\/h3>\n<p>\u5728 gateA \u4e0a\u6267\u884c\u547d\u4ee4\uff1a<\/p>\n<h4>Linux \u4e0a\u7684 gateA<\/h4>\n<pre><span class=\"cmt\">gateA&gt;#<\/span> ifconfig tun5 10.0.1.2 netmask 255.255.255.252\r\n<span class=\"cmt\">gateA&gt;#<\/span> route add -net 192.168.16.0 netmask 255.255.255.0 dev tun5\r\n<span class=\"cmt\">gateA&gt;#<\/span> echo 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n<span class=\"cmt\">gateA&gt;#<\/span> iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\r\n<\/pre>\n<h4>FreeBSD \u4e0a\u7684 gateA<\/h4>\n<pre><span class=\"cmt\">gateA&gt;#<\/span> ifconfig tun5 10.0.1.2 10.0.1.1\r\n<span class=\"cmt\">gateA&gt;#<\/span> route add 192.168.16.0\/24 10.0.1.2\r\n<span class=\"cmt\">gateA&gt;#<\/span> sysctl net.inet.ip.forwarding=1\r\n<span class=\"cmt\">gateA&gt;#<\/span> natd -s -m -u -dynamic -n fxp0                <span class=\"cmt\"># \u770b <a class=\"xref\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#nat\">NAT<\/a><\/span>\r\n<span class=\"cmt\">gateA&gt;#<\/span> sysctl net.inet.ip.fw.enable=1\r\n<\/pre>\n<p>\u73b0\u5728\u4e24\u4e2a\u79c1\u6709\u7f51\u7edc\u90fd\u53ef\u4ee5\u901a\u8fc7 SSH VPN \u6765\u900f\u660e\u7684\u8fde\u63a5\u3002\u5982\u679c gate \u4e0d\u662f\u9ed8\u8ba4\u7f51\u5173\uff0c\u90a3\u4e48 IP \u8f6c\u53d1\u548c NAT \u8bbe\u7f6e\u90fd\u662f\u5fc5\u987b\u7684\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5ba2\u6237\u7aef\u5c06\u4e0d\u77e5\u9053\u5728\u54ea\u91cc\u8f6c\u53d1\u54cd\u5e94(response)\uff0c\u5e76\u4e14 NAT \u5fc5\u987b\u662f\u5f00\u542f\u7684\u3002<\/p><\/div>\n<div id=\"rsync\">\n<h1><a>RSYNC<\/a><\/h1>\n<p>Rsync \u5dee\u4e0d\u591a\u53ef\u4ee5\u4ee3\u66ff cp \u548c scp\uff0c\u6b64\u5916\uff0c\u65ad\u70b9\u7eed\u4f20\u662f\u91cd\u542f\u6709\u6548\u7684\u3002\u5c3e\u90e8\u7684\u659c\u6760\u4e5f\u6709\u7740\u4e0d\u540c\u7684\u610f\u601d\uff0c\u8bf7\u9605\u8bfb man \u9875\u9762&#8230;&#8230;\u8fd9\u91cc\u6709\u4e00\u4e9b\u4f8b\u5b50\uff1a<br \/>\n\u62f7\u8d1d\u76ee\u5f55\u4e2d\u6240\u6709\u5185\u5bb9\uff1a<\/p>\n<pre># rsync -a \/home\/colin\/ \/backup\/colin\/\r\n# rsync -a \/var\/ \/var_bak\/\r\n# rsync -aR --delete-during \/home\/user\/ \/backup\/      <span class=\"cmt\"># \u4f7f\u7528\u76f8\u5bf9\u8def\u5f84(\u770b\u4e0b\u9762)<\/span>\r\n<\/pre>\n<p>\u540c\u4e4b\u524d\u4e00\u6837\uff0c\u4f46\u4f7f\u7528\u4e86\u538b\u7f29\u548c\u7f51\u7edc\u3002Rsync \u4f7f\u7528 SSH \u8fdb\u884c\u4f20\u8f93\uff0c\u5e76\u4e14\u4f7f\u7528 SSH \u5bc6\u94a5\uff0c\u5982\u679c\u8bbe\u7f6e\u7684\u8bdd\u3002\u548c SCP \u4e00\u6837\u4f7f\u7528 &#8220;:&#8221;\u3002\u4e00\u4e2a\u5178\u578b\u7684\u62f7\u8d1d\uff1a<\/p>\n<pre># rsync -axSRzv \/home\/user\/ user@server:\/backup\/user\/<\/pre>\n<p>\u6392\u9664\u5728 \/home\/user\/ \u4e2d\u4efb\u4f55 tmp \u76ee\u5f55\uff0c\u5e76\u4e14\u4fdd\u6301\u76f8\u5bf9\u76ee\u5f55\u5c42\u6b21\u7ed3\u6784\uff0c\u8fdc\u7a0b\u76ee\u5f55\u7684\u7ed3\u6784\u5c31\u662f \/backup\/home\/user\/\u3002\u5178\u578b\u7684\u7528\u4e8e\u5907\u4efd\u7684\u547d\u4ee4\u3002<\/p>\n<pre># rsync -azR --exclude \/tmp\/ \/home\/user\/ user@server:\/backup\/<\/pre>\n<p>SSH \u8fde\u63a5\u4f7f\u7528\u7aef\u53e3 20022\uff1a<\/p>\n<pre># rsync -az -e 'ssh -p 20022' \/home\/colin\/ user@server:\/backup\/colin\/<\/pre>\n<p>\u4f7f\u7528 rsync \u5b88\u62a4\u8fdb\u7a0b(\u4f7f\u7528&#8221;::&#8221;)\u662f\u5f88\u5feb\u7684\uff0c\u4f46\u6ca1\u6709\u900f\u8fc7 SSH \u52a0\u5bc6\u3002 \u4f4d\u7f6e \/backup \u5b9a\u4e49\u5728\u4e86\u914d\u7f6e\u6587\u4ef6 \/etc\/rsyncd.conf \u4e2d\u3002\u53d8\u91cf RSYNC_PASSWORD \u53ef\u4ee5\u8bbe\u7f6e\u7528\u6765\u514d\u9664\u624b\u52a8\u8f93\u5165\u5bc6\u7801\u3002<\/p>\n<pre># rsync -axSRz \/home\/ ruser@hostname::rmodule\/backup\/\r\n# rsync -axSRz ruser@hostname::rmodule\/backup\/ \/home\/    <span class=\"cmt\"># \u56de\u62f7\u8d1d<\/span>\r\n<\/pre>\n<p>\u4e00\u4e9b\u91cd\u8981\u9009\u9879\uff1a<\/p>\n<ul>\n<li><code>-a, --archive<\/code>\u00a0\u5f52\u6863\u6a21\u5f0f\uff0c\u7b49\u4e8e -rlptgoD (\u975e -H)<\/li>\n<li><code>-r, --recursive<\/code>\u00a0\u5bf9\u5b50\u76ee\u5f55\u4ee5\u9012\u5f52\u6a21\u5f0f\u5904\u7406<\/li>\n<li><code>-R, --relative<\/code>\u00a0\u4f7f\u7528\u76f8\u5bf9\u8def\u5f84\u540d<\/li>\n<li><code>-H, --hard-links<\/code>\u00a0\u4fdd\u7559\u786c\u94fe\u7ed3<\/li>\n<li><code>-S, --sparse<\/code>\u00a0\u5bf9\u7a00\u758f\u6587\u4ef6\u8fdb\u884c\u7279\u6b8a\u5904\u7406\u4ee5\u8282\u7701DST\u7684\u7a7a\u95f4<\/li>\n<li><code>-x, --one-file-system<\/code>\u00a0\u4e0d\u8de8\u8d8a\u6587\u4ef6\u7cfb\u7edf\u8fb9\u754c<\/li>\n<li><code>--exclude=PATTERN<\/code>\u00a0\u6307\u5b9a\u6392\u9664\u4e0d\u9700\u8981\u4f20\u8f93\u7684\u6587\u4ef6\u6a21\u5f0f<\/li>\n<li><code>--delete-during<\/code>\u00a0\u4f20\u8f93\u671f\u95f4\u5220\u9664<\/li>\n<li><code>--delete-after<\/code>\u00a0\u4f20\u8f93\u7ed3\u675f\u4ee5\u540e\u518d\u5220\u9664<\/li>\n<\/ul>\n<h2 id=\"winrsync\">\u5728 Windows \u4e0a\u4f7f\u7528 Rsync<\/h2>\n<p>\u53ef\u4ee5\u901a\u8fc7 cygwin \u6216 \u72ec\u7acb\u6253\u5305\u7684\u00a0<a href=\"http:\/\/sourceforge.net\/projects\/sereds\/\">cwrsync<\/a>\u00a0\u6765\u5728 Windows \u4e0a\u8fd0\u884c rsync\u3002\u8fd9\u5bf9\u4e8e\u81ea\u52a8\u5907\u4efd\u6765\u8bf4\u975e\u5e38\u65b9\u4fbf\u3002\u53ea\u88c5\u5176\u4e2d\u4e00\u4e2a(<i>\u4e0d\u662f\u4e24\u4e2a<\/i>)\uff0c\u7136\u540e\u6dfb\u52a0\u8def\u5f84\u5230 Windows \u7cfb\u7edf\u53d8\u91cf\u4e2d\uff1a# \u63a7\u5236\u9762\u677f -&gt; \u7cfb\u7edf -&gt; \u9ad8\u7ea7\u6807\u7b7e\uff0c\u73af\u5883\u53d8\u91cf\u6309\u94ae\u3002\u7f16\u8f91 &#8220;Path&#8221; \u6dfb\u52a0 rsync \u7684\u5b89\u88c5\u8def\u5f84\uff0c\u6bd4\u5982\uff1aC:\\Program Files\\cwRsync\\bin \u6216\u8005 C:\\cygwin\\bin\u3002\u8fd9\u53ef\u4ee5\u8ba9\u00a0<code>rsync<\/code>\u00a0\u548c\u00a0<code>ssh<\/code>\u00a0\u53ef\u7528\u4e8e Windows \u547d\u4ee4\u7a97\u53e3\u4e2d\u3002<\/p>\n<h3>\u516c\u94a5\u8ba4\u8bc1<\/h3>\n<p>Rsync \u662f\u81ea\u52a8\u4f7f\u7528 SSH \u96a7\u9053\u7684\uff0c\u56e0\u6b64\u5728\u670d\u52a1\u7aef\u4f7f\u7528 SSH \u8ba4\u8bc1\u3002\u81ea\u52a8\u5907\u4efd\u53ef\u514d\u53d7\u7528\u6237\u7684\u5f71\u54cd\uff0crsync \u547d\u4ee4\u5bf9\u4e8e\u4f7f\u7528 SSH \u516c\u94a5\u8ba4\u8bc1\u53ef\u4ee5\u4e0d\u9700\u8981\u5bc6\u7801\u3002<br \/>\n\u4e0b\u9762\u6240\u6709\u7684\u547d\u4ee4\u90fd\u53ef\u5728 windows \u63a7\u5236\u53f0\u4e2d\u6267\u884c\u3002\u5728\u63a7\u5236\u53f0(\u5f00\u59cb -&gt; \u8fd0\u884c -&gt; cmd)\u4e2d\u50cf\u5728\u00a0<a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#ssh\">SSH<\/a>\u00a0\u4e2d\u63cf\u8ff0\u7684\u90a3\u6837\u521b\u5efa\u548c\u4e0a\u4f20\u5bc6\u94a5\uff0c\u6839\u636e\u4f60\u7684\u60c5\u51b5\u6539\u53d8 &#8220;user&#8221; \u548c &#8220;server&#8221;\u3002\u5982\u679c\u6587\u4ef6 authorized_keys2 \u4e0d\u5b58\u5728\uff0c\u62f7\u8d1d id_dsa.pub \u6210 authorized_keys2 \u5e76\u4e0a\u4f20\u5b83\u3002<\/p>\n<pre># ssh-keygen -t dsa -N ''                   <span class=\"cmt\"># \u521b\u5efa\u5bc6\u94a5\u5bf9<\/span>\r\n# rsync user@server:.ssh\/authorized_keys2 . <span class=\"cmt\"># \u4ece\u670d\u52a1\u5668\u62f7\u8d1d\u672c\u5730\u6587\u4ef6<\/span>\r\n# cat id_dsa.pub &gt;&gt; authorized_keys2        <span class=\"cmt\"># \u6216\u8005\u4f7f\u7528\u7f16\u8f91\u5668\u6dfb\u52a0\u8fd9\u4e2a\u516c\u94a5<\/span>\r\n# rsync authorized_keys2 user@server:.ssh\/  <span class=\"cmt\"># \u62f7\u8d1d\u6587\u4ef6\u56de\u670d\u52a1\u5668<\/span>\r\n# del authorized_keys2                      <span class=\"cmt\"># \u5220\u9664\u672c\u5730\u62f7\u8d1d<\/span>\r\n<\/pre>\n<p>\u73b0\u5728\u6d4b\u8bd5\u4e00\u4e0b(\u5728\u540c\u4e00\u884c\u91cc\u9762):<\/p>\n<pre>rsync -rv \"\/cygdrive\/c\/Documents and Settings\/%USERNAME%\/My Documents\/\" \\\r\n'user@server:My\\ Documents\/'\r\n<\/pre>\n<h3>\u81ea\u52a8\u5907\u4efd<\/h3>\n<p>\u4f7f\u7528\u6279\u5904\u7406\u6587\u4ef6\u81ea\u52a8\u5907\u4efd\u5e76\u6dfb\u52a0\u5230\u4efb\u52a1\u8ba1\u5212(\u7a0b\u5e8f -&gt; \u9644\u4ef6 -&gt; \u7cfb\u7edf\u5de5\u5177 -&gt; \u4efb\u52a1\u8ba1\u5212)\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u521b\u5efa\u6279\u5904\u7406\u6587\u4ef6 backup.bat \u53d6\u4ee3 user@server\u3002<\/p>\n<pre>@ECHO OFF\r\nREM rsync the directory My Documents\r\nSETLOCAL\r\nSET CWRSYNCHOME=C:\\PROGRAM FILES\\CWRSYNC\r\nSET CYGWIN=nontsec\r\nSET CWOLDPATH=%PATH%\r\nREM uncomment the next line when using cygwin\r\nSET PATH=%CWRSYNCHOME%\\BIN;%PATH%\r\necho Press Control-C to abort\r\nrsync -av \"\/cygdrive\/c\/Documents and Settings\/%USERNAME%\/My Documents\/\" \\\r\n'user@server:My\\ Documents\/'\r\npause\r\n<\/pre>\n<\/div>\n<div id=\"sudo\">\n<h1><a>SUDO<\/a><\/h1>\n<p>Sudo \u53ef\u4ee5\u7ed9\u7528\u6237\u4e00\u4e9b\u8d85\u7ea7\u7528\u6237\u7684\u6743\u9650\u800c\u4e0d\u9700\u8981 root \u5bc6\u7801\u3002Sudo \u5bf9\u4e8e\u4e00\u4e2a\u670d\u52a1\u5668\u548c\u5de5\u4f5c\u7ad9\u6df7\u5408\u7684\u591a\u7528\u6237\u73af\u5883\u6765\u8bf4\u975e\u5e38\u6709\u7528\u3002\u4f7f\u7528 sudo \u8fd0\u884c\u547d\u4ee4\uff1a<\/p>\n<pre># sudo \/etc\/init.d\/dhcpd restart            <span class=\"cmt\"># \u7528 root \u6743\u9650\u8fd0\u884c rc \u811a\u672c<\/span>\r\n# sudo -u sysadmin whoami                   <span class=\"cmt\"># \u4f7f\u7528\u5176\u4ed6\u7528\u6237\u8fd0\u884c\u547d\u4ee4<\/span>\r\n<\/pre>\n<h2>\u914d\u7f6e<\/h2>\n<p>Sudo \u7684\u914d\u7f6e\u5728\u00a0<code>\/etc\/sudoers<\/code>\u00a0\u4e2d\uff0c\u5e76\u4e14\u53ea\u80fd\u7528\u00a0<code>visudo<\/code>\u00a0\u7f16\u8f91\u3002\u5176\u57fa\u672c\u8bed\u6cd5\u662f(\u5217\u8868\u662f\u4ee5\u9017\u53f7\u5206\u9694\u7684)\uff1a<\/p>\n<pre>user hosts = (runas) commands          <span class=\"cmt\"># \u5728 \/etc\/sudoers<\/span> \u4e2d<\/pre>\n<ul>\n<li><code>users<\/code>\u00a0\u4e00\u4e2a\u6216\u591a\u4e2a\u7528\u6237\u6216\u662f%\u7528\u6237\u7ec4(\u50cf %wheel) \u6765\u83b7\u5f97\u6743\u9650<\/li>\n<li><code>hosts<\/code>\u00a0\u4e3b\u673a\u5217\u8868(\u6216 ALL)<\/li>\n<li><code>runas<\/code>\u00a0\u5217\u51fa\u7528\u6237\u4ee5\u4f55\u79cd\u8eab\u4efd(\u6216 ALL)\u6765\u6267\u884c\u547d\u4ee4\uff0c\u653e\u5728 ( ) \u5185\uff01<\/li>\n<li><code>commands<\/code>\u00a0\u5217\u51fa\u53ef\u88ab users \u4ee5 runas \u6216 root \u6743\u9650\u8fd0\u884c\u7684\u547d\u4ee4(\u6216 ALL)<\/li>\n<\/ul>\n<p>\u53e6\u5916\u4e00\u4e9b\u5173\u952e\u5b57\u53ef\u4ee5\u5b9a\u4e49\u522b\u540d\uff0c\u4ed6\u4eec\u662f User_Alias, Host_Alias, Runas_Alias \u548c Cmnd_Alias\u3002\u8fd9\u5bf9\u4e8e\u4e00\u4e9b\u8f83\u5927\u7684\u8bbe\u7f6e\u6bd4\u8f83\u6709\u7528\u3002\u4e0b\u9762\u662f sudoers \u4f8b\u5b50\uff1a<\/p>\n<pre># cat \/etc\/sudoers\r\n<span class=\"cmt\"># \u4e3b\u673a\u522b\u540d<\/span>\r\nHost_Alias   DMZ     = 212.118.81.40\/28\r\nHost_Alias   DESKTOP = work1, work2\r\n\r\n<span class=\"cmt\"># \u7528\u6237\u522b\u540d \u548c runas \u522b\u540d<\/span>\r\nUser_Alias   ADMINS  = colin, luca, admin\r\nUser_Alias   DEVEL   = joe, jack, julia\r\nRunas_Alias  DBA     = oracle,pgsql\r\n\r\n<span class=\"cmt\"># \u547d\u4ee4\u522b\u540d\uff0c\u5176\u503c\u4e3a\u5168\u8def\u5f84\u547d\u4ee4<\/span>\r\nCmnd_Alias   SYSTEM  = \/sbin\/reboot,\/usr\/bin\/kill,\/sbin\/halt,\/sbin\/shutdown,\/etc\/init.d\/\r\nCmnd_Alias   PW      = \/usr\/bin\/passwd [A-z]*, !\/usr\/bin\/passwd root <span class=\"cmt\"># Not root pwd!<\/span>\r\nCmnd_Alias   DEBUG   = \/usr\/sbin\/tcpdump,\/usr\/bin\/wireshark,\/usr\/bin\/nmap\r\n<\/pre>\n<pre><span class=\"cmt\"># \u4e00\u4e2a\u771f\u5b9e\u7684\u89c4\u5219<\/span>\r\nroot,ADMINS  ALL     = (ALL) NOPASSWD: ALL    <span class=\"cmt\"># ADMINS \u522b\u540d\u4e2d\u7684\u7528\u6237\u53ef\u505a\u4efb\u4f55\u4e8b\u60c5\u4e0d\u9700\u8981\u5bc6\u7801<\/span>\r\nDEVEL        DESKTOP = (ALL) NOPASSWD: ALL    <span class=\"cmt\"># \u5f00\u53d1\u4eba\u5458\u53ef\u5728 DESKTOP \u522b\u540d\u7684\u4e3b\u673a\u4e0a\u505a\u4efb\u4f55\u4e8b\u60c5<\/span>\r\nDEVEL        DMZ     = (ALL) NOPASSWD: DEBUG  <span class=\"cmt\"># \u5f00\u53d1\u4eba\u5458\u53ef\u4ee5\u5728 DMZ \u522b\u540d\u7684\u4e3b\u673a\u4e0a\u4f7f\u7528 DEBUG \u522b\u540d\u4e2d\u7684\u547d\u4ee4<\/span>\r\n\r\n<span class=\"cmt\"># \u7528\u6237 sysadmin \u53ef\u4ee5\u5728 DMZ \u670d\u52a1\u5668\u4e0a\u6267\u884c\u4e00\u4e9b\u547d\u4ee4<\/span>\r\nsysadmin     DMZ     = (ALL) NOPASSWD: SYSTEM,PW,DEBUG\r\nsysadmin     ALL,!DMZ = (ALL) NOPASSWD: ALL   <span class=\"cmt\"># \u53ef\u4ee5\u5728\u975e DMZ \u4e3b\u673a\u4e0a\u505a\u4efb\u4f55\u4e8b\u60c5<\/span>\r\n%dba         ALL     = (DBA) ALL              <span class=\"cmt\"># \u7528\u6237\u7ec4 dba \u53ef\u4ee5\u8fd0\u884c DBA \u522b\u540d\u4e2d\u7528\u6237\u6743\u9650\u7684\u6240\u6709\u547d\u4ee4<\/span>\r\n\r\n<span class=\"cmt\"># \u6240\u6709\u7528\u6237\u53ef\u4ee5\u5728 DESKTOP \u522b\u540d\u7684\u4e3b\u673a\u4e0a \u6302\u8f7d\/\u5378\u8f7d CD-ROM<\/span>\r\nALL          DESKTOP = NOPASSWD: \/sbin\/mount \/cdrom,\/sbin\/umount \/cdrom\r\n<\/pre>\n<\/div>\n<div id=\"crypt\">\n<h1><a>\u6587\u4ef6\u52a0\u5bc6<\/a><\/h1>\n<h2>\u5355\u4e2a\u6587\u4ef6<\/h2>\n<p>\u52a0\u5bc6\u548c\u89e3\u5bc6\uff1a<\/p>\n<pre># openssl des -salt -in file -out file.des\r\n# openssl des -d -salt -in file.des -out file\r\n<\/pre>\n<p>\u90a3\u4e2a file \u53ef\u4ee5\u662f\u5f52\u6863\u6587\u4ef6(tar archive)\u3002<\/p>\n<h2>\u5f52\u6863\u5e76\u52a0\u5bc6\u6574\u4e2a\u76ee\u5f55<\/h2>\n<pre># tar -cf - directory | openssl des -salt -out directory.tar.des      <span class=\"cmt\"># \u52a0\u5bc6<\/span>\r\n# openssl des -d -salt -in directory.tar.des | tar -x                 <span class=\"cmt\"># \u89e3\u5bc6<\/span>\r\n<\/pre>\n<h2>\u538b\u7f29\u5f52\u6863\u5e76\u52a0\u5bc6\u6574\u4e2a\u76ee\u5f55<\/h2>\n<pre># tar -zcf - directory | openssl des -salt -out directory.tar.gz.des  <span class=\"cmt\"># \u52a0\u5bc6<\/span>\r\n# openssl des -d -salt -in directory.tar.gz.des | tar -xz             <span class=\"cmt\"># \u89e3\u5bc6<\/span>\r\n<\/pre>\n<ul>\n<li>\u5728\u4f7f\u7528-k mysecretpassword\u540e\uff0cdes\u4f1a\u53d6\u6d88\u4ea4\u4e92\u5f0f\u7684\u5bc6\u7801\u8bf7\u6c42\u3002\u4e0d\u8fc7\uff0c\u8fd9\u975e\u5e38\u4e0d\u5b89\u5168\u3002<\/li>\n<li>\u4f7f\u7528des3\u4ee3\u66ffdes\u6765\u83b7\u5f97\u66f4\u5f3a\u7684\u52a0\u5bc6(Triple-DES Cipher)\u3002\u8fd9\u540c\u6837\u4f1a\u6d88\u8017\u66f4\u591a\u7684CPU\u3002<\/li>\n<\/ul>\n<h2>GPG<\/h2>\n<p><a href=\"http:\/\/gnupg.org\/\">GnuPG<\/a>\u00a0\u662f\u4f17\u6240\u5468\u77e5\u7684\u5bf9\u90ae\u4ef6\u6216\u4efb\u4f55\u6570\u636e\u8fdb\u884c\u52a0\u5bc6\u548c\u7b7e\u540d\u7684\u8f6f\u4ef6\u3002\u6b64\u5916\uff0cgpg \u8fd8\u63d0\u4f9b\u9ad8\u7ea7\u5bc6\u94a5\u7ba1\u7406\u7cfb\u7edf\u3002\u6b64\u7ae0\u8282\u53ea\u6db5\u76d6\u4e86\u6587\u4ef6\u52a0\u5bc6\uff0c\u6ca1\u6709\u90ae\u4ef6\u52a0\u5bc6\u3001\u7b7e\u540d\u6216\u8005\u4fe1\u4efb\u7f51\u7edc(Web-Of-Trust)\u3002<br \/>\n\u5355\u7eaf\u7684\u52a0\u5bc6\u662f\u4e00\u4e2a\u5bf9\u79f0\u5f0f\u7684\u52a0\u5bc6\u7b97\u6cd5(symmetric cipher)\u3002\u5728\u672c\u4f8b\u4e2d\uff0c\u6587\u4ef6\u662f\u7528\u4e00\u4e2a\u79d8\u5bc6\u6765\u52a0\u5bc6\u7684\uff0c\u4efb\u4f55\u4eba\u77e5\u9053\u4e86\u8fd9\u4e2a\u5bc6\u7801\u90fd\u53ef\u4ee5\u5bf9\u5176\u8fdb\u884c\u89e3\u5bc6\uff0c\u56e0\u6b64\u5c31\u4e0d\u9700\u8981\u5bc6\u94a5\u3002Gpg \u6dfb\u52a0\u540e\u7f00 &#8220;.gpg&#8221; \u5230\u5df2\u52a0\u5bc6\u7684\u6587\u4ef6\u540d\u3002<\/p>\n<pre># gpg -c file                        <span class=\"cmt\"># \u4f7f\u7528\u5bc6\u7801\u52a0\u5bc6\u6587\u4ef6<\/span>\r\n# gpg file.gpg                       <span class=\"cmt\"># \u6587\u4ef6\u89e3\u5bc6(\u9009\u9879 -o \u5176\u4ed6\u6587\u4ef6)<\/span>\r\n<\/pre>\n<h3>\u4f7f\u7528\u5bc6\u94a5<\/h3>\n<p>\u5bf9\u4e8e\u66f4\u8be6\u7ec6\u7684\u8bf7\u770b\u00a0<a href=\"http:\/\/www.madboa.com\/geek\/gpg-quickstart\">GPG \u5feb\u901f\u4e0a\u624b<\/a>\u00a0\u548c\u00a0<a href=\"http:\/\/aplawrence.com\/Basics\/gpg.html\">GPG\/PGP \u57fa\u7840<\/a>\uff0c\u7279\u522b\u662f\u00a0<a href=\"http:\/\/gnupg.org\/documentation\">gnupg \u6587\u6863<\/a>\u3002<br \/>\n\u5bc6\u94a5\u5bf9(\u79c1\u94a5\uff0c\u516c\u94a5)\u4e3a\u975e\u5bf9\u79f0\u52a0\u5bc6\u6280\u672f\u3002 \u8981\u70b9\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li>\u4f60\u7684\u516c\u94a5\u662f\u7528\u6765\u7ed9<i>\u522b\u4eba<\/i>\u52a0\u5bc6\u6587\u4ef6\u7684\u5e76\u4e14\u53ea\u6709\u4f60\u4f5c\u4e3a\u63a5\u6536\u8005\u624d\u53ef\u4ee5\u89e3\u5bc6(\u751a\u81f3\u4e0d\u662f\u4e00\u4e2a\u4eba\u52a0\u5bc6\u7684\u6587\u4ef6\u4e5f\u53ef\u4ee5\u89e3\u5bc6)\u3002\u516c\u94a5\u662f\u516c\u5f00\u7684\u4e5f\u5c31\u610f\u5473\u7740\u53ef\u4ee5\u5206\u53d1\u3002<\/li>\n<li>\u7528\u4f60\u7684\u5bc6\u7801\u52a0\u5bc6\u7684\u79c1\u94a5\u7528\u6765\u89e3\u5bc6\u7528<i>\u4f60\u7684<\/i>\u516c\u94a5\u52a0\u5bc6\u7684\u6587\u4ef6\u3002\u8fd9\u4e2a\u5bc6\u94a5\u5fc5\u987b\u4fdd\u6301<i>\u5b89\u5168<\/i>\u3002\u56e0\u4e3a\u5982\u679c\u9057\u5931\u4e86\u79c1\u94a5\u6216\u8005\u5bc6\u7801\uff0c\u90a3\u4e48\u6240\u6709\u7684\u6587\u4ef6\u90fd\u662f\u4f7f\u7528\u4f60\u7684\u516c\u94a5\u52a0\u5bc6\u7684\u3002<\/li>\n<li>\u591a\u4e2a\u5bc6\u94a5\u6587\u4ef6\u88ab\u79f0\u4e3a\u5bc6\u94a5\u73af(keyrings)\uff0c\u5979\u53ef\u4ee5\u5305\u542b\u4e00\u4e2a\u4ee5\u4e0a\u7684\u5bc6\u94a5\u3002<\/li>\n<\/ul>\n<p>\u9996\u5148\u751f\u6210\u5bc6\u94a5\u5bf9\u3002\u4f7f\u7528\u9ed8\u8ba4\u5c31\u884c\uff0c\u4f46\u4f60\u81f3\u5c11\u8981\u8f93\u5165\u4f60\u7684\u5168\u540d\u3001\u90ae\u4ef6\u5730\u5740\u548c\u53ef\u9009\u6ce8\u91ca\u3002\u8be5\u6ce8\u91ca\u5bf9\u4e8e\u521b\u5efa\u76f8\u540c\u7684\u540d\u5b57\u548c\u90ae\u4ef6\u5730\u5740\u7684\u591a\u4e2a\u5bc6\u94a5\u6765\u8bf4\u975e\u5e38\u6709\u7528\u3002\u6b64\u5916\uff0c\u4f60\u5e94\u8be5\u4f7f\u7528&#8221;\u53e3\u4ee4(passphrase)&#8221;\uff0c\u800c\u4e0d\u662f\u7b80\u5355\u7684\u5bc6\u7801\u3002<\/p>\n<pre># gpg --gen-key                      <span class=\"cmt\"># \u8fd9\u9700\u8981\u4e00\u4e9b\u65f6\u95f4<\/span><\/pre>\n<p>\u5728 Unix \u4e0a\u5bc6\u94a5\u5b58\u50a8\u5728 ~\/.gnupg\/ \u4e2d\uff0c\u5728 Windows \u4e0a\u901a\u5e38\u5b58\u50a8\u5728<br \/>\nC:\/Documents and Settings\/%USERNAME%\/Application Data\/gnupg\/ \u4e2d\u3002<\/p>\n<pre>~\/.gnupg\/pubring.gpg                 <span class=\"cmt\"># \u5305\u542b\u4f60\u7684\u516c\u94a5\u548c\u6240\u6709\u5176\u4ed6\u5bfc\u5165\u7684\u4fe1\u606f<\/span>\r\n~\/.gnupg\/secring.gpg                 <span class=\"cmt\"># \u53ef\u5305\u542b\u591a\u4e2a\u79c1\u94a5<\/span>\r\n<\/pre>\n<p>\u5e38\u7528\u9009\u9879\u7684\u7b80\u77ed\u63cf\u8ff0\uff1a<\/p>\n<ul>\n<li><b>-e<\/b>\u00a0\u52a0\u5bc6\u6570\u636e<\/li>\n<li><b>-d<\/b>\u00a0\u89e3\u5bc6\u6570\u636e<\/li>\n<li><b>-r<\/b>\u00a0\u4e3a\u67d0\u4e2a\u6536\u4ef6\u8005\u52a0\u5bc6(&#8216;\u5168\u540d&#8217; \u6216\u8005 &#8217;email@domain&#8217;)<\/li>\n<li><b>-a<\/b>\u00a0\u8f93\u51fa\u7ecf\u8fc7 ascii \u5c01\u88c5\u7684\u5bc6\u94a5<\/li>\n<li><b>-o<\/b>\u00a0\u6307\u5b9a\u8f93\u51fa\u6587\u4ef6<\/li>\n<\/ul>\n<p>\u672c\u5b9e\u4f8b\u4f7f\u7528&#8217;Your Name&#8217; \u548c &#8216;Alice&#8217; \u4f5c\u4e3a\u5bc6\u94a5\u7684 email \u6216 \u5168\u540d \u6216 \u90e8\u5206\u540d\u5b57\u7684\u53c2\u8003\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u6211\u53ef\u4ee5\u4f7f\u7528 &#8216;Colin&#8217; or &#8216;c@cb.vu&#8217; \u7ed9\u6211\u7684\u5bc6\u94a5 [Colin Barschel (cb.vu) &lt;c@cb.vu&gt;]\u3002<\/p>\n<h3>\u53ea\u7528\u4e8e\u4e2a\u4eba\u7684\u52a0\u5bc6<\/h3>\n<p>\u4e0d\u9700\u8981\u5bfc\u51fa\/\u5bfc\u5165\u4efb\u4f55\u5bc6\u94a5\uff0c\u56e0\u4e3a\u4f60\u90fd\u5df2\u7ecf\u6709\u4e86\u3002<\/p>\n<pre># gpg -e -r 'Your Name' file                  <span class=\"cmt\"># \u4f7f\u7528\u4f60\u7684\u516c\u94a5\u52a0\u5bc6<\/span>\r\n# gpg -o file -d file.gpg                     <span class=\"cmt\"># \u89e3\u5bc6\u3002\u4f7f\u7528 -o \u6307\u5b9a\u8f93\u51fa\u6587\u4ef6<\/span>\r\n<\/pre>\n<h3>\u7528\u5bc6\u94a5\u52a0\u5bc6-\u89e3\u5bc6<\/h3>\n<p>\u9996\u5148\u4f60\u9700\u8981\u5bfc\u51fa\u7ed9\u522b\u4eba\u4f7f\u7528\u7684\u516c\u94a5\u3002\u5e76\u4e14\u4f60\u9700\u8981\u5bfc\u5165\u6765\u81ea Alice \u5979\u6240\u52a0\u5bc6\u6587\u4ef6\u7684\u516c\u94a5\u3002\u4f60\u53ef\u4ee5\u7528\u7b80\u5355\u7684 ascii \u6587\u6863\u6216\u8005\u4f7f\u7528\u516c\u94a5\u670d\u52a1\u5668\u6765\u4fdd\u5b58\u8fd9\u4e9b\u5bc6\u94a5\u3002<br \/>\n\u4e3e\u4e2a\u4f8b\u5b50\uff0cAlice \u5bfc\u51fa\u5979\u7684\u516c\u94a5\uff0c\u7136\u540e\u4f60\u5bfc\u5165\u5b83\uff0c\u4e4b\u540e\u4f60\u5c31\u53ef\u4ee5\u52a0\u5bc6\u4e00\u4e2a\u6587\u4ef6\u7ed9\u5979\u3002\u8fd9\u4e2a\u52a0\u5bc6\u6587\u4ef6\u53ea\u6709 Alice \u53ef\u4ee5\u89e3\u5bc6\u3002<\/p>\n<pre># gpg -a -o alicekey.asc --export 'Alice'               <span class=\"cmt\"># Alice \u5bfc\u51fa\u5979\u7684\u516c\u94a5\u5230 ascii \u6587\u4ef6\u4e2d<\/span>\r\n# gpg --send-keys --keyserver subkeys.pgp.net KEYID     <span class=\"cmt\"># Alice \u628a\u5979\u7684\u516c\u94a5\u653e\u5165\u4e00\u4e2a\u670d\u52a1\u5668<\/span>\r\n# gpg --import alicekey.asc                             <span class=\"cmt\"># \u4f60\u5bfc\u5165\u5979\u7684\u5bc6\u94a5\u5230\u4f60\u7684\u516c\u94a5\u73af(pubring)\u4e2d<\/span>\r\n# gpg --search-keys --keyserver subkeys.pgp.net 'Alice' <span class=\"cmt\"># \u6216\u8005\u4ece\u4e00\u4e2a\u670d\u52a1\u5668\u4e2d\u83b7\u53d6\u4ed6\u7684\u516c\u94a5<\/span>\r\n<\/pre>\n<p>\u4e00\u65e6\u8fd9\u4e9b\u516c\u94a5\u5bfc\u5165\u540e\uff0c\u52a0\u5bc6\u6216\u89e3\u5bc6\u4e00\u4e2a\u6587\u4ef6\u4f1a\u975e\u5e38\u7b80\u5355\uff1a<\/p>\n<pre># gpg -e -r 'Alice' file                      <span class=\"cmt\"># \u7ed9 Alice \u52a0\u5bc6\u6587\u4ef6<\/span>\r\n# gpg -d file.gpg -o file                     <span class=\"cmt\"># \u89e3\u5bc6 Alice \u7ed9\u4f60\u7684\u52a0\u5bc6\u6587\u4ef6<\/span>\r\n<\/pre>\n<h3>\u5bc6\u94a5\u7ba1\u7406<\/h3>\n<pre># gpg --list-keys                             <span class=\"cmt\"># \u5217\u51fa\u6240\u6709\u516c\u94a5\u5e76\u67e5\u770b\u5176 KEYID<\/span>\r\n    <span class=\"cmt\">KEYID \u8ddf\u5728 '\/' \u540e\u9762 \u6bd4\u5982\uff1apub   1024D\/D12B77CE \u5b83\u7684 KEYID \u662f D12B77CE<\/span>\r\n# gpg --gen-revoke 'Your Name'                <span class=\"cmt\"># \u4ea7\u751f\u4e00\u4efd\u64a4\u9500\u5bc6\u94a5\u8bc1\u4e66<\/span>\r\n# gpg --list-secret-keys                      <span class=\"cmt\"># \u5217\u51fa\u6240\u6709\u79c1\u94a5<\/span>\r\n# gpg --delete-keys NAME                      <span class=\"cmt\"># \u4ece\u672c\u7684\u5bc6\u94a5\u73af\u4e2d\u5220\u9664\u4e00\u4e2a\u516c\u94a5<\/span>\r\n# gpg --delete-secret-key NAME                <span class=\"cmt\"># \u4ece\u672c\u7684\u5bc6\u94a5\u73af\u4e2d\u5220\u9664\u4e00\u4e2a\u79c1\u94a5<\/span>\r\n# gpg --fingerprint KEYID                     <span class=\"cmt\"># \u663e\u793a KIYID \u8fd9\u4e2a\u5bc6\u94a5\u7684\u6307\u7eb9<\/span>\r\n# gpg --edit-key KEYID                        <span class=\"cmt\"># \u7f16\u8f91\u5bc6\u94a5(\u6bd4\u5982\u7b7e\u540d\u6216\u8005\u6dfb\u52a0\/\u5220\u9664 email)<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"cryptpart\">\n<h1><a>\u5206\u533a\u52a0\u5bc6<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#wluks\">Linux with LUKS<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#woluks\">Linux dm-crypt only<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#bsdgeli\">FreeBSD GELI<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#bsdpwd\">FreeBSD \u53ea\u4f7f\u7528\u5bc6\u7801<\/a><\/p>\n<p>\u6709(\u8bb8\u591a)\u5176\u4ed6\u66ff\u4ee3\u65b9\u6cd5\u6765\u52a0\u5bc6\u78c1\u76d8\uff0c\u6211\u53ea\u5448\u73b0\u6211\u6240\u77e5\u9053\u548c\u4f7f\u7528\u7684\u65b9\u6cd5\u3002\u8bf7\u8bb0\u4f4f\uff0c\u5b89\u5168\u53ea\u662f\u7cfb\u7edf\u8fd8\u672a\u7ecf\u8fc7\u5b9e\u9645\u8003\u9a8c\u800c\u5df2\u3002\u5165\u4fb5\u8005\u53ef\u4ee5\u8f7b\u6613\u901a\u8fc7\u952e\u76d8\u4e8b\u4ef6\u8bb0\u5f55\u5bc6\u7801\u3002\u6b64\u5916\uff0c\u5f53\u5df2\u7ecf\u52a0\u8f7d\u4e86\u5206\u533a\uff0c\u5176\u6570\u636e\u662f\u53ef\u4ee5\u81ea\u7531\u8bbf\u95ee\u7684\uff0c\u5e76\u4e0d\u4f1a\u963b\u6b62\u5165\u4fb5\u8005\u53bb\u8bbf\u95ee\u5b83\u3002<\/p>\n<h2 id=\"dm-crypt\">Linux<\/h2>\n<p>\u8fd9\u90e8\u5206\u6211\u4eec\u4f7f\u7528\u53ef\u7528\u4e8e 2.6 \u5185\u6838\u7684 Linux dm-crypt (device-mapper)\u3002\u5728\u8fd9\u4e2a\u5b9e\u4f8b\u4e2d\uff0c\u8ba9\u6211\u4eec\u52a0\u5bc6\u00a0<code>\/dev\/sdc1<\/code>\u00a0\u5206\u533a\uff0c\u5b83\u53ef\u4e3a\u4efb\u4f55\u5176\u4ed6\u5206\u533a\u3001\u78c1\u76d8\u3001USB\u6216\u8005\u7528\u00a0<code>losetup<\/code>\u00a0\u521b\u5efa\u7684\u57fa\u4e8e\u6587\u4ef6\u7684\u5206\u533a\u3002\u5bf9\u4e8e\u57fa\u4e8e\u6587\u4ef6\u7684\u5206\u533a\uff0c\u6211\u4eec\u4f7f\u7528\u00a0<code>\/dev\/loop0<\/code>\u3002\u770b\u00a0<a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#losetup\">\u955c\u50cf\u6587\u4ef6\u5206\u533a<\/a>\u3002Device mapper \u5229\u7528\u6807\u7b7e\u6765\u6807\u8bc6\u4e00\u4e2a\u5206\u533a\u3002\u6211\u4eec\u4f7f\u7528\u00a0<code>sdc1<\/code>\u00a0\u4f5c\u4e3a\u6b64\u6807\u7b7e\uff0c\u4f46\u53ef\u4ee5\u4e3a\u4efb\u4f55\u5b57\u7b26\u4e32\u3002<\/p>\n<h3 id=\"wluks\">dm-crypt with LUKS<\/h3>\n<p>LUKS \u548c dm-crypt \u662f\u8f83\u597d\u7684\u52a0\u5bc6\u6280\u672f\uff0c\u5e76\u4e14\u53ef\u4e3a\u540c\u4e00\u4e2a\u5206\u533a\u8bbe\u7f6e\u591a\u4e2a\u53e3\u4ee4\uff0c\u66f4\u6539\u5bc6\u7801\u4e5f\u5f88\u65b9\u4fbf\u3002\u53ef\u7b80\u5355\u8f93\u5165\u00a0<code># cryptsetup --help<\/code>\u00a0\u6765\u6d4b\u8bd5 LUKS \u662f\u5426\u53ef\u7528\u3002\u5982\u679c\u6ca1\u6709\u663e\u793a\u4efb\u4f55\u5173\u4e8e LUKS \u7684\u4fe1\u606f\uff0c\u53ef\u770b\u4e0b\u9762<a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#woluks\">Without LUKS<\/a>\u00a0\u7684\u4ecb\u7ecd\u3002\u7b2c\u4e00\u6b65\u5982\u679c\u9700\u8981\u7684\u8bdd\u521b\u5efa\u4e00\u4e2a\u5206\u533a\uff1a<code>fdisk \/dev\/sdc<\/code>\u3002<\/p>\n<h4>\u521b\u5efa\u52a0\u5bc6\u5206\u533a<\/h4>\n<pre># dd if=\/dev\/urandom of=\/dev\/sdc1          <span class=\"cmt\"># \u53ef\u9009<\/span>\r\n# cryptsetup -y luksFormat \/dev\/sdc1       <span class=\"cmt\"># \u8fd9\u7834\u574f\u4e86\u5728 sdc1 \u4e0a\u7684\u6570\u636e<\/span>\r\n# cryptsetup luksOpen \/dev\/sdc1 sdc1\r\n# mkfs.ext3 \/dev\/mapper\/sdc1               <span class=\"cmt\"># \u521b\u5efa ext3 \u6587\u4ef6\u7cfb\u7edf<\/span>\r\n# mount -t ext3 \/dev\/mapper\/sdc1 \/mnt\r\n# umount \/mnt\r\n# cryptsetup luksClose sdc1                <span class=\"cmt\"># Detach \u5df2\u52a0\u5bc6\u7684\u5206\u533a<\/span><\/pre>\n<h4>Attach<\/h4>\n<pre># cryptsetup luksOpen \/dev\/sdc1 sdc1\r\n# mount -t ext3 \/dev\/mapper\/sdc1 \/mnt<\/pre>\n<h4>Detach<\/h4>\n<pre># umount \/mnt\r\n# cryptsetup luksClose sdc1\r\n<\/pre>\n<h3 id=\"woluks\">dm-crypt without LUKS<\/h3>\n<pre># cryptsetup -y create sdc1 \/dev\/sdc1      <span class=\"cmt\"># \u6216\u4efb\u4f55\u5176\u4ed6\u5206\u533a\u50cf \/dev\/loop0<\/span>\r\n# dmsetup ls                               <span class=\"cmt\"># \u68c0\u67e5\u4e00\u4e0b\uff0c\u5c06\u663e\u793a\uff1asdc1 (254, 0)<\/span>\r\n# mkfs.ext3 \/dev\/mapper\/sdc1               <span class=\"cmt\"># \u53ea\u6709\u7b2c\u4e00\u6b21\u8981\u8fd9\u4e48\u505a\uff01<\/span>\r\n# mount -t ext3 \/dev\/mapper\/sdc1 \/mnt\r\n# umount \/mnt\/\r\n# cryptsetup remove sdc1                   <span class=\"cmt\"># Detach \u5df2\u52a0\u5bc6\u7684\u5206\u533a<\/span>\r\n<\/pre>\n<p>\u8fd9\u6837\u505a\u7b49\u540c\u4e8e(\u975e mkfs \u90e8\u5206) re-attach \u5206\u533a\u3002\u5982\u679c\u5bc6\u7801\u4e0d\u6b63\u786e\uff0cmount \u547d\u4ee4\u5c06\u4f1a\u5931\u8d25\u3002\u5bf9\u4e8e\u8fd9\u4e2a\u4f8b\u5b50\uff0c\u53ea\u8981\u7b80\u5355\u7684\u79fb\u9664 sdc1 (<code>cryptsetup remove sdc1<\/code>)\u5e76\u91cd\u5efa\u5373\u53ef\u3002<\/p>\n<h2 id=\"bsdgeli\">FreeBSD<\/h2>\n<p>\u4e24\u4e2a\u6d41\u884c\u7684 FreeBSD \u78c1\u76d8\u52a0\u5bc6\u6a21\u5757\u4e3a\u00a0<code>gbde<\/code>\u00a0\u548c\u00a0<code>geli<\/code>\u3002\u6211\u73b0\u5728\u4f7f\u7528\u00a0<code>geli<\/code>\u00a0\u539f\u56e0\u662f\u5b83\u591f\u5feb\u5e76\u4e14\u5b83\u4f7f\u7528\u52a0\u89e3\u5bc6\u786c\u4ef6\u52a0\u901f\u8bbe\u5907\u3002\u8be6\u60c5\u53ef\u770b\u00a0<a href=\"http:\/\/www.freebsd.org\/handbook\/disks-encrypting.html\">FreeBSD \u4f7f\u7528\u624b\u518c 18.6<\/a>\u3002<code>geli<\/code>\u00a0\u6a21\u5757\u5fc5\u987b\u5df2\u7f16\u8bd1\u6216\u52a0\u8f7d\u8fdb\u5185\u6838\uff1a<\/p>\n<pre>options GEOM_ELI\r\ndevice crypto                                       <span class=\"cmt\"># \u5185\u6838\u914d\u7f6e\u6587\u4ef6\u4e2d\u52a0\u5165\u8fd9\u4e24\u884c<\/span>\r\n# echo 'geom_eli_load=\"YES\"' &gt;&gt; \/boot\/loader.conf   <span class=\"cmt\"># \u4e5f\u53ef\u4ee5\u5728\u7cfb\u7edf\u5f15\u5bfc\u65f6\u52a0\u8f7d\u6216\u8005\u505a\uff1akldload geom_eli<\/span>\r\n<\/pre>\n<h3>\u4f7f\u7528\u5bc6\u7801\u548c\u5bc6\u94a5<\/h3>\n<p>\u6211\u4e3a\u4e00\u4e2a\u5178\u578b\u7684\u78c1\u76d8\u52a0\u5bc6\u4f7f\u7528\u8fd9\u4e9b\u8bbe\u7f6e\uff0c\u5176\u4f7f\u7528\u4e86\u4e00\u4e2a\u53e3\u4ee4\u548c\u4e00\u4e2a\u52a0\u5bc6\u4e3b\u5bc6\u94a5(master key)\u7684\u5bc6\u94a5\u3002\u8fd9\u610f\u5473\u7740\u4f60\u9700\u8981\u5bc6\u7801\u548c\u751f\u4ea7\u7684\u5bc6\u94a5\u00a0<code>\/root\/ad1.key<\/code>\u00a0\u6765 attach \u5206\u533a\u3002\u4e3b\u5bc6\u94a5\u5b58\u50a8\u5728\u8fd9\u4e2a\u52a0\u5bc6\u5206\u533a\u4e2d\u5e76\u4e14\u4e0d\u53ef\u89c1\u3002\u770b\u4e0b\u9762\u4e3a USB \u6216 \u6620\u50cf\u6587\u4ef6\u7684\u52a0\u5bc6\u8bbe\u7f6e\u3002<\/p>\n<h4>\u521b\u5efa\u52a0\u5bc6\u5206\u533a<\/h4>\n<pre># dd if=\/dev\/random of=\/root\/ad1.key bs=64 count=1  <span class=\"cmt\"># \u52a0\u5bc6\u4e3b\u5bc6\u94a5\u7684\u5bc6\u94a5<\/span>\r\n# geli init -s 4096 -K \/root\/ad1.key \/dev\/ad1       <span class=\"cmt\"># \u5bf9\u4e8e\u78c1\u76d8\u4e5f\u53ef\u7528 -s 8192<\/span>\r\n# geli attach -k \/root\/ad1.key \/dev\/ad1             <span class=\"cmt\"># \u5c06 \/dev\/ad1 \u4e0e\u6240\u751f\u6210\u7684\u5bc6\u94a5 \/root\/ad1.key \u5173\u8054<\/span>\r\n# dd if=\/dev\/random of=\/dev\/ad1.eli bs=1m           <span class=\"cmt\"># \u53ef\u9009\uff0c\u9700\u8981\u5f88\u957f\u65f6\u95f4<\/span>\r\n# newfs \/dev\/ad1.eli                                <span class=\"cmt\"># \u521b\u5efa\u6587\u4ef6\u7cfb\u7edf<\/span>\r\n# mount \/dev\/ad1.eli \/mnt\r\n<\/pre>\n<h4>Attach<\/h4>\n<pre># geli attach -k \/root\/ad1.key \/dev\/ad1\r\n# fsck -ny -t ffs \/dev\/ad1.eli                      <span class=\"cmt\"># \u68c0\u67e5\u6587\u4ef6\u7cfb\u7edf<\/span>\r\n# mount \/dev\/ad1.eli \/mnt\r\n<\/pre>\n<h4>Detach<\/h4>\n<p>Detach \u6b65\u9aa4\u4f1a\u5728\u5173\u673a\u65f6\u81ea\u52a8\u5b8c\u6210\u3002<\/p>\n<pre># umount \/mnt\r\n# geli detach \/dev\/ad1.eli\r\n<\/pre>\n<h4>\/etc\/fstab<\/h4>\n<p>\u52a0\u5bc6\u5206\u533a\u5728 \/etc\/fstab \u4e2d\u914d\u7f6e\u6210\u81ea\u52a8\u52a0\u8f7d\u3002\u7cfb\u7edf\u542f\u52a8\u65f6\u4f1a\u8be2\u95ee\u52a0\u5bc6\u5206\u533a\u7684\u5bc6\u7801\u3002\u5bf9\u4e8e\u672c\u4f8b\u4e0b\u5217\u8bbe\u7f6e\u662f\u5fc5\u987b\u7684\uff1a<\/p>\n<pre># grep geli \/etc\/rc.conf\r\ngeli_devices=\"ad1\"\r\ngeli_ad1_flags=\"-k \/root\/ad1.key\"\r\n# grep geli \/etc\/fstab\r\n\/dev\/ad1.eli         \/home\/private              ufs             rw      0       0\r\n<\/pre>\n<h3 id=\"bsdpwd\">\u4ec5\u7528\u5bc6\u7801<\/h3>\n<p>\u52a0\u5bc6\u4e00\u4e2a USB stick \u6216\u8005\u6620\u50cf\u6587\u4ef6\u4f7f\u7528\u5bc6\u7801\u800c\u4e0d\u662f\u5bc6\u94a5\u6765\u5f97\u66f4\u65b9\u4fbf\u3002\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6ca1\u6709\u5fc5\u8981\u968f\u8eab\u643a\u5e26\u989d\u5916\u7684\u5bc6\u94a5\u6587\u4ef6\u3002\u6240\u505a\u6b65\u9aa4\u540c\u4e0a\u9762\u975e\u5e38\u76f8\u4f3c\uff0c\u53ea\u662f\u4e0d\u9700\u8981\u5bc6\u94a5\u6587\u4ef6\u3002\u8ba9\u6211\u4eec\u6765\u52a0\u5bc6\u4e00\u4e2a 1 GB \u7684\u6620\u50cf\u6587\u4ef6<code>\/cryptedfile<\/code>\u3002<\/p>\n<pre># dd if=\/dev\/zero of=\/cryptedfile bs=1M count=1000  <span class=\"cmt\"># 1 GB \u6587\u4ef6<\/span>\r\n# mdconfig -at vnode -f \/cryptedfile\r\n# geli init \/dev\/md0                                <span class=\"cmt\"># \u4ec5\u7528\u5bc6\u7801\u52a0\u5bc6<\/span>\r\n# geli attach \/dev\/md0\r\n# newfs -U -m 0 \/dev\/md0.eli\r\n# mount \/dev\/md0.eli \/mnt\r\n# umount \/dev\/md0.eli\r\n# geli detach md0.eli\r\n<\/pre>\n<p>\u73b0\u5728\u53ef\u4ee5\u628a\u8fd9\u4e2a\u6620\u50cf\u6587\u4ef6\u52a0\u8f7d\u6210\u4ec5\u9700\u5bc6\u7801\u7684\u6587\u4ef6\u7cfb\u7edf\u3002<\/p>\n<pre># mdconfig -at vnode -f \/cryptedfile\r\n# geli attach \/dev\/md0\r\n# mount \/dev\/md0.eli \/mnt\r\n<\/pre>\n<\/div>\n<div id=\"certs\">\n<h1><a>SSL \u8ba4\u8bc1<\/a><\/h1>\n<p>\u6240\u8c13\u7684 SSL\/TLS \u8ba4\u8bc1\u662f\u52a0\u5bc6\u7684\u516c\u94a5\u8ba4\u8bc1\uff0c\u5b83\u7531\u4e00\u4e2a\u516c\u7528\u5bc6\u94a5\u548c\u79c1\u7528\u5bc6\u94a5\u7ec4\u6210\u3002\u8bc1\u4e66\u7528\u6765\u8ba4\u8bc1\u7ec8\u7aef\u548c\u52a0\u5bc6\u6570\u636e\u7684\u3002\u4f8b\u5982\uff0c\u7528\u5728 web \u670d\u52a1\u5668(https)\u6216\u8005\u90ae\u4ef6\u670d\u52a1\u5668(imaps)\u3002<\/p>\n<h2>\u6b65\u9aa4<\/h2>\n<ul>\n<li>\u6211\u4eec\u9700\u8981\u4e00\u4e2a\u8bc1\u4e66\u9881\u53d1\u673a\u6784\u6765\u7b7e\u7f72\u6211\u4eec\u7684\u8bc1\u4e66\u3002\u8fd9\u4e00\u6b65\u901a\u5e38\u7531\u4f9b\u5e94\u5546\u63d0\u4f9b\uff0c\u5982 Thawte\u3001Verisign\u7b49\u3002\u4e0d\u8fc7\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u521b\u5efa\u6211\u4eec\u81ea\u5df1\u7684\u3002<\/li>\n<li>\u521b\u5efa\u4e00\u4e2a\u8bc1\u4e66\u7b7e\u53d1\u7533\u8bf7(signing request)\u3002\u8fd9\u4e2a\u7533\u8bf7\u9700\u8981\u4e00\u4e2a\u5df2\u7ecf\u5305\u542b\u6240\u6709\u5fc5\u9700\u7684\u4fe1\u606f\u7684\u672a\u7b7e\u7f72\u8bc1\u4e66(\u516c\u5171\u90e8\u5206)\u3002\u8be5\u8bc1\u4e66\u7533\u8bf7\u901a\u5e38\u53d1\u9001\u5230\u8ba4\u8bc1\u4f9b\u5e94\u5546\u53bb\u7b7e\u7f72\u3002\u8fd9\u4e00\u6b65\u540c\u6837\u4e5f\u5728\u672c\u5730\u673a\u5668\u4e0a\u521b\u5efa\u4e86\u79c1\u94a5\u3002<\/li>\n<li>\u8bc1\u4e66\u9881\u53d1\u673a\u6784\u7b7e\u7f72\u8bc1\u4e66\u3002<\/li>\n<li>\u5982\u679c\u6709\u9700\u8981\uff0c\u52a0\u5165\u8bc1\u4e66\u548c\u5bc6\u94a5\u5230\u5355\u4e2a\u6587\u4ef6\u6765\u7ed9\u5e94\u7528\u7a0b\u5e8f\u4f7f\u7528(web \u670d\u52a1\u5668\u3001\u90ae\u4ef6\u670d\u52a1\u5668\u7b49\uff09\u3002<\/li>\n<\/ul>\n<h2>\u914d\u7f6e OpenSSL<\/h2>\n<p>\u6211\u4eec\u4f7f\u7528 \/usr\/local\/certs \u4f5c\u4e3a\u8fd9\u4e2a\u4f8b\u5b50\u7684\u76ee\u5f55\u6216\u8005\u6839\u636e\u4f60\u7684\u8bbe\u7f6e\u76f8\u5e94\u7684\u7f16\u8f91 \/etc\/ssl\/openssl.cnf \u6587\u4ef6\uff0c\u56e0\u6b64\u4f60\u77e5\u9053\u6587\u4ef6\u5c06\u521b\u5efa\u5728\u54ea\u91cc\u3002\u4ee5\u4e0b\u662f openssl.cnf \u7684\u76f8\u5173\u90e8\u5206\uff1a<\/p>\n<pre>[ CA_default ]\r\ndir             = \/usr\/local\/certs\/CA       <span class=\"cmt\"># \u4fdd\u5b58\u6240\u6709\u4fe1\u606f\u7684\u6587\u4ef6\u5939<\/span>\r\ncerts           = $dir\/certs                <span class=\"cmt\"># \u5df2\u751f\u6210\u8bc1\u4e66\u7684\u9ed8\u8ba4\u4fdd\u5b58\u76ee\u5f55<\/span>\r\ncrl_dir         = $dir\/crl                  <span class=\"cmt\"># \u751f\u6210\u7684\u8bc1\u4e66\u64a4\u9500\u5217\u8868(CRL)\u7684\u9ed8\u8ba4\u4fdd\u5b58\u76ee\u5f55<\/span>\r\ndatabase        = $dir\/index.txt            <span class=\"cmt\"># \u4fdd\u5b58\u5df2\u7b7e\u53d1\u8bc1\u4e66\u7684\u6587\u672c\u6570\u636e\u5e93\u6587\u4ef6<\/span>\r\n<\/pre>\n<p>\u786e\u4fdd\u6240\u6709\u76ee\u5f55\u5df2\u7ecf\u521b\u5efa<\/p>\n<pre># mkdir -p \/usr\/local\/certs\/CA\r\n# cd \/usr\/local\/certs\/CA\r\n# mkdir certs crl newcerts private\r\n# echo \"01\" &gt; serial                        <span class=\"cmt\"># \u4ec5\u5f53 serial \u4e0d\u5b58\u5728\u65f6<\/span>\r\n# touch index.txt\r\n<\/pre>\n<h2 id=\"createca\">\u521b\u5efa\u4e00\u4e2a\u8ba4\u8bc1\u6388\u6743<\/h2>\n<p>\u5982\u679c\u4f60\u6ca1\u6709\u6765\u81ea\u4f9b\u5e94\u5546\u7684\u8ba4\u8bc1\u6388\u6743\uff0c\u4f60\u5fc5\u987b\u521b\u5efa\u4f60\u81ea\u5df1\u7684\u3002\u5982\u679c\u6253\u7b97\u53bb\u4f9b\u5e94\u5546\u7b7e\u7f72\u7533\u8bf7\uff0c\u90a3\u4e48\u8fd9\u4e2a\u6b65\u9aa4\u4e0d\u662f\u5fc5\u987b\u7684\u3002\u521b\u5efa\u8ba4\u8bc1\u6388\u6743 (CA)\uff1a<\/p>\n<pre># openssl req -new -x509 -days 730 -config \/etc\/ssl\/openssl.cnf \\\r\n-keyout CA\/private\/cakey.pem -out CA\/cacert.pem\r\n<\/pre>\n<h2 id=\"createreq\">\u521b\u5efa\u8bc1\u4e66\u7b7e\u53d1\u7533\u8bf7<\/h2>\n<p>\u8981\u521b\u5efa\u4e00\u4e2a\u65b0\u8bc1\u4e66(\u6bd4\u5982\u7ed9\u90ae\u4ef6\u670d\u52a1\u5668\u6216 web \u670d\u52a1\u5668)\uff0c\u9996\u5148\u7528\u5176\u79c1\u94a5\u521b\u5efa\u8bc1\u4e66\u7533\u8bf7\u3002\u5982\u679c\u4f60\u7684\u5e94\u7528\u7a0b\u5e8f\u4e0d\u652f\u6301\u52a0\u5bc6\u7684\u79c1\u94a5(\u6bd4\u5982 UW-IMAP \u5c31\u4e0d\u652f\u6301)\uff0c\u90a3\u4e48\u5c31\u7528\u00a0<code>-nodes<\/code>\u00a0\u6765\u7981\u7528\u52a0\u5bc6\u3002<\/p>\n<pre># openssl req -new -keyout newkey.pem -out newreq.pem \\\r\n-config \/etc\/ssl\/openssl.cnf\r\n# openssl req -nodes -new -keyout newkey.pem -out newreq.pem \\\r\n-config \/etc\/ssl\/openssl.cnf                <span class=\"cmt\"># \u4e0d\u5bf9\u8fd9\u4e2a\u5bc6\u94a5\u52a0\u5bc6<\/span>\r\n<\/pre>\n<h2 id=\"signcert\">\u7b7e\u7f72\u8bc1\u4e66<\/h2>\n<p>\u8be5\u8bc1\u4e66\u7533\u8bf7\u7531 CA \u7b7e\u53d1\u786e\u8ba4\uff0c\u8fd9\u4e2a\u6b65\u9aa4\u901a\u5e38\u7531\u4f9b\u5e94\u5546\u5b8c\u6210\u3002<i>\u6ce8\u610f\uff1a\u5728\u4e0b\u9762\u547d\u4ee4\u4e2d\u66ff\u6362 &#8220;servername&#8221; \u6210\u4f60\u7684\u670d\u52a1\u5668\u540d\u79f0<\/i>\u3002<\/p>\n<pre># cat newreq.pem newkey.pem &gt; new.pem\r\n# openssl ca -policy policy_anything -out servernamecert.pem \\\r\n-config \/etc\/ssl\/openssl.cnf -infiles new.pem\r\n# mv newkey.pem servernamekey.pem\r\n<\/pre>\n<p>\u73b0\u5728\uff0cservernamekey.pem \u5c31\u662f\u79c1\u94a5\uff0cservernamecert.pem \u5c31\u4e3a\u670d\u52a1\u5668\u7684\u8bc1\u4e66\u3002<\/p>\n<h2>\u521b\u5efa\u8054\u5408\u8ba4\u8bc1(united certificate)<\/h2>\n<p>IMAP \u670d\u52a1\u5668\u60f3\u8981\u79c1\u94a5\u548c\u670d\u52a1\u5668\u8bc1\u4e66\u5728\u540c\u4e00\u4e2a\u6587\u4ef6\u4e2d\u3002\u901a\u5e38\uff0c\u8fd9\u8fd8\u662f\u6bd4\u8f83\u5bb9\u6613\u5904\u7406\u7684\uff0c\u4f46\u662f\u8be5\u6587\u4ef6\u8981\u4fdd\u8bc1\u5b89\u5168! Apache \u4e5f\u53ef\u4ee5\u5904\u7406\u597d\u5b83\u3002\u521b\u5efa\u4e00\u4e2a\u5305\u542b\u8bc1\u4e66\u548c\u5bc6\u94a5\u7684\u6587\u4ef6 servername.pem \u3002<\/p>\n<ul>\n<li>\u7528\u6587\u672c\u7f16\u8f91\u5668\u6253\u5f00\u79c1\u94a5\u6587\u4ef6(servernamekey.pem)\uff0c\u5e76\u62f7\u8d1d\u79c1\u94a5\u5230 &#8220;servername.pem&#8221; \u6587\u4ef6\u4e2d\u53bb\u3002<\/li>\n<li>\u670d\u52a1\u5668\u8bc1\u4e66(servernamecert.pem)\u4e5f\u505a\u540c\u6837\u7684\u52a8\u4f5c\u3002<\/li>\n<\/ul>\n<p>\u6700\u540e servername.pem \u6587\u4ef6\u5e94\u8be5\u770b\u8d77\u6765\u50cf\u8fd9\u6837\uff1a<\/p>\n<pre>-----BEGIN RSA PRIVATE KEY-----\r\nMIICXQIBAAKBgQDutWy+o\/XZ\/[...]qK5LqQgT3c9dU6fcR+WuSs6aejdEDDqBRQ\r\n-----END RSA PRIVATE KEY-----\r\n-----BEGIN CERTIFICATE-----\r\nMIIERzCCA7CgAwIBAgIBBDANB[...]iG9w0BAQQFADCBxTELMAkGA1UEBhMCREUx\r\n-----END CERTIFICATE-----\r\n<\/pre>\n<p>\u73b0\u5728\u6211\u4eec\u7684 \/usr\/local\/certs\/ \u76ee\u5f55\u4e2d\u6709\u4e86\u8fd9\u4e9b\uff1b<\/p>\n<ul>\n<li>CA\/private\/cakey.pem\u00a0<i>(CA \u670d\u52a1\u5668\u79c1\u94a5)<\/i><\/li>\n<li>CA\/cacert.pem\u00a0<i>(CA \u670d\u52a1\u5668\u516c\u94a5)<\/i><\/li>\n<li>certs\/servernamekey.pem\u00a0<i>(\u670d\u52a1\u5668\u79c1\u94a5)<\/i><\/li>\n<li>certs\/servernamecert.pem\u00a0<i>(\u670d\u52a1\u5668\u5df2\u7b7e\u7f72\u7684\u8bc1\u4e66)<\/i><\/li>\n<li>certs\/servername.pem\u00a0<i>(\u79c1\u94a5\u548c\u670d\u52a1\u5668\u8bc1\u4e66)<\/i><\/li>\n<\/ul>\n<p>\u8981\u4fdd\u8bc1\u79c1\u94a5\u7684\u5b89\u5168!<\/p>\n<h2 id=\"viewcert\">\u67e5\u770b\u8bc1\u4e66\u4fe1\u606f<\/h2>\n<p>\u8981\u67e5\u770b\u8bc1\u4e66\u4fe1\u606f\uff0c\u53ea\u8981\u8fd9\u4e48\u505a\uff1a<\/p>\n<pre># openssl x509 -text -in servernamecert.pem      <span class=\"cmt\"># \u663e\u793a\u8bc1\u4e66\u4fe1\u606f<\/span>\r\n# openssl req -noout -text -in server.csr        <span class=\"cmt\"># \u663e\u793a\u7533\u8bf7\u4fe1\u606f<\/span>\r\n# openssl s_client -connect cb.vu:443            <span class=\"cmt\"># \u68c0\u67e5 web \u670d\u52a1\u5668\u8ba4\u8bc1\u4fe1\u606f<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"cvs\">\n<h1><a>CVS<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#cvssetup\">\u670d\u52a1\u5668\u8bbe\u7f6e<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#cvstest\">CVS \u6d4b\u8bd5<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#cvsssh\">SSH \u96a7\u9053<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#cvsusage\">CVS \u4f7f\u7528<\/a><\/p>\n<h2 id=\"cvssetup\">\u670d\u52a1\u5668\u8bbe\u7f6e<\/h2>\n<h3>CVS \u73af\u5883\u521d\u59cb\u5316<\/h3>\n<p>\u51b3\u5b9a\u4e3b repository \u5c06\u8981\u521b\u5efa\u548c\u91cd\u7f6e\u7684 cvs \u6839\u76ee\u5f55\u3002\u6bd4\u5982 \/usr\/local\/cvs (\u6839)\uff1a<\/p>\n<pre># mkdir -p \/usr\/local\/cvs\r\n# setenv CVSROOT \/usr\/local\/cvs      <span class=\"cmt\"># \u8bbe\u7f6e CVSROOT \u73af\u5883\u53d8\u91cf(\u672c\u5730)<\/span>\r\n# cvs init                           <span class=\"cmt\"># \u521b\u5efa\u6240\u6709\u521d\u59cb\u5316 CVS \u914d\u7f6e\u6587\u4ef6<\/span>\r\n# cd \/root\r\n# cvs checkout CVSROOT               <span class=\"cmt\"># \u7b7e\u51fa\u914d\u7f6e\u6587\u4ef6\u6765\u4fee\u6539\u4ed6\u4eec<\/span>\r\n# cd CVSROOT\r\nedit config ( fine as it is)\r\n# cvs commit config\r\ncat &gt;&gt; writers                       <span class=\"cmt\"># \u521b\u5efa writers \u6587\u4ef6 (\u4e5f\u53ef\u4e3a readers)<\/span>\r\ncolin\r\n^D                                   <span class=\"cmt\"># \u4f7f\u7528 [Control][D] \u9000\u51fa\u7f16\u8f91<\/span>\r\n# cvs add writers                    <span class=\"cmt\"># \u6dfb\u52a0\u6587\u4ef6 writers \u8fdb repository<\/span>\r\n# cvs edit checkoutlist\r\n# cat &gt;&gt; checkoutlist\r\nwriters\r\n^D                                   <span class=\"cmt\"># \u4f7f\u7528 [Control][D] \u9000\u51fa\u7f16\u8f91<\/span>\r\n# cvs commit                         <span class=\"cmt\"># \u63d0\u4ea4\u6240\u6709\u914d\u7f6e\u66f4\u6539<\/span>\r\n<\/pre>\n<p>\u6dfb\u52a0\u4e00\u4e2a\u00a0<strong>readers<\/strong>\u00a0\u6587\u4ef6\uff0c\u5982\u679c\u4f60\u8981\u533a\u5206\u8bfb\u5199\u6743\u9650\u7684\u8bdd\u3002<i>\u6ce8\u610f\uff1a<\/i>\u00a0\u4e0d\u8981\u5728\u4e3b cvs \u4e2d\u76f4\u63a5\u7f16\u8f91\u6587\u4ef6\uff0c\u800c\u5e94\u8be5\u7b7e\u51fa\u8981\u7f16\u8f91\u7684\u6587\u4ef6\uff0c\u4fee\u6539\u5b8c\u6210\u540e\u518d\u7b7e\u5165\u3002\u6211\u4eec\u6240\u505a\u7684\u6587\u4ef6\u00a0<strong>writers<\/strong>\u00a0\u7528\u6765\u5b9a\u4e49\u53ef\u5199\u6743\u9650\u3002<br \/>\n\u4e0b\u9762\u6709\u4e09\u79cd\u6d41\u884c\u7684\u65b9\u5f0f\u53bb\u8bbf\u95ee CVS\u3002\u524d\u4e24\u4e2a\u4e0d\u9700\u8981\u4efb\u4f55\u8fdb\u4e00\u6b65\u7684\u914d\u7f6e\u3002\u770b\u00a0<a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#cvsroot\">CVSROOT<\/a>\u00a0\u90e8\u5206\u7684\u5b9e\u4f8b\u4e86\u89e3\u5982\u4f55\u4f7f\u7528\u5b83\u4eec\uff1a<\/p>\n<ul>\n<li>\u76f4\u63a5\u672c\u7684\u8bbf\u95ee\u6587\u4ef6\u7cfb\u7edf\u3002\u7528\u6237\u9700\u8981\u6709\u8db3\u591f\u7684\u6743\u9650\u6765\u76f4\u63a5\u8bbf\u95ee CVS\uff0c\u9664\u4e86\u8981\u767b\u5f55\u5230\u64cd\u4f5c\u7cfb\u7edf\uff0c\u6ca1\u6709\u8fdb\u4e00\u6b65\u7684\u9a8c\u8bc1\u3002\u7136\u800c\u8fd9\u4ec5\u5bf9\u672c\u5730 repository \u624d\u6709\u7528\u3002<\/li>\n<li>\u4f7f\u7528 ext \u534f\u8bae\u901a\u8fc7 ssh \u6765\u8fdc\u7a0b\u8bbf\u95ee\u3002\u4efb\u4f55\u6709 ssh shell \u8d26\u6237\u548c\u5728 CVS \u670d\u52a1\u5668\u4e0a\u53ef\u8bfb\u5199\u6743\u9650\u7684\u90fd\u53ef\u76f4\u63a5\u4f7f\u7528 ext \u534f\u8bae\u901a\u8fc7 ssh \u6765\u8bbf\u95ee CVS\uff0c\u800c\u4e0d\u9700\u8981\u4efb\u4f55\u989d\u5916\u7684\u96a7\u9053\u3002\u6ca1\u6709\u670d\u52a1\u5668\u6765\u5904\u7406\u8fd0\u884c\u5728 CVS \u4e0a\u7684\u9a8c\u8bc1\u5de5\u4f5c\u3002ssh \u767b\u5f55\u4f1a\u53bb\u9a8c\u8bc1\u3002<\/li>\n<li>\u7528 pserver \u6765\u8fdc\u7a0b\u8bbf\u95ee\u3002\u8fd9\u662f\u5bf9\u4e8e\u6709\u8f83\u5927\u7528\u6237\u91cf\u7684\u9996\u9009\u65b9\u6cd5\uff0c\u7528\u6237\u7531 CVS \u7684 pserver \u901a\u8fc7\u4e00\u4e2a\u4e13\u95e8\u7684\u5bc6\u7801\u6570\u636e\u5e93\u6765\u9a8c\u8bc1\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u672c\u5730\u7528\u6237\u5e10\u6237\u3002\u8fd9\u79cd\u8bbe\u7f6e\u5728\u4e0b\u9762\u4f1a\u6709\u8bf4\u660e\u3002<\/li>\n<\/ul>\n<h3>\u7528 inetd \u8bbe\u7f6e\u7f51\u7edc<\/h3>\n<p>\u5982\u679c\u4e0d\u9700\u8981\u7f51\u7edc\u8bbf\u95ee\uff0cCVS \u53ef\u4ee5\u8fd0\u884c\u4e8e\u672c\u5730\u3002\u5bf9\u4e8e\u8fdc\u7a0b\u8bbf\u95ee\uff0c\u5728 \/etc\/inetd.conf (Suse \u4e3a \/etc\/xinetd.d\/cvs)\u4e2d\u914d\u7f6e\u5982\u4e0b\u884c\uff0c\u53ef\u8ba9\u5b88\u62a4\u8fdb\u7a0b inetd \u542f\u52a8 pserver\uff1a<\/p>\n<pre>cvspserver\tstream  tcp  nowait  cvs  \/usr\/bin\/cvs\tcvs \\\r\n--allow-root=\/usr\/local\/cvs pserver\r\n<\/pre>\n<p>\u8fd9\u662f\u4e2a\u7528\u6765\u963b\u65ad\u4ece internet \u8bbf\u95ee cvs \u7aef\u53e3\u7684\u597d\u65b9\u6cd5\uff0c\u53ef\u4f7f\u7528 ssh \u96a7\u9053\u6765\u8fdc\u7a0b\u7684\u8bbf\u95ee repository\u3002<\/p>\n<h3>\u5355\u72ec\u8ba4\u8bc1<\/h3>\n<p>CVS \u7528\u6237\u53ef\u80fd\u4e0d\u662f\u64cd\u4f5c\u7cfb\u7edf\u7684\u4e00\u90e8\u5206(\u5373\u4e0d\u662f\u672c\u5730\u7528\u6237)\u3002\u8fd9\u5176\u5b9e\u53ef\u4ece\u5b89\u5168\u7684\u89d2\u5ea6\u53bb\u770b\u3002\u7b80\u5355\u7684\u6dfb\u52a0\u4e00\u4e2a\u53eb\u00a0<strong>passwd<\/strong>\u00a0(in the CVSROOT directory) \u7684\u6587\u4ef6\uff0c\u5176\u5305\u542b crypt \u683c\u5f0f\u7684\u7528\u6237\u767b\u5f55\u540d\u548c\u5bc6\u7801\u3002\u8fd9\u4e5f\u53ef\u4ee5\u4f7f\u7528 apache \u7684 htpasswd \u5de5\u5177\u6765\u5b8c\u6210\u3002<br \/>\n<i>\u6ce8\u610f\uff1a<\/i>\u8fd9\u4e2a passwd \u6587\u4ef6\u4ec5\u4ec5\u662f\u6587\u4ef6\uff0c\u53ef\u4ee5\u5728 CVSROOT \u4e2d\u76f4\u63a5\u7f16\u8f91\u3002\u5b83\u4e0d\u80fd\u88ab\u7b7e\u51fa\u3002\u66f4\u591a\u4fe1\u606f\u8bf7\u7528 htpasswd &#8211;help<\/p>\n<pre># htpasswd -cb passwd user1 password1  <span class=\"cmt\"># -c \u521b\u5efa\u6587\u4ef6<\/span>\r\n# htpasswd -b passwd user2 password2\r\n<\/pre>\n<p>\u73b0\u5728\u6dfb\u52a0\u00a0<code>:cvs<\/code>\u00a0\u5230\u6bcf\u884c\u7684\u7ed3\u5c3e\u5904\uff0c\u7528\u6765\u544a\u8bc9 cvs \u670d\u52a1\u5668\u66f4\u6539\u7528\u6237\u5230 cvs (\u6216\u4efb\u4f55\u4f60\u6b63\u5728\u8fd0\u884c\u7684 cvs \u670d\u52a1\u5668\u4e0b)\u3002\u5b83\u770b\u8d77\u6765\u50cf\u8fd9\u6837\uff1a<\/p>\n<pre># cat passwd\r\nuser1:xsFjhU22u8Fuo:cvs\r\nuser2:vnefJOsnnvToM:cvs\r\n<\/pre>\n<h2 id=\"cvstest\">\u6d4b\u8bd5\u5b83<\/h2>\n<p>\u6d4b\u8bd5\u4f5c\u4e3a\u4e00\u822c\u7528\u6237\u767b\u5f55(\u6bd4\u5982\u6211)<\/p>\n<pre># cvs -d :pserver:colin@192.168.50.254:\/usr\/local\/cvs login\r\nLogging in to :pserver:colin@192.168.50.254:2401\/usr\/local\/cvs\r\nCVS password:\r\n\r\n<\/pre>\n<h3 id=\"cvsroot\">CVSROOT \u53d8\u91cf<\/h3>\n<p>\u8fd9\u662f\u4e2a\u73af\u5883\u53d8\u91cf\u7528\u6765\u6307\u5b9a repository \u7684\u4f4d\u7f6e\u3002\u5bf9\u4e8e\u672c\u5730\u4f7f\u7528\uff0c\u8be5\u53d8\u91cf\u53ea\u9700\u8bbe\u7f6e\u6210 repository \u7684\u76ee\u5f55\u3002\u5bf9\u4e8e\u901a\u8fc7\u7f51\u7edc\u4f7f\u7528\uff0c\u4f20\u8f93\u534f\u8bae\u5fc5\u987b\u6307\u5b9a\u3002\u4f7f\u7528\u00a0<code>setenv CVSROOT string<\/code>\u00a0(csh, tcsh shell) \u6216\u8005\u00a0<code>export CVSROOT=string<\/code>\u00a0( sh, bash shell) \u8bbe\u7f6e CVSROOT \u73af\u5883\u53d8\u91cf\u3002<\/p>\n<pre># setenv CVSROOT :pserver:&lt;username&gt;@&lt;host&gt;:\/cvsdirectory\r\n<i><span class=\"cmt\">For example:<\/span><\/i>\r\n# setenv CVSROOT \/usr\/local\/cvs                               <span class=\"cmt\"># \u4ec5\u9650\u672c\u7684\u4f7f\u7528<\/span>\r\n# setenv CVSROOT :local:\/usr\/local\/cvs                        <span class=\"cmt\"># \u540c\u4e0a<\/span>\r\n# setenv CVSROOT :ext:user@cvsserver:\/usr\/local\/cvs           <span class=\"cmt\"># \u901a\u8fc7 SSH \u76f4\u63a5\u8bbf\u95ee<\/span>\r\n# setenv CVS_RSH ssh                                          <span class=\"cmt\"># ext \u534f\u8bae\u8bbf\u95ee<\/span>\r\n# setenv CVSROOT :pserver:user@cvsserver.254:\/usr\/local\/cvs   <span class=\"cmt\"># \u901a\u8fc7 pserver \u7f51\u7edc\u8bbf\u95ee<\/span>\r\n<\/pre>\n<p>\u4e00\u65e6\u767b\u5f55\u6210\u529f\u5c31\u53ef\u5bfc\u5165\u4e00\u4e2a\u65b0\u9879\u76ee\u8fdb repository\uff1a<strong>cd \u8fdb\u5165<\/strong>\u4f60\u7684\u9879\u76ee\u6839\u76ee\u5f55<\/p>\n<pre>cvs import &lt;module name&gt; &lt;vendor tag&gt; &lt;initial tag&gt;\r\ncvs -d :pserver:colin@192.168.50.254:\/usr\/local\/cvs import MyProject MyCompany START\r\n<\/pre>\n<p>\u5728 repository \u4e2d\u6709\u4e2a\u540d\u53eb MyProject \u65b0\u9879\u76ee(\u4e4b\u540e\u7528\u6765\u7b7e\u51fa)\u3002CVS \u4f1a\u5bfc\u5165\u5f53\u524d\u76ee\u5f55\u7684\u5185\u5bb9\u8fdb\u65b0\u9879\u76ee\u3002<\/p>\n<p>\u7b7e\u51fa\uff1a<\/p>\n<pre># cvs -d :pserver:colin@192.168.50.254:\/usr\/local\/cvs checkout MyProject\r\n<i><span class=\"cmt\">\u6216\u8005<\/span><\/i>\r\n# setenv CVSROOT :pserver:colin@192.168.50.254:\/usr\/local\/cvs\r\n# cvs checkout MyProject\r\n<\/pre>\n<h2 id=\"cvsssh\">\u901a\u8fc7 SSH \u96a7\u9053\u8bbf\u95ee CVS<\/h2>\n<p>\u6211\u4eec\u9700\u8981\u4e24\u4e2a shell \u6765\u505a\u8fd9\u4e2a\u3002\u5728\u7b2c\u4e00\u4e2a shell \u4e2d\uff0c\u6211\u4eec\u8fde\u63a5\u5230 cvs \u670d\u52a1\u5668\u5e76\u5bf9 cvs \u8fde\u63a5\u8fdb\u884c\u7aef\u53e3\u8f6c\u53d1(port-forward)\u3002\u5728\u7b2c\u4e8c\u4e2a shell \u4e2d\uff0c\u6211\u4eec\u5c31\u50cf\u5728\u672c\u5730\u4e00\u6837\u4f7f\u7528 cvs\u3002<br \/>\n\u5728 shell 1:<\/p>\n<pre># ssh -L2401:localhost:2401 colin@cvs_server   <span class=\"cmt\"># \u76f4\u63a5\u8fde\u63a5\u5230 cvs \u670d\u52a1\u5668\u3002\u6216\uff1a<\/span>\r\n# ssh -L2401:cvs_server:2401 colin@gateway     <span class=\"cmt\"># \u4f7f\u7528\u4e00\u4e2a\u7f51\u5173\u95f4\u63a5\u8fde\u63a5\u5230 cvs \u670d\u52a1\u5668<\/span><\/pre>\n<p>\u5728 shell 2:<\/p>\n<pre># setenv CVSROOT :pserver:colin@localhost:\/usr\/local\/cvs\r\n# cvs login\r\nLogging in to :pserver:colin@localhost:2401\/usr\/local\/cvs\r\nCVS password:\r\n# cvs checkout MyProject\/src\r\n<\/pre>\n<h2 id=\"cvsusage\">CVS \u547d\u4ee4\u53ca\u5176\u4f7f\u7528<\/h2>\n<h3>\u5bfc\u5165<\/h3>\n<p>\u8be5 import \u547d\u4ee4\u7528\u6765\u6dfb\u52a0\u6574\u4e2a\u76ee\u5f55\uff0c\u5b83\u5fc5\u987b\u8fd0\u884c\u4e8e\u8981\u5bfc\u5165\u7684\u76ee\u5f55\u4e2d\u3002\u6bd4\u5982\uff0c\u76ee\u5f55 \/devel\/ \u5305\u542b\u7684\u6240\u6709\u6587\u4ef6\u548c\u5b50\u76ee\u5f55\u8981\u5bfc\u5165\u3002\u8be5\u76ee\u5f55\u540d\u5728 CVS \u4e2d(\u6a21\u5757)\u5c06\u4f1a\u79f0\u4e3a &#8220;myapp&#8221;\u3002<\/p>\n<pre># cvs import [options] directory-name vendor-tag release-tag\r\n# cd \/devel                          <span class=\"cmt\"># \u5fc5\u987b\u5728\u8be5\u76ee\u5f55\u4e2d\u6765\u5bfc\u5165<\/span>\r\n# cvs import myapp Company R1_0      <span class=\"cmt\"># \u4fee\u8ba2(release)\u6807\u7b7e\u53ef\u4ee5\u4e3a\u4efb\u4f55\u5355\u4e2a\u5355\u8bcd<\/span>\r\n<\/pre>\n<p>\u5728\u6dfb\u52a0\u4e86\u4e00\u4e2a\u65b0\u76ee\u5f55 &#8220;\/devel\/tools\/&#8221; \u540e\uff0c\u4e5f\u53ef\u8fd9\u4e48\u5bfc\u5165\u3002<\/p>\n<pre># cd \/devel\/tools\r\n# cvs import myapp\/tools Company R1_0\r\n<\/pre>\n<h3>\u7b7e\u51fa\u3001\u66f4\u65b0\u548c\u63d0\u4ea4<\/h3>\n<pre># cvs co myapp\/tools                 <span class=\"cmt\"># \u4ec5\u4f1a\u7b7e\u51fa tools \u76ee\u5f55<\/span>\r\n# cvs co -r R1_1 myapp               <span class=\"cmt\"># \u7b7e\u51fa\u4fee\u8ba2\u7248\u672c\u4e3a R1_1 \u7684 myapp (sticky)<\/span>\r\n# cvs -q -d update -P                <span class=\"cmt\"># \u5178\u578b\u7684 CVS \u66f4\u65b0<\/span>\r\n# cvs update -A                      <span class=\"cmt\"># \u91cd\u7f6e\u6240\u6709 sticky \u6807\u7b7e(\u6216\u65e5\u671f\u3001\u9009\u9879)<\/span>\r\n# cvs add newfile                    <span class=\"cmt\"># \u6dfb\u52a0\u4e00\u4e2a\u65b0\u6587\u4ef6<\/span>\r\n# cvs add -kb newfile                <span class=\"cmt\"># \u6dfb\u52a0\u4e00\u4e2a\u4e8c\u8fdb\u5236\u6587\u4ef6<\/span>\r\n# cvs commit file1 file2             <span class=\"cmt\"># \u4ec5\u63d0\u4ea4\u8fd9\u4e24\u4e2a\u6587\u4ef6<\/span>\r\n# cvs commit -m \"message\"            <span class=\"cmt\"># \u63d0\u4ea4\u6240\u6709\u66f4\u6539\u5e76\u4e3a\u8fd9\u4e2a\u66f4\u6539\u6dfb\u52a0\u65e5\u5fd7\u6d88\u606f<\/span>\r\n<\/pre>\n<h3>\u521b\u5efa\u4e00\u4e2a patch<\/h3>\n<p>It is best to create and apply a patch from the working development directory related to the project, or from within the source directory.<\/p>\n<pre># cd \/devel\/project\r\n# diff -Naur olddir newdir &gt; patchfile <span class=\"cmt\"># Create a patch from a directory or a file<\/span>\r\n# diff -Naur oldfile newfile &gt; patchfile\r\n<\/pre>\n<h3>\u5e94\u7528\u4e00\u4e2a patch<\/h3>\n<p>Sometimes it is necessary to strip a directory level from the patch, depending how it was created. In case of difficulties, simply look at the first lines of the patch and try -p0, -p1 or -p2.<\/p>\n<pre># cd \/devel\/project\r\n# patch --dry-run -p0 &lt; patchfile    <span class=\"cmt\"># Test the path without applying it<\/span>\r\n# patch -p0 &lt; patchfile\r\n# patch -p1 &lt; patchfile              <span class=\"cmt\"># strip off the 1st level from the path<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"svn\">\n<h1><a>SVN<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#svnsetup\">Server setup<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#svnssh\">SVN+SSH<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#svnhttp\">SVN over http<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#svnusage\">SVN usage<\/a><\/p>\n<p><a href=\"http:\/\/subversion.tigris.org\/\">Subversion (SVN)<\/a>\u00a0is a version control system designed to be the successor of CVS (Concurrent Versions System). The concept is similar to CVS, but many shortcomings where improved. See also the\u00a0<a href=\"http:\/\/svnbook.red-bean.com\/en\/1.4\/\">SVN book<\/a>.<\/p>\n<h2 id=\"svnsetup\">Server setup<\/h2>\n<p>The initiation of the repository is fairly simple (here for example\u00a0<code>\/home\/svn\/<\/code>\u00a0must exist):<\/p>\n<pre># svnadmin create --fs-type fsfs \/home\/svn\/project1<\/pre>\n<p>Now the access to the repository is made possible with:<\/p>\n<ul>\n<li><code>file:\/\/<\/code>\u00a0Direct file system access with the svn client with. This requires local permissions on the file system.<\/li>\n<li><code>svn:\/\/<\/code>\u00a0or\u00a0<code>svn+ssh:\/\/<\/code>\u00a0Remote access with the svnserve server (also over SSH). This requires local permissions on the file system.<\/li>\n<li><code>http:\/\/<\/code>\u00a0Remote access with webdav using apache. No local users are necessary for this method.<\/li>\n<\/ul>\n<p>Using the local file system, it is now possible to import and then check out an existing project. Unlike with CVS it is not necessary to cd into the project directory, simply give the full path:<\/p>\n<pre># svn import \/project1\/ file:\/\/\/home\/svn\/project1\/trunk -m 'Initial import'\r\n# svn checkout file:\/\/\/home\/svn\/project1\r\n<\/pre>\n<p>The new directory &#8220;trunk&#8221; is only a convention, this is not required.<\/p>\n<h3 id=\"svnssh\">Remote access with ssh<\/h3>\n<p>No special setup is required to access the repository via ssh, simply replace\u00a0<code>file:\/\/<\/code>\u00a0with\u00a0<code>svn+ssh\/hostname<\/code>. For example:<\/p>\n<pre># svn checkout svn+ssh:\/\/hostname\/home\/svn\/project1<\/pre>\n<p>As with the local file access, every user needs an ssh access to the server (with a local account) and also read\/write access. This method might be suitable for a small group. All users could belong to a subversion group which owns the repository, for example:<\/p>\n<pre># groupadd subversion\r\n# groupmod -A user1 subversion\r\n# chown -R root:subversion \/home\/svn\r\n# chmod -R 770 \/home\/svn\r\n<\/pre>\n<h3 id=\"svnhttp\">Remote access with http (apache)<\/h3>\n<p>Remote access over http (https) is the only good solution for a larger user group. This method uses the apache authentication, not the local accounts. This is a typical but small apache configuration:<\/p>\n<pre>LoadModule dav_module         modules\/mod_dav.so\r\nLoadModule dav_svn_module     modules\/mod_dav_svn.so\r\nLoadModule authz_svn_module   modules\/mod_authz_svn.so   <span class=\"cmt\"> # Only for access control<\/span>\r\n<\/pre>\n<pre>&lt;Location \/svn&gt;\r\n  DAV svn\r\n  <span class=\"cmt\"># any \"\/svn\/foo\" URL will map to a repository \/home\/svn\/foo<\/span>\r\n  SVNParentPath \/home\/svn\r\n  AuthType Basic\r\n  AuthName \"Subversion repository\"\r\n  AuthzSVNAccessFile \/etc\/apache2\/svn.acl\r\n  AuthUserFile \/etc\/apache2\/svn-passwd\r\n  Require valid-user\r\n&lt;\/Location&gt;\r\n<\/pre>\n<p>The apache server needs full access to the repository:<\/p>\n<pre># chown -R www:www \/home\/svn<\/pre>\n<p>Create a user with htpasswd2:<\/p>\n<pre># htpasswd -c \/etc\/svn-passwd user1 <span class=\"cmt\"> # -c creates the file<\/span><\/pre>\n<h4>Access control svn.acl example<\/h4>\n<pre><span class=\"cmt\"># Default it read access. \"* =\" would be default no access<\/span>\r\n[\/]\r\n* = r\r\n[groups]\r\nproject1-developers = joe, jack, jane\r\n<span class=\"cmt\"># Give write access to the developers<\/span>\r\n[project1:]\r\n@project1-developers = rw\r\n<\/pre>\n<h2 id=\"svnusage\">SVN commands and usage<\/h2>\n<p>See also the\u00a0<a href=\"http:\/\/www.cs.put.poznan.pl\/csobaniec\/Papers\/svn-refcard.pdf\" rel=\"nofollow\">Subversion Quick Reference Card<\/a>.\u00a0<a href=\"http:\/\/tortoisesvn.tigris.org\/\">Tortoise SVN<\/a>\u00a0is a nice Windows interface.<\/p>\n<h3 id=\"svnimport\">Import<\/h3>\n<p>A new project, that is a directory with some files, is imported into the repository with the\u00a0<code>import<\/code>\u00a0command. Import is also used to add a directory with its content to an existing project.<\/p>\n<pre># svn help import                               <span class=\"cmt\"> # Get help for any command<\/span>\r\n<span class=\"cmt\">    # Add a new directory (with content) into the src dir on project1<\/span>\r\n# svn import \/project1\/newdir http:\/\/host.url\/svn\/project1\/trunk\/src -m 'add newdir'\r\n<\/pre>\n<h3 id=\"svntypical\">Typical SVN commands<\/h3>\n<pre># svn co http:\/\/host.url\/svn\/project1\/trunk     <span class=\"cmt\"> # Checkout the most recent version<\/span>\r\n<span class=\"cmt\">    # Tags and branches are created by copying<\/span>\r\n# svn mkdir http:\/\/host.url\/svn\/project1\/tags\/  <span class=\"cmt\"> # Create the tags directory<\/span>\r\n# svn copy -m \"Tag rc1 rel.\" http:\/\/host.url\/svn\/project1\/trunk \\\r\n                             http:\/\/host.url\/svn\/project1\/tags\/1.0rc1\r\n# svn status [--verbose]                        <span class=\"cmt\"> # Check files status into working dir<\/span>\r\n# svn add src\/file.h src\/file.cpp               <span class=\"cmt\"> # Add two files<\/span>\r\n# svn commit -m 'Added new class file'          <span class=\"cmt\"> # Commit the changes with a message<\/span>\r\n# svn ls http:\/\/host.url\/svn\/project1\/tags\/     <span class=\"cmt\"> # List all tags<\/span>\r\n# svn move foo.c bar.c                          <span class=\"cmt\"> # Move (rename) files<\/span>\r\n# svn delete some_old_file                      <span class=\"cmt\"> # Delete files<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"other\">\n<h1><a>\u5b9e\u7528\u547d\u4ee4<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#less\">less<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#vi\">vi<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#mail\">mail<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#tar\">tar<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#dd\">dd<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#screen\">screen<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#find\">find<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#misccmd\">\u6df7\u6742\u7684<\/a><\/p>\n<h2 id=\"less\">less<\/h2>\n<p><code>less<\/code>\u00a0\u547d\u4ee4\u7528\u6765\u5728\u63a7\u5236\u53f0\u4e2d\u5206\u5c4f\u663e\u793a\u6587\u672c\u6587\u6863\u3002\u5b83\u5728\u8bb8\u591a\u53d1\u884c\u7248\u4e2d\u53ef\u7528\u3002<\/p>\n<pre># less unixtoolbox.xhtml<\/pre>\n<p>\u4e00\u4e9b\u91cd\u8981\u6307\u4ee4(^N \u4ee3\u8868 [control]-[N])\uff1a<\/p>\n<ul>\n<li><strong>h H<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u663e\u793a\u6307\u4ee4\u7684\u6c47\u603b\u5217\u8868<\/li>\n<li><strong>f ^F ^V SPACE<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5411\u524d\u6eda\u52a8\u4e00\u5c4f(\u6216\u8005 N \u884c)<\/li>\n<li><strong>b ^B ESC-v<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5411\u540e\u6eda\u52a8\u4e00\u5c4f(\u6216\u8005 N \u884c)<\/li>\n<li><strong>F<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5411\u524d\u6eda\u52a8\uff1b\u7c7b\u4f3c\u4e8e&#8221;tail -f&#8221;<\/li>\n<li><strong>\/pattern<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5411\u524d\u641c\u7d22\u5339\u914d\u8be5\u6a21\u5f0f\u7684\u884c<\/li>\n<li><strong>?pattern<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5411\u540e\u641c\u7d22\u5339\u914d\u8be5\u6a21\u5f0f\u7684\u884c<\/li>\n<li><strong>n<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u91cd\u590d\u4e4b\u524d\u7684\u641c\u7d22<\/li>\n<li><strong>N<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u53cd\u65b9\u5411\u91cd\u590d\u4e4b\u524d\u7684\u641c\u7d22<\/li>\n<li><strong>q<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u9000\u51fa<\/li>\n<\/ul>\n<h2 id=\"vi\">vi<\/h2>\n<p>Vi \u5728\u4efb\u4f55 Linux\/Unix \u53d1\u884c\u5b89\u88c5\u7248(gentoo \u6ca1\u6709?)\u4e0a\u90fd\u5b58\u5728\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u6709\u5fc5\u8981\u4e86\u89e3\u4e00\u4e9b\u57fa\u672c\u7684\u547d\u4ee4\u3002Vi \u6709\u4e24\u4e2a\u6a21\u5f0f\uff1a\u547d\u4ee4\u6a21\u5f0f\u548c\u63d2\u5165\u6a21\u5f0f\u3002\u4f7f\u7528\u00a0<strong>[ESC]<\/strong>\u00a0\u952e\u53ef\u8fdb\u5165\u547d\u4ee4\u6a21\u5f0f\uff0c\u4f7f\u7528\u00a0<strong>i<\/strong>\u00a0\u952e\u53ef\u8fdb\u5165\u63d2\u5165\u6a21\u5f0f\u3002\u5982\u679c\u4f60\u8ff7\u5931\u4e86\uff0c\u53ef\u5728\u547d\u4ee4\u6a21\u5f0f\u4e0b\u952e\u5165\u00a0<code>: help<\/code>\u3002<br \/>\n\u7f16\u8f91\u5668\u00a0<code>nano<\/code>\u00a0\u548c\u00a0<code>pico<\/code>\u00a0\u901a\u5e38\u4e5f\u90fd\u53ef\u7528\uff0c\u800c\u4e14\u66f4\u5bb9\u6613(IMHO)\u4f7f\u7528\u3002<\/p>\n<h3>Quit<\/h3>\n<ul>\n<li><strong>:w<\/strong>\u00a0newfilename \u00a0 \u00a0 \u00a0 \u4fdd\u5b58\u6587\u4ef6\u4e3a newfilename<\/li>\n<li><strong>:wq or \ud83d\ude21<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u4fdd\u5b58\u5e76\u9000\u51fa<\/li>\n<li><strong>:q!<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u9000\u51fa\u4f46\u4e0d\u4fdd\u5b58<\/li>\n<\/ul>\n<h3>\u79fb\u52a8\u548c\u67e5\u627e<\/h3>\n<ul>\n<li><strong>\/string<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5411\u524d\u67e5\u627e string<\/li>\n<li><strong>?string<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5411\u540e\u67e5\u627e string<\/li>\n<li><strong>n<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u540c\u65b9\u5411\u91cd\u590d\u4e0a\u4e00\u6b21\u641c\u7d22\u547d\u4ee4<\/li>\n<li><strong>N<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u53cd\u65b9\u5411\u91cd\u590d\u4e0a\u4e00\u6b21\u641c\u7d22\u547d\u4ee4<\/li>\n<li><strong>{<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5149\u6807\u79fb\u81f3\u6bb5\u843d\u7ed3\u5c3e<\/li>\n<li><strong>}<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5149\u6807\u79fb\u81f3\u6bb5\u843d\u5f00\u5934<\/li>\n<li><strong>1G<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5149\u6807\u79fb\u81f3\u6587\u4ef6\u7684\u7b2c\u4e00\u884c\u9996<\/li>\n<li><strong>nG<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5149\u6807\u79fb\u81f3\u6587\u4ef6\u7684\u7b2c n \u884c\u9996<\/li>\n<li><strong>G<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5149\u6807\u79fb\u81f3\u6587\u4ef6\u7684\u6700\u540e\u4e00\u884c\u9996<\/li>\n<li><strong>:%s\/OLD\/NEW\/g<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u66ff\u6362\u6240\u6709\u67e5\u627e\u5230\u7684 OLD \u4e3a NEW<\/li>\n<\/ul>\n<h3>\u5220\u9664\u6587\u672c<\/h3>\n<ul>\n<li><strong>dd<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5220\u9664\u5f53\u524d\u884c<\/li>\n<li><strong>D<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5220\u9664\u5149\u6807\u5230\u5f53\u524d\u884c\u672b\u5c3e\u7684\u5b57\u7b26<\/li>\n<li><strong>dw<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5220\u9664\u5355\u8bcd<\/li>\n<li><strong>x<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u5220\u9664\u5b57\u7b26<\/li>\n<li><strong>u<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u56de\u590d\u4e0a\u4e00\u6b21\u64cd\u4f5c<\/li>\n<li><strong>U<\/strong>\u00a0\u00a0 \u00a0 \u00a0 \u56de\u590d\u6240\u6709\u6b64\u884c\u7684\u66f4\u6539<\/li>\n<\/ul>\n<h2 id=\"mail\">mail<\/h2>\n<p><code>mail<\/code>\u00a0\u547d\u4ee4\u662f\u4e00\u4e2a\u8bfb\u53d6\u548c\u53d1\u9001\u90ae\u4ef6\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u5979\u901a\u5e38\u5df2\u5b89\u88c5\u3002\u8981\u53d1\u9001\u4e00\u5c01\u90ae\u4ef6\uff0c\u53ef\u4ee5\u7b80\u5355\u7684\u8f93\u5165 &#8220;mail user@domain&#8221;\u3002\u5176\u7b2c\u4e00\u884c\u4e3a\u4e3b\u9898\uff0c\u7136\u540e\u662f\u90ae\u4ef6\u5185\u5bb9\u3002\u5728\u4e00\u4e2a\u65b0\u884c\u4e2d\u4f7f\u7528\u5355\u4e2a\u70b9(.)\u6765\u7ed3\u675f\u5e76\u53d1\u9001\u90ae\u4ef6\u3002\u4f8b\u5b50\uff1a<\/p>\n<pre># mail c@cb.vu\r\nSubject: Your text is full of typos\r\n\"For a moment, nothing happened. Then, after a second or so, \r\nnothing continued to happen.\"\r\n.\r\nEOT\r\n#\r\n<\/pre>\n<p>\u8fd9\u540c\u6837\u53ef\u7528\u4e8e\u7ba1\u9053\uff1a<\/p>\n<pre># echo \"This is the mail body\" | mail c@cb.vu<\/pre>\n<p>\u4e5f\u662f\u6d4b\u8bd5\u90ae\u4ef6\u670d\u52a1\u5668\u7684\u7b80\u5355\u65b9\u6cd5\u3002<\/p>\n<h2 id=\"tar\">tar<\/h2>\n<p>\u547d\u4ee4\u00a0<code>tar<\/code>\u00a0(\u78c1\u5e26\u5b58\u6863) \u53ef\u4ee5\u4e3a\u6587\u4ef6\u548c\u76ee\u5f55\u521b\u5efa\u6863\u6848\u3002\u5f52\u6863\u6587\u4ef6 .tar \u662f\u672a\u538b\u7f29\u7684\uff0c\u4e00\u4e2a\u538b\u7f29\u8fc7\u7684\u5f52\u6863\u6587\u4ef6\u7684\u540e\u7f00\u662f .tgz \u6216 .tar.gz (zip) \u6216\u8005 .tbz (bzip2)\u3002\u4e0d\u8981\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\u5efa\u7acb\u4e00\u4e2a\u5f52\u6863\u6587\u4ef6\uff0c\u4f60\u53ef\u80fd\u8981\u89e3\u5f00\u8fd9\u4e2a\u5f52\u6863\u6587\u4ef6\u5230\u67d0\u4e2a\u5730\u65b9\u3002\u4e00\u4e9b\u5e38\u7528\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n<h3>\u521b\u5efa<\/h3>\n<pre># cd \/\r\n# tar -cf home.tar home\/        <span class=\"cmt\"># \u5f52\u6863\u6574\u4e2a \/home \u76ee\u5f55(c \u4e3a\u521b\u5efa)<\/span>\r\n# tar -czf home.tgz home\/       <span class=\"cmt\"># \u7b49\u540c\u4e8e zip \u538b\u7f29<\/span>\r\n# tar -cjf home.tbz home\/       <span class=\"cmt\"># \u7b49\u540c\u4e8e bzip2 \u538b\u7f29<\/span>\r\n<\/pre>\n<p>\u4ece\u4e00\u4e2a\u76ee\u5f55\u6811\u4e2d\u53ea\u5305\u542b\u4e00\u4e2a(\u62162\u4e2a)\u76ee\u5f55\uff0c\u5e76\u4fdd\u6301\u76f8\u5bf9\u76ee\u5f55\u7ed3\u6784\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\/usr\/local\/etc \u548c \/usr\/local\/www\uff0c\u5b83\u4eec\u5728\u5f52\u6863\u6587\u4ef6\u4e2d\u7684\u7b2c\u4e00\u5c42\u76ee\u5f55\u662f local\/\u3002<\/p>\n<pre># tar -C \/usr -czf local.tgz local\/etc local\/www\r\n# tar -C \/usr -xzf local.tgz    <span class=\"cmt\"># \u91ca\u653e local \u76ee\u5f55\u5230 \/usr<\/span>\r\n# cd \/usr; tar -xzf local.tgz   <span class=\"cmt\"># \u540c\u4e0a\u9762\u4e00\u6837<\/span>\r\n<\/pre>\n<h3>\u91ca\u653e(Extract)<\/h3>\n<pre># tar -tzf home.tgz             <span class=\"cmt\"># \u5217\u51fa\u5f52\u6863\u6587\u4ef6\u4e2d\u7684\u6240\u6709\u6587\u4ef6\uff0c\u5e76\u4e0d\u91ca\u653e<\/span>\r\n# tar -xf home.tar              <span class=\"cmt\"># \u91ca\u653e\u5f52\u6863\u6587\u4ef6(x \u4e3a\u91ca\u653e)<\/span>\r\n# tar -xzf home.tgz             <span class=\"cmt\"># \u7b49\u540c\u4e8e zip \u538b\u7f29<\/span>\r\n# tar -xjf home.tgz             <span class=\"cmt\"># \u7b49\u540c\u4e8e bzip2 \u538b\u7f29<\/span>\r\n# tar -xjf home.tgz home\/colin\/file.txt    <span class=\"cmt\"># \u91ca\u653e\u5355\u4e2a\u6587\u4ef6<\/span>\r\n<\/pre>\n<h3>\u66f4\u9ad8\u7ea7\u7684<\/h3>\n<pre># tar c dir\/ | gzip | ssh user@remote 'dd of=dir.tgz' <span class=\"cmt\"># \u5f52\u6863\u538b\u7f29 dir\/ \u76ee\u5f55\u5e76\u5b58\u50a8\u5230\u8fdc\u7a0b\u4e3b\u673a\u4e0a<\/span>\r\n# tar cvf - `find . -print` &gt; backup.tar              <span class=\"cmt\"># \u5f52\u6863\u5f53\u524d\u76ee\u5f55<\/span>\r\n# tar -cf - -C \/etc . | tar xpf - -C \/backup\/etc      <span class=\"cmt\"># \u62f7\u8d1d\u76ee\u5f55<\/span>\r\n# tar -cf - -C \/etc . | ssh user@remote tar xpf - -C \/backup\/etc      <span class=\"cmt\"># \u8fdc\u7a0b\u62f7\u8d1d<\/span>\r\n# tar -czf home.tgz --exclude '*.o' --exclude 'tmp\/' home\/\r\n<\/pre>\n<h2 id=\"dd\">dd<\/h2>\n<p>\u7a0b\u5e8f\u00a0<code>dd<\/code>\u00a0(\u78c1\u76d8\u5907\u4efd(disk dump) \u6216 destroy disk\uff0c\u4e5f\u53ef\u770b\u00a0<a href=\"http:\/\/roesler-ac.de\/wolfram\/acro\/credits.htm\">dd \u7684\u542b\u4e49<\/a>) \u7528\u6765\u62f7\u8d1d\u5206\u533a\u3001\u78c1\u76d8\u6216\u8005\u5176\u5b83\u62f7\u8d1d\u3002\u901a\u5e38\u8fd9\u4e48\u7528\uff1a<\/p>\n<pre># dd if=&lt;source&gt; of=&lt;target&gt; bs=&lt;byte size&gt; conv=&lt;conversion&gt;<\/pre>\n<p>\u91cd\u8981\u7684 conv \u9009\u9879\uff1a<\/p>\n<ul>\n<li><code>notrunc<\/code>\u00a0\u00a0 \u00a0 \u00a0 \u4e0d\u622a\u77ed\u8f93\u51fa\u6587\u4ef6<\/li>\n<li><code>noerror<\/code>\u00a0\u00a0 \u00a0 \u00a0 \u51fa\u9519\u65f6\u4e0d\u505c\u6b62\u5904\u7406(e.g. \u574f\u6247\u533a)<\/li>\n<li><code>sync<\/code>\u00a0\u00a0 \u00a0 \u00a0 \u628a\u6bcf\u4e2a\u8f93\u5165\u5757\u586b\u5145\u5230ibs\u4e2a\u5b57\u8282\uff0c\u4e0d\u8db3\u90e8\u5206\u7528\u7a7a(NUL)\u5b57\u7b26\u8865\u9f50<\/li>\n<\/ul>\n<p>\u9ed8\u8ba4\u5b57\u8282\u5927\u5c0f\u4e3a 512 (\u4e00\u4e2a\u6247\u533a)\u3002MBR \u5904\u4e8e\u78c1\u76d8\u7684\u7b2c\u4e00\u4e2a\u6247\u533a\uff0c\u4e4b\u540e\u7684 63 \u4e2a\u6247\u533a\u662f\u7a7a\u7684\u3002\u8f83\u5927\u7684\u5b57\u8282\u5927\u5c0f\u53ef\u4ee5\u52a0\u5feb\u62f7\u8d1d\u901f\u5ea6\u4f46\u4e5f\u9700\u8981\u66f4\u591a\u7684\u5185\u5b58\u3002<\/p>\n<h3>\u5907\u4efd\u548c\u6062\u590d<\/h3>\n<pre># dd if=\/dev\/hda of=\/dev\/hdc bs=16065b                <span class=\"cmt\"># \u62f7\u8d1d\u78c1\u76d8\u5230\u78c1\u76d8(\u76f8\u540c\u5927\u5c0f)<\/span>\r\n# dd if=\/dev\/sda7 of \/home\/root.img bs=4096 conv=notrunc,noerror <span class=\"cmt\"># \u5907\u4efd \/<\/span>\r\n# dd if \/home\/root.img of=\/dev\/sda7 bs=4096 conv=notrunc,noerror <span class=\"cmt\"># \u6062\u590d \/<\/span>\r\n# dd bs=1M if=\/dev\/ad4s3e | gzip -c &gt; ad4s3e.gz                  <span class=\"cmt\"># \u538b\u7f29\u5907\u4efd<\/span>\r\n# gunzip -dc ad4s3e.gz | dd of=\/dev\/ad0s3e bs=1M                 <span class=\"cmt\"># \u89e3\u538b\u6062\u590d<\/span>\r\n# dd bs=1M if=\/dev\/ad4s3e | gzip | ssh eedcoba@fry 'dd of=ad4s3e.gz' <span class=\"cmt\"># \u4e5f\u53ef\u4e3a\u8fdc\u7a0b\u7684<\/span>\r\n# gunzip -dc ad4s3e.gz | ssh eedcoba@host 'dd of=\/dev\/ad0s3e bs=1M'\r\n# dd if=\/dev\/ad0 of=\/dev\/ad2 skip=1 seek=1 bs=4k conv=noerror    <span class=\"cmt\"># \u5ffd\u7565 MBR<\/span>\r\n    <span class=\"cmt\"># \u5982\u679c\u76ee\u6807(ad2)\u6bd4\u8f83\u5c0f\uff0c\u8fd9\u662f\u5fc5\u987b\u7684\u3002<\/span>\r\n<\/pre>\n<h3>\u6062\u590d<\/h3>\n<p>\u8be5\u00a0<code>dd<\/code>\u00a0\u547d\u4ee4\u4f1a\u8bfb\u53d6\u5206\u533a\u7684<i>\u6bcf\u4e00\u4e2a\u533a\u5757<\/i>\uff0c\u5373\u6240\u6709\u533a\u5757\u3002\u5bf9\u4e8e\u6709\u95ee\u9898\u7684\u533a\u5757\uff0c\u6700\u597d\u4f7f\u7528\u00a0<code>conv=sync,noerror<\/code>\u00a0\u9009\u9879\uff0cdd \u5c06\u4f1a\u8df3\u8fc7\u574f\u7684\u533a\u5757\u5e76\u5165 0\u3002\u56e0\u6b64\uff0c\u8fd9\u5c31\u662f\u8bbe\u7f6e\u5757\u5927\u5c0f\u7b49\u4e8e\u6216\u5c0f\u4e8e\u78c1\u76d8\u5757\u5927\u5c0f\u7684\u91cd\u8981\u6027\u30021k \u5927\u5c0f\u4f3c\u4e4e\u5b89\u5168\uff0c\u7528\u00a0<code>bs=1k<\/code>\u00a0\u6765\u8bbe\u7f6e\u5b83\u3002\u5047\u5982\u4e00\u4e2a\u78c1\u76d8\u6709\u574f\u6247\u533a\u5e76\u4e14\u6709\u4e2a\u5206\u533a\u7684\u6570\u636e\u8981\u6062\u590d\uff0c\u90a3\u4e48\u7528 dd \u5de5\u5177\u521b\u5efa\u4e00\u4e2a\u955c\u50cf\u6587\u4ef6\uff0c\u6302\u8f7d\u8fd9\u4e2a\u955c\u50cf\u6587\u4ef6\uff0c\u7136\u540e\u62f7\u8d1d\u5185\u5bb9\u5230\u65b0\u7684\u78c1\u76d8\u4e2d\u3002\u5982\u679c\u7528\u4e86\u00a0<code>noerror<\/code>\u00a0\u9009\u9879\uff0cdd \u4f1a\u8df3\u8fc7\u574f\u6247\u533a\u5e76\u5199\u5165 0\uff0c\u4e5f\u5373\u574f\u6247\u533a\u4e2d\u7684\u5185\u5bb9\u4f1a\u4e22\u5931\u3002<\/p>\n<pre># dd if=\/dev\/hda of=\/dev\/null bs=1m                   <span class=\"cmt\"># \u68c0\u67e5\u574f\u6247\u533a<\/span>\r\n# dd bs=1k if=\/dev\/hda1 conv=sync,noerror,notrunc | gzip | ssh \\ <span class=\"cmt\"># \u53d1\u9001\u5230\u8fdc\u7a0b<\/span>\r\nroot@fry 'dd of=hda1.gz bs=1k'\r\n# dd bs=1k if=\/dev\/hda1 conv=sync,noerror,notrunc of=hda1.img    <span class=\"cmt\"># \u5b58\u50a8\u4e3a\u4e00\u4e2a\u6620\u50cf\u6587\u4ef6<\/span>\r\n# mount -o loop \/hda1.img \/mnt                        <span class=\"cmt\"># <a class=\"xref\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#createimg\">\u6302\u8f7d\u8fd9\u4e2a\u6620\u50cf\u6587\u4ef6<\/a><\/span>\r\n# rsync -ax \/mnt\/ \/newdisk\/                           <span class=\"cmt\"># \u62f7\u8d1d\u5230\u4e00\u4e2a\u65b0\u78c1\u76d8<\/span>\r\n# dd if=\/dev\/hda of=\/dev\/hda                          <span class=\"cmt\"># \u5237\u65b0\u78c1\u72b6\u6001<\/span>\r\n  <span class=\"cmt\"># \u4e0a\u9762\u7684\u547d\u4ee4\u5bf9\u4e8e\u5237\u65b0\u78c1\u76d8(refresh disk)\u5f88\u6709\u7528\u3002\u8fd9\u7edd\u5bf9\u5b89\u5168\uff0c\u4f46\u5fc5\u987b\u5148\u5378\u8f7d\u78c1\u76d8\u3002<\/span>\r\n<\/pre>\n<h3>\u5220\u9664<\/h3>\n<pre># dd if=\/dev\/zero of=\/dev\/hdc                         <span class=\"cmt\"># \u5220\u9664\u5168\u90e8\u6570\u636e<\/span>\r\n# dd if=\/dev\/urandom of=\/dev\/hdc                      <span class=\"cmt\"># \u66f4\u597d\u7684\u5220\u9664\u5168\u90e8\u6570\u636e<\/span>\r\n# kill -USR1 PID                                      <span class=\"cmt\"># \u67e5\u770b dd \u8fdb\u5ea6(\u4ec5Linux!)<\/span>\r\n<\/pre>\n<h3>MBR \u6280\u5de7<\/h3>\n<p>MBR \u5305\u542b\u4e86\u5f15\u5bfc\u7a0b\u5e8f\u548c\u5206\u533a\u8868\uff0c\u5b83\u7684\u5927\u5c0f\u4e3a 512 \u5b57\u8282\u3002\u524d 446 \u5b57\u8282\u4e3a\u5f15\u5bfc\u7a0b\u5e8f\uff0c446 \u5230 512 \u5b57\u8282\u4e3a\u5206\u533a\u8868\u3002<\/p>\n<pre># dd if=\/dev\/sda of=\/mbr_sda.bak bs=512 count=1                  <span class=\"cmt\"># \u5b8c\u5168\u5907\u4efd MBR<\/span>\r\n# dd if=\/dev\/zero of=\/dev\/sda bs=512 count=1                     <span class=\"cmt\"># \u5220\u9664 MBR \u548c\u5206\u533a\u8868<\/span>\r\n# dd if=\/mbr_sda.bak of=\/dev\/sda bs=512 count=1                  <span class=\"cmt\"># \u5b8c\u5168\u6062\u590dMBR<\/span>\r\n# dd if=\/mbr_sda.bak of=\/dev\/sda bs=446 count=1                  <span class=\"cmt\"># \u4ec5\u56de\u590d\u5f15\u5bfc\u7a0b\u5e8f<\/span>\r\n# dd if=\/mbr_sda.bak of=\/dev\/sda bs=1 count=64 skip=446 seek=446 <span class=\"cmt\"># \u6062\u590d\u5206\u533a\u8868<\/span>\r\n<\/pre>\n<h2 id=\"screen\">screen<\/h2>\n<p>Screen \u63d0\u4f9b\u4e86\u4e24\u4e2a\u4e3b\u8981\u529f\u80fd\uff1a<\/p>\n<ul>\n<li>\u5728\u4e00\u4e2a\u7ec8\u7aef\u5185\u8fd0\u884c\u591a\u4e2a\u7ec8\u7aef\u4f1a\u8bdd(terminal session)\u3002<\/li>\n<li>\u4e00\u4e2a\u5df2\u542f\u52a8\u7684\u7a0b\u5e8f\u4e0e\u8fd0\u884c\u5b83\u7684\u771f\u5b9e\u7ec8\u7aef\u5206\u79bb\u7684\uff0c\u56e0\u6b64\u53ef\u8fd0\u884c\u4e8e\u540e\u53f0\u3002\u771f\u5b9e\u7684\u7ec8\u7aef\u53ef\u4ee5\u88ab\u5173\u95ed\uff0c\u8fd8\u53ef\u4ee5\u5728\u7a0d\u540e\u518d\u91cd\u65b0\u63a5\u4e0a(reattached)\u3002<\/li>\n<\/ul>\n<h3>\u7b80\u77ed\u5b9e\u4f8b<\/h3>\n<p>\u5f00\u542f screen\uff1a<\/p>\n<pre># screen<\/pre>\n<p>\u5728 screen \u4f1a\u8bdd\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u5f00\u542f\u4e00\u4e2a\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u7a0b\u5e8f(\u5982 top)\u3002Detach \u8fd9\u4e2a\u7ec8\u7aef\uff0c\u4e4b\u540e\u53ef\u4ee5\u4ece\u5176\u4ed6\u673a\u5668 reattach \u8fd9\u4e2a\u76f8\u540c\u7684\u7ec8\u7aef(\u6bd4\u5982\u901a\u8fc7 ssh)\u3002<\/p>\n<pre># top<\/pre>\n<p>\u73b0\u5728\u7528\u00a0<strong>Ctrl-a Ctrl-d<\/strong>\u00a0\u6765 detach\u3002Reattach \u7ec8\u7aef\uff1a<\/p>\n<pre># screen -r<\/pre>\n<p>\u6216\u66f4\u597d\u7684\uff1a<\/p>\n<pre># screen -R -D<\/pre>\n<p>\u73b0\u5728 attach \u5230\u8fd9\u91cc\u3002\u5177\u4f53\u610f\u601d\u662f\uff1a\u5148\u8bd5\u56fe\u6062\u590d\u79bb\u7ebf\u7684 screen \u4f1a\u8bdd\u3002\u82e5\u627e\u4e0d\u5230\u79bb\u7ebf\u7684 screen \u4f1a\u8bdd\uff0c\u5373\u5efa\u7acb\u65b0\u7684 screen \u4f1a\u8bdd\u7ed9\u7528\u6237\u3002<\/p>\n<h3>Screen \u547d\u4ee4 (\u5728 screen \u4e2d)<\/h3>\n<p>\u6240\u6709\u547d\u4ee4\u90fd\u4ee5\u00a0<strong>Ctrl-a<\/strong>\u00a0\u5f00\u59cb\u3002<\/p>\n<ul>\n<li><strong>Ctrl-a ?<\/strong>\u00a0\u5404\u529f\u80fd\u7684\u5e2e\u52a9\u6458\u8981<\/li>\n<li><strong>Ctrl-a c<\/strong>\u00a0\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 window (\u7ec8\u7aef)<\/li>\n<li><strong>Ctrl-a Ctrl-n \u548c Ctrl-a Ctrl-p<\/strong>\u00a0\u5207\u6362\u5230\u4e0b\u4e00\u4e2a\u6216\u524d\u4e00\u4e2a window<\/li>\n<li><strong>Ctrl-a Ctrl-N<\/strong>\u00a0N \u4e3a 0 \u5230 9 \u7684\u6570\u5b57\uff0c\u7528\u6765\u5207\u6362\u5230\u76f8\u5bf9\u5e94\u7684 window<\/li>\n<li><strong>Ctrl-a &#8220;<\/strong>\u00a0\u83b7\u53d6\u6240\u6709\u6b63\u5728\u8fd0\u884c\u7684 window \u7684\u53ef\u5bfc\u822a\u7684\u5217\u8868<\/li>\n<li><strong>Ctrl-a a<\/strong>\u00a0\u6e05\u695a\u9519\u8bef\u7684 Ctrl-a<\/li>\n<li><strong>Ctrl-a Ctrl-d<\/strong>\u00a0\u65ad\u5f00\u6240\u6709\u4f1a\u8bdd\uff0c\u4f1a\u8bdd\u4e2d\u6240\u6709\u4efb\u52a1\u8fd0\u884c\u4e8e\u540e\u53f0<\/li>\n<li><strong>Ctrl-a x<\/strong>\u00a0\u7528\u5bc6\u7801\u9501\u67f1 screen \u7ec8\u7aef<\/li>\n<\/ul>\n<p>\u5f53\u7a0b\u5e8f\u5185\u90e8\u8fd0\u884c\u7ec8\u7aef\u5173\u95ed\u5e76\u4e14\u4f60\u767b\u51fa\u8be5\u7ec8\u7aef\u65f6\uff0c\u8be5 screen \u4f1a\u8bdd\u5c31\u4f1a\u88ab\u7ec8\u6b62\u3002<\/p>\n<h2 id=\"find\">Find<\/h2>\n<p>\u4e00\u4e9b\u91cd\u8981\u9009\u9879\uff1a<\/p>\n<ul>\n<li><code>-x<\/code>\u00a0(BSD)\u00a0<code>-xdev<\/code>\u00a0(Linux) \u00a0 \u00a0 \u00a0 \u7559\u4e8e\u540c\u4e00\u6587\u4ef6\u7cfb\u7edf (fstab \u4e2d\u7684 dev)<\/li>\n<li><code>-exec cmd {} \\;<\/code>\u00a0\u00a0 \u00a0 \u00a0 \u6267\u884c\u547d\u4ee4\u5e76\u7528\u5168\u8def\u5f84\u66ff\u6362 {}<\/li>\n<li><code>-iname<\/code>\u00a0\u00a0 \u00a0 \u00a0 \u540c -name \u4e00\u6837\uff0c\u4f46\u4e0d\u533a\u5206\u5927\u5c0f\u5199<\/li>\n<li><code>-ls<\/code>\u00a0\u00a0 \u00a0 \u00a0 \u663e\u793a\u5173\u4e8e\u6587\u4ef6\u7684\u4fe1\u606f(\u540c ls -la)<\/li>\n<li><code>-size n<\/code>\u00a0\u00a0 \u00a0 \u00a0 n \u4e3a +-n (k M G T P)<\/li>\n<li><code>-cmin n<\/code>\u00a0\u00a0 \u00a0 \u00a0 \u67e5\u627e\u7cfb\u7edf\u4e2d\u6700\u540e n \u5206\u949f\u6539\u53d8\u6587\u4ef6\u72b6\u6001\u7684\u6587\u4ef6<\/li>\n<\/ul>\n<pre># find . -type f ! -perm -444        <span class=\"cmt\"># \u5bfb\u627e\u6240\u6709\u65e0\u6cd5\u8bfb\u53d6\u7684\u6587\u4ef6<\/span>\r\n# find . -type d ! -perm -111        <span class=\"cmt\"># \u5bfb\u627e\u6240\u6709\u65e0\u6cd5\u8bbf\u95ee\u7684\u76ee\u5f55<\/span>\r\n# find \/home\/user\/ -cmin 10 -print   <span class=\"cmt\"># \u5bfb\u627e\u6700\u540e 10 \u5206\u949f\u521b\u5efa\u6216\u4fee\u6539\u7684\u6587\u4ef6<\/span>\r\n# find . -name '*.[ch]' | xargs grep -E 'expr' <span class=\"cmt\"># \u5728\u5f53\u524d\u76ee\u5f55\u53ca\u5b50\u76ee\u5f55\u641c\u7d22 'expr' \u8868\u8fbe\u5f0f<\/span>\r\n# find \/ -name \"*.core\" | xargs rm   <span class=\"cmt\"># \u5bfb\u627e core \u5783\u573e\u5e76\u5220\u9664\u5b83\u4eec(\u4e5f\u53ef\u8bd5\u8bd5 core.*)<\/span>\r\n# find \/ -name \"*.core\" -print -exec rm {} \\;  <span class=\"cmt\"># \u53e6\u4e00\u79cd\u8bed\u6cd5<\/span>\r\n      <span class=\"cmt\"># \u5bfb\u627e\u56fe\u50cf\u6587\u4ef6\u5e76\u521b\u5efa\u4e00\u4e2a\u5f52\u6863\u6587\u4ef6\uff0ciname \u4e3a\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u3002-r \u4e3a\u9644\u52a0<\/span>\r\n# find . \\( -iname \"*.png\" -o -iname \"*.jpg\" \\) -print -exec tar -rf images.tar {} \\;\r\n# find . -type f -name \"*.txt\" ! -name README.txt -print  <span class=\"cmt\"># \u9664 README.txt \u7684\u6587\u4ef6<\/span>\r\n# find \/var\/ -size +10M -exec ls -lh {} \\;     <span class=\"cmt\"># \u67e5\u627e &gt; 10 MB \u7684\u6587\u4ef6<\/span>\r\n# find \/var\/ -size +10M -ls           <span class=\"cmt\"># \u8fd9\u4e2a\u66f4\u7b80\u5355<\/span>\r\n# find . -size +10M -size -50M -print\r\n# find \/usr\/ports\/ -name work -type d -print -exec rm -rf {} \\;  <span class=\"cmt\"># \u6e05\u7406 port<\/span>\r\n      <span class=\"cmt\"># \u4ee5 SUID \u67e5\u627e\u6587\u4ef6\uff1b\u8fd9\u4e9b\u6587\u4ef6\u5f88\u8106\u5f31\uff0c\u5fc5\u987b\u4fdd\u6301\u5b89\u5168\u3002<\/span>\r\n# find \/ -type f -user root -perm -4000 -exec ls -l {} \\; \r\n<\/pre>\n<p>\u5c0f\u5fc3 xarg \u6216 exec\uff0c\u56e0\u4e3a\u5f53\u6587\u4ef6\u6216\u76ee\u5f55\u4e2d\u5305\u542b\u7a7a\u683c\u65f6\u53ef\u80fd\u4f1a\u8fd4\u56de\u9519\u8bef\u7684\u7ed3\u679c\u3002\u5728\u6709\u7591\u60d1\u65f6\u7528 &#8220;-print0 | xargs -0&#8221; \u4ee3\u66ff &#8220;| xargs&#8221;\u3002\u9009\u9879 -print0 \u5fc5\u987b\u5728 find \u547d\u4ee4\u7684\u6700\u540e\u3002\u770b\u8fd9\u4e2a\u4e0d\u9519\u7684\u00a0<a href=\"http:\/\/www.hccfl.edu\/pollock\/Unix\/FindCmd.htm\">find \u8ff7\u4f60\u6559\u7a0b<\/a>.<\/p>\n<pre># find . -type f | xargs ls -l       <span class=\"cmt\"># \u4e0d\u80fd\u5de5\u4f5c\u4e8e\u6709\u7a7a\u683c\u7684\u540d\u5b57<\/span>\r\n# find . -type f -print0 | xargs -0 ls -l  <span class=\"cmt\"># \u53ef\u5de5\u4f5c\u4e8e\u6709\u7a7a\u683c\u7684\u540d\u5b57<\/span>\r\n# find . -type f -exec ls -l '{}' \\; <span class=\"cmt\"># \u6216\u4f7f\u7528\u7528\u4e8e -exec \u7684\u5f15\u7528 '{}'<\/span>\r\n<\/pre>\n<h2 id=\"misccmd\">\u6df7\u6742\u7684<\/h2>\n<pre># which command                      <span class=\"cmt\"># \u663e\u793a\u547d\u4ee4\u7684\u5168\u8def\u5f84\u540d<\/span>\r\n# time command                       <span class=\"cmt\"># \u663e\u793a\u4e00\u4e2a\u547d\u4ee4\u6267\u884c\u5b8c\u6210\u6240\u7528\u7684\u65f6\u95f4<\/span>\r\n# time cat                           <span class=\"cmt\"># \u4f7f\u7528 time \u4f5c\u4e3a\u79d2\u8868\uff0c\u7528 Ctrl-c \u6765\u505c\u6b62<\/span>\r\n# set | grep $USER                   <span class=\"cmt\"># \u5217\u663e\u5f53\u524d\u73af\u5883\u53d8\u91cf<\/span>\r\n# cal -3                             <span class=\"cmt\"># \u663e\u793a\u4e09\u4e2a\u6708\u65e5\u5386<\/span>\r\n# date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\r\n# date 10022155                      <span class=\"cmt\"># \u8bbe\u7f6e\u65e5\u671f\u548c\u65f6\u95f4<\/span>\r\n# whatis grep                        <span class=\"cmt\"># \u663e\u793a\u547d\u4ee4\u7684\u7b80\u77ed\u4fe1\u606f<\/span>\r\n# whereis java                       <span class=\"cmt\"># \u67e5\u8be2\u547d\u4ee4\u7684\u7684\u8def\u5f84\u548c\u6807\u51c6\u76ee\u5f55<\/span>\r\n# setenv varname value               <span class=\"cmt\"># \u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\uff0c\u8bbe\u7f6e\u53d8\u91cf varname \u7684\u503c\u4e3a value (csh\/tcsh)<\/span>\r\n# export varname=\"value\"             <span class=\"cmt\"># \u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\uff0c\u8bbe\u7f6e\u53d8\u91cf varname \u7684\u503c\u4e3a value  (sh\/ksh\/bash)<\/span>\r\n# pwd                                <span class=\"cmt\"># \u663e\u793a\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55<\/span>\r\n# mkdir -p \/path\/to\/dir              <span class=\"cmt\"># \u5982\u679c\u5b58\u5728\u4e0d\u663e\u793a\u9519\u8bef\uff0c\u5efa\u7acb\u6240\u9700\u7684\u4e0a\u7ea7\u76ee\u5f55<\/span>\r\n# mkdir -p project\/{bin,src,obj,doc\/{html,man,pdf},debug\/some\/more\/dirs}\r\n# rmdir \/path\/to\/dir                 <span class=\"cmt\"># \u79fb\u9664\u76ee\u5f55<\/span>\r\n# rm -rf \/path\/to\/dir                <span class=\"cmt\"># \u79fb\u9664\u76ee\u5f55\u548c\u5176\u5185\u5bb9(\u5f3a\u5236)<\/span>\r\n# cp -la \/dir1 \/dir2                 <span class=\"cmt\"># \u5b58\u6863\u3001\u786c\u8fde\u63a5\u76ee\u5f55\u6240\u6709\u6587\u4ef6\uff0c\u7528\u6765\u66ff\u4ee3\u62f7\u8d1d<\/span>\r\n# cp -lpR \/dir1 \/dir2                <span class=\"cmt\"># \u540c\u4e0a (FreeBSD)<\/span>\r\n# cp unixtoolbox.xhtml{,.bak}        <span class=\"cmt\"># \u62f7\u8d1d\u6587\u4ef6\u6210\u65b0\u6269\u5c55\u540d\u7684\u5feb\u901f\u65b9\u6cd5<\/span>\r\n# mv \/dir1 \/dir2                     <span class=\"cmt\"># \u4fee\u6539\u76ee\u5f55\u540d<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"software\">\n<h1><a>\u8f6f\u4ef6\u5b89\u88c5<\/a><\/h1>\n<h2 id=\"softwarelist\">\u5217\u51fa\u5df2\u5b89\u88c5\u8fc7\u7684\u8f6f\u4ef6\u5305<\/h2>\n<pre># rpm -qa                            <span class=\"cmt\"># \u5217\u51fa\u5df2\u5b89\u88c5\u8fc7\u7684\u8f6f\u4ef6\u5305(RH, SuSE, \u57fa\u4e8e RPM \u7684)<\/span>\r\n# dpkg -l                            <span class=\"cmt\"># Debian, Ubuntu<\/span>\r\n# pkg_info                           <span class=\"cmt\"># \u5217\u51fa\u6240\u6709\u5df2\u5b89\u88c5\u8fc7\u7684\u8f6f\u4ef6\u5305(FreeBSD)<\/span>\r\n# pkg_info -W smbd                   <span class=\"cmt\"># \u67e5\u770b smbd \u5b89\u88c5\u4e86\u90a3\u4e9b\u8f6f\u4ef6\u5305(FreeBSD)<\/span>\r\n# pkginfo                            <span class=\"cmt\"># Solaris<\/span>\r\n<\/pre>\n<h2 id=\"softwareadd\">\u6dfb\u52a0\/\u5220\u9664\u8f6f\u4ef6<\/h2>\n<p>\u524d\u7aef\u754c\u9762\uff1aSuSE \u4e3a yast2\/yast\uff0cRed Hat \u4e3a redhat-config-packages\u3002<\/p>\n<pre># rpm -i pkgname.rpm                 <span class=\"cmt\"># \u5b89\u88c5\u8f6f\u4ef6\u5305(RH, SuSE, \u57fa\u4e8e RPM \u7684)<\/span>\r\n# rpm -e pkgname                     <span class=\"cmt\"># \u5220\u9664\u8f6f\u4ef6\u5305<\/span>\r\n<\/pre>\n<h3>Debian<\/h3>\n<pre># apt-get update                     <span class=\"cmt\"># \u66f4\u65b0\u6e90\u5217\u8868<\/span>\r\n# apt-get install emacs              <span class=\"cmt\"># \u5b89\u88c5 emacs \u8f6f\u4ef6\u5305<\/span>\r\n# dpkg --remove emacs                <span class=\"cmt\"># \u5220\u9664 emacs \u8f6f\u4ef6\u5305<\/span>\r\n# dpkg -S file                       <span class=\"cmt\"># \u67e5\u627e\u62e5\u6709\u8be5 file \u7684\u8f6f\u4ef6\u5305<\/span>\r\n<\/pre>\n<h3>Gentoo<\/h3>\n<p>Gentoo \u4f7f\u7528 emerge \u4f5c\u4e3a &#8220;Portage&#8221; \u8f6f\u4ef6\u5305\u7ba1\u7406\u7cfb\u7edf\u7684\u6838\u5fc3\u3002<\/p>\n<pre># emerge --sync                      <span class=\"cmt\"># \u540c\u6b65\u66f4\u65b0\u672c\u5730 protage \u6811<\/span>\r\n# emerge -u packagename              <span class=\"cmt\"># \u5b89\u88c5\u6216\u66f4\u65b0\u4e00\u4e2a\u8f6f\u4ef6\u5305<\/span>\r\n# emerge -C packagename              <span class=\"cmt\"># \u5220\u9664\u8f6f\u4ef6\u5305<\/span>\r\n# revdep-rebuild                     <span class=\"cmt\"># \u4fee\u590d\u4f9d\u8d56\u5173\u7cfb\u7684\u7f3a\u5931<\/span>\r\n<\/pre>\n<h3>Solaris<\/h3>\n<p>&lt;cdrom&gt; \u8def\u5f84\u901a\u5e38\u4e3a\u00a0<code>\/cdrom\/cdrom0<\/code>.<\/p>\n<pre># pkgadd -d &lt;cdrom&gt;\/Solaris_9\/Product SUNWgtar\r\n# pkgadd -d SUNWgtar                 <span class=\"cmt\"># \u6dfb\u52a0\u4e0b\u8f7d\u7684\u8f6f\u4ef6\u5305(\u5148\u8981 bunzip2)<\/span>\r\n# pkgrm SUNWgtar                     <span class=\"cmt\"># \u5220\u9664\u8f6f\u4ef6\u5305<\/span>\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<pre># pkg_add -r rsync                   <span class=\"cmt\"># \u83b7\u53d6\u5e76\u5b89\u88c5 rsync<\/span>\r\n# pkg_delete \/var\/db\/pkg\/rsync-xx    <span class=\"cmt\"># \u5220\u9664 rsync \u8f6f\u4ef6\u5305<\/span>\r\n<\/pre>\n<p>\u53ef\u4f7f\u7528\u00a0<code>PACKAGESITE<\/code>\u00a0\u73af\u5883\u53d8\u91cf\u6765\u8bbe\u7f6e\u54ea\u91cc\u53ef\u4ee5\u83b7\u53d6\u8f6f\u4ef6\u5305\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<pre># export PACKAGESITE=ftp:\/\/ftp.freebsd.org\/pub\/FreeBSD\/ports\/i386\/packages\/Latest\/ \r\n# or ftp:\/\/ftp.freebsd.org\/pub\/FreeBSD\/ports\/i386\/packages-6-stable\/Latest\/\r\n<\/pre>\n<h3>FreeBSD ports<\/h3>\n<p>Port \u6811\u00a0<code>\/usr\/ports\/<\/code>\u00a0\u662f\u4e00\u4e2a\u51c6\u5907\u7f16\u8bd1\u548c\u5b89\u88c5\u7684\u8f6f\u4ef6\u96c6\u3002\u53ef\u7528\u00a0<code>portsnap<\/code>\u00a0\u5de5\u5177\u6765\u8ddf\u65b0 port\u3002<\/p>\n<pre># portsnap fetch extract             <span class=\"cmt\"># \u5f53\u7b2c\u4e00\u6b21\u8fd0\u884c\u8fd9\u4e2a\u547d\u4ee4\uff0c\u4f1a\u521b\u5efa port \u6811<\/span>\r\n# portsnap fetch update              <span class=\"cmt\"># \u8ddf\u65b0 port \u6811<\/span>\r\n# cd \/usr\/ports\/net\/rsync\/           <span class=\"cmt\"># \u9009\u62e9\u8f6f\u4ef6\u5b89\u88c5\u76ee\u5f55<\/span>\r\n# make install distclean             <span class=\"cmt\"># \u5b89\u88c5\u5e76\u6e05\u7406(\u4e5f\u53ef\u770b man ports)<\/span>\r\n# make package                       <span class=\"cmt\"># Make \u4e00\u4e2a\u4e8c\u8fdb\u5236\u8f6f\u4ef6\u5305<\/span>\r\n<\/pre>\n<h2 id=\"librarypath\">\u5e93\u8def\u5f84<\/h2>\n<p>\u7531\u4e8e\u590d\u6742\u7684\u4f9d\u8d56\u5173\u7cfb\u548c\u8fd0\u884c\u65f6\u94fe\u63a5\uff0c\u7a0b\u5e8f\u96be\u4e8e\u5206\u53d1\u6216\u62f7\u8d1d\u5230\u5176\u4ed6\u7cfb\u7edf\u3002\u4e0d\u8fc7\u5bf9\u4e8e\u8f83\u5c11\u4f9d\u8d56\u5173\u7cfb\u7684\u5c0f\u7a0b\u5e8f\uff0c\u7f3a\u5931\u7684\u5e93\u53ef\u88ab\u62f7\u8d1d\u8fc7\u53bb\u3002\u8fd0\u884c\u65f6\u5e93(\u5373\u7f3a\u5931\u7684\u5e93)\u53ef\u7528\u00a0<code>ldd<\/code>\u00a0\u548c\u00a0<code>ldconfig<\/code>\u00a0\u6765\u68c0\u67e5\u548c\u7ba1\u7406\u3002<\/p>\n<pre># ldd \/usr\/bin\/rsync                 <span class=\"cmt\"># \u5217\u51fa\u6240\u6709\u6240\u9700\u7684\u8fd0\u884c\u65f6\u5e93<\/span>\r\n# ldconfig -n \/path\/to\/libs\/         <span class=\"cmt\"># \u6dfb\u52a0\u4e00\u4e2a\u8def\u5f84\u5230\u5171\u4eab\u5e93\u76ee\u5f55Add a path to the shared libraries directories<\/span>\r\n# ldconfig -m \/path\/to\/libs\/         <span class=\"cmt\"># FreeBSD<\/span>\r\n# LD_LIBRARY_PATH                    <span class=\"cmt\"># \u8bbe\u7f6e\u8fde\u63a5\u5e93\u8def\u5f84\u7684\u73af\u5883\u53d8\u91cf<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"convert\">\n<h1><a>\u5a92\u4f53\u8f6c\u6362<\/a><\/h1>\n<p>\u6709\u65f6\u5019\u9700\u8981\u8f6c\u6362\u4e00\u4e2a\u89c6\u9891\u3001\u97f3\u9891\u6587\u4ef6\u6216\u8005\u6587\u6863\u6210\u5176\u4ed6\u683c\u5f0f\u3002<\/p>\n<h2 id=\"encoding\">\u6587\u672c\u7f16\u7801<\/h2>\n<p>\u6587\u672c\u7f16\u7801\u53ef\u4ee5\u5f97\u5230\u5b8c\u5168\u9519\u8bef\u7684\uff0c\u7279\u522b\u662f\u5f53\u8bed\u8a00\u9700\u8981\u67d0\u4e9b\u7279\u6b8a\u5b57\u7b26\u50cf \u00e0\u00e4\u00e7\u3002\u547d\u4ee4\u00a0<code>iconv<\/code>\u00a0\u53ef\u4ee5\u4ece\u4e00\u4e2a\u7f16\u7801\u8f6c\u6362\u6210\u53e6\u4e00\u4e2a\u7f16\u7801\u3002<\/p>\n<pre># iconv -f &lt;from_encoding&gt; -t &lt;to_encoding&gt; &lt;input_file&gt;\r\n# iconv -f ISO8859-1 -t UTF-8 -o file.input &gt; file_utf8\r\n# iconv -l                           <span class=\"cmt\"># \u5217\u663e\u7cfb\u7edf\u6240\u652f\u6301\u7684\u5b57\u7b26\u7f16\u7801<\/span>\r\n<\/pre>\n<p>\u82e5\u6587\u6863\u663e\u793a\u826f\u597d\uff0c\u901a\u5e38\u90fd\u53ef\u4e0d\u4f7f\u7528 -f \u9009\u9879\uff0ciconv \u4f1a\u4f7f\u7528\u672c\u5730\u5b57\u7b26\u96c6(char-set)\u3002<\/p>\n<h2 id=\"newlines\">Unix &#8211; DOS \u65b0\u884c<\/h2>\n<p>\u5728 Unix Shell \u4e2d\u8f6c\u6362 DOS (CR\/LF) \u5230 Unix (LF) \u65b0\u884c\u683c\u5f0f\u3002\u4e5f\u53ef\u4f7f\u7528\u00a0<code>dos2unix<\/code>\u00a0\u548c\u00a0<code>unix2dos<\/code>\u00a0\u5de5\u5177\uff0c\u5982\u679c\u4f60\u6709\u5b83\u4eec\u7684\u8bdd\u3002<\/p>\n<pre># sed 's\/.$\/\/' dosfile.txt &gt; unixfile.txt\r\n<\/pre>\n<p>\u5728 Windows \u73af\u5883\u4e2d\u8f6c\u6362 Unix \u5230 Dos \u65b0\u884c\u683c\u5f0f\u3002\u9700\u8981\u5728 mingw \u6216 cygwin \u4e2d\u4f7f\u7528 sed\u3002<\/p>\n<pre># sed -n p unixfile.txt &gt; dosfile.txt\r\n<\/pre>\n<h2>PDF \u8f6c\u6362\u6210 Jpeg \u548c \u8fde\u63a5\u4e00\u4e32 PDF \u6587\u4ef6<\/h2>\n<p>\u7528\u00a0<code>gs<\/code>\u00a0(GhostScript) \u5de5\u5177\u8f6c\u6362 PDF \u6587\u6863\u7684\u6bcf\u4e00\u9875\u6210 jpeg (\u6216 png)\u56fe\u50cf\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528\u66f4\u77ed\u7684\u00a0<code>convert<\/code>\u00a0(\u6765\u81ea ImageMagick \u6216 GraphicsMagick \u5de5\u5177) \u547d\u4ee4\u3002<\/p>\n<pre># gs -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \\\r\n -dMaxStripSize=8192 -sOutputFile=unixtoolbox_%d.jpg unixtoolbox.pdf\r\n# convert unixtoolbox.pdf unixtoolbox-%03d.png\r\n# convert *.jpeg images.pdf          <span class=\"cmt\"># \u628a\u6240\u6709\u56fe\u7247\u8f6c\u6362\u6210\u4e00\u4efd\u7b80\u5355\u7684 PDF \u6587\u6863<\/span>\r\n<\/pre>\n<p>Ghostscript \u540c\u6837\u53ef\u8fde\u63a5\u591a\u4e2a pdf \u6587\u4ef6\u6210\u4e00\u4efd PDF \u6587\u6863\u3002\u8fd9\u4ec5\u53ef\u5de5\u4f5c\u4e8e\u8fd9\u4e9b PDF \u6587\u4ef6\u90fd &#8220;\u5448\u73b0\u4e00\u81f4(well behaved)&#8221; \u7684\u60c5\u51b5\u4e0b\u3002<\/p>\n<pre># gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=all.pdf \\\r\nfile1.pdf file2.pdf ...              <span class=\"cmt\"># \u5728 Windows \u4e0a\u4f7f\u7528 '#' \u4ee3\u66ff '='<\/span>\r\n<\/pre>\n<h2>\u89c6\u9891\u8f6c\u6362<\/h2>\n<p>\u4f7f\u7528 mpeg4 \u7f16\u7801\u538b\u7f29\u4f73\u80fd\u6570\u7801\u76f8\u673a\u89c6\u9891\u5e76\u4fee\u590d\u65e0\u7528\u97f3\u8d28\u3002<\/p>\n<pre># mencoder -o videoout.avi -oac mp3lame -ovc lavc -srate 11025 \\\r\n-channels 1 -af-adv force=1 -lameopts preset=medium -lavcopts \\\r\nvcodec=msmpeg4v2:vbitrate=600 -mc 0 vidoein.AVI\r\n<\/pre>\n<p>\u5bf9\u4e8e\u58f0\u97f3\u7684\u5904\u7406\u53ef\u770b\u00a0<a href=\"http:\/\/sox.sourceforge.net\/\">sox<\/a>\u3002<\/p>\n<h2>\u62f7\u8d1d\u97f3\u9891\u5149\u76d8<\/h2>\n<p>\u7a0b\u5e8f\u00a0<a href=\"http:\/\/xiph.org\/paranoia\/\" rel=\"nofollow\"><code>cdparanoia<\/code><\/a>\u00a0\u53ef\u4ee5\u4fdd\u5b58\u97f3\u8f68(FreeBSD port \u5728 audio\/cdparanoia\/)\uff0c<code>oggenc<\/code>\u00a0\u53ef\u7f16\u7801 Ogg Vorbis \u683c\u5f0f\uff0c<code>lame<\/code>\u00a0\u53ef\u8f6c\u6362\u6210 mp3\u3002<\/p>\n<pre># cdparanoia -B                      <span class=\"cmt\"># \u62f7\u8d1d\u97f3\u8f68\u6210 wav \u6587\u4ef6\u5230\u5f53\u524d\u76ee\u5f55\u5217\u8868(dir)<\/span>\r\n# lame -b 256 in.wav out.mp3         <span class=\"cmt\"># \u7f16\u7801\u6210 256 kb\/s \u7684 mp3<\/span>\r\n# for i in *.wav; do lame -b 256 $i `basename $i .wav`.mp3; done\r\n# oggenc in.wav -b 256 out.ogg       <span class=\"cmt\"># \u7f16\u7801\u6210 256 kb\/s \u7684 Ogg Vorbis<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"printing\">\n<h1><a>\u6253\u5370<\/a><\/h1>\n<h2>\u6253\u5370\u547d\u4ee4 lpr<\/h2>\n<pre># lpr unixtoolbox.ps                 <span class=\"cmt\"># \u7528\u9ed8\u8ba4\u6253\u5370\u673a\u6253\u5370<\/span>\r\n# export PRINTER=hp4600              <span class=\"cmt\"># \u66f4\u6539\u9ed8\u8ba4\u6253\u5370\u673a<\/span>\r\n# lpr -Php4500 #2 unixtoolbox.ps     <span class=\"cmt\"># \u6307\u5b9a\u6253\u5370\u673a hp4500 \u5e76\u6253\u5370 2 \u4efd<\/span>\r\n# lpr -o Duplex=DuplexNoTumble ...   <span class=\"cmt\"># \u542f\u7528\u53cc\u9762\u6253\u5370<\/span>\r\n# lpr -o PageSize=A4,Duplex=DuplexNoTumble ...\r\n# lpq                                <span class=\"cmt\"># \u67e5\u770b\u9ed8\u8ba4\u6253\u5370\u673a\u7684\u961f\u5217<\/span>\r\n# lpq -l -Php4500                    <span class=\"cmt\"># \u8be6\u7ec6\u663e\u793a\u6253\u5370\u673a\u961f\u5217\u4fe1\u606f<\/span>\r\n# lprm -                             <span class=\"cmt\"># \u5220\u9664\u6240\u6709\u6253\u5370\u673a\u5185\u7684\u7528\u6237\u6253\u5370\u4f5c\u4e1a<\/span>\r\n# lprm -Php4500 3186                 <span class=\"cmt\"># \u5220\u9664\u4f5c\u4e1a 3186\u3002\u53ef\u4f7f\u7528 lpq \u67e5\u770b\u4f5c\u4e1a\u53f7<\/span>\r\n# lpc status                         <span class=\"cmt\"># \u5217\u5370\u6240\u6709\u53ef\u7528\u6253\u5370\u673a<\/span>\r\n# lpc status hp4500                  <span class=\"cmt\"># \u5982\u679c\u6253\u5370\u673a\u5728\u7ebf\uff0c\u67e5\u770b\u5176\u72b6\u6001\u548c\u5217\u961f\u957f\u5ea6<\/span>\r\n<\/pre>\n<p>\u5f53\u8981\u6253\u5370 PDF \u6587\u4ef6\u65f6\uff0c\u4e00\u4e9b\u6253\u5370\u8bbe\u5907\u4e0d\u5177\u5907\u5904\u7406 postscript \u7684\u80fd\u529b\u3002\u53ef\u4ee5\u8fd9\u6837\u89e3\u51b3\uff1a<\/p>\n<pre># gs -dSAFER -dNOPAUSE -sDEVICE=deskjet -sOutputFile=\\|lpr file.pdf<\/pre>\n<\/div>\n<div id=\"databases\">\n<h1><a>\u6570\u636e\u5e93<\/a><\/h1>\n<h2 id=\"pgsql\">PostgreSQL<\/h2>\n<h3>\u66f4\u6539 root \u7528\u6237\u6216\u5176\u5b83\u7528\u6237\u7684\u5bc6\u7801<\/h3>\n<pre># psql -d template1 -U pgsql\r\n&gt; alter user pgsql with password 'pgsql_password';  <span class=\"cmt\"># pgsql \u4e3a\u9700\u8981\u66f4\u6539\u5bc6\u7801\u7684\u7528\u6237\u540d<\/span>\r\n<\/pre>\n<h3>\u521b\u5efa\u7528\u6237\u548c\u6570\u636e\u5e93<\/h3>\n<p>\u547d\u4ee4\u00a0<code>createuser<\/code>,\u00a0<code>dropuser<\/code>,\u00a0<code>createdb<\/code>\u00a0\u548c\u00a0<code>dropdb<\/code>\u00a0\u7b49\u540c\u4e8e SQL \u547d\u4ee4\u7684\u5feb\u6377\u65b9\u5f0f\u3002\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u65b0\u7528\u6237\u53eb bob \u548c\u4e00\u4e2a\u6570\u636e\u5e93\u53eb bobdb\uff1b\u4f7f\u7528\u6570\u636e\u5e93\u7684\u8d85\u7ea7\u7528\u6237 pgsql \u6765\u521b\u5efa\uff1a<\/p>\n<pre># createuser -U pgsql -P bob         <span class=\"cmt\"># -P \u4f1a\u8bf7\u6c42\u4e00\u4e2a\u79d8\u5bc6<\/span>\r\n# createdb -U pgsql -O bob bobdb     <span class=\"cmt\"># \u65b0\u6570\u636e\u5e93 bobdn \u7684\u6240\u6709\u8005\u662f bob<\/span>\r\n# dropdb bobdb                       <span class=\"cmt\"># \u5220\u9664\u6570\u636e\u5e93 bobdb<\/span>\r\n# dropuser bob                       <span class=\"cmt\"># \u5220\u9664\u7528\u6237 bob<\/span>\r\n<\/pre>\n<p>\u4e00\u822c\u6570\u636e\u5e93\u8ba4\u8bc1\u673a\u5236\u914d\u7f6e\u5728 pg_hba.conf \u6587\u4ef6\u4e2d\u3002<\/p>\n<h3>\u5141\u8bb8\u8fdc\u7a0b\u8bbf\u95ee<\/h3>\n<p>\u6587\u4ef6\u00a0<code>$PGSQL_DATA_D\/postgresql.conf<\/code>\u00a0\u53ef\u6307\u5b9a\u7ed1\u5b9a\u5730\u5740\u3002\u5bf9\u4e8e Postgres 8.x \u901a\u5e38\u4e3a\u00a0<code>listen_addresses = '*'<\/code>\u3002<br \/>\n\u6587\u4ef6\u00a0<code>$PGSQL_DATA_D\/pg_hba.conf<\/code>\u00a0\u5b9a\u4e49\u4e86\u8bbf\u95ee\u63a7\u5236\u3002\u4e3e\u4f8b\uff1a<\/p>\n<pre># TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK          METHOD\r\nhost    bobdb       bob        212.117.81.42     255.255.255.255   password\r\nhost    all         all        0.0.0.0\/0                           password\r\n<\/pre>\n<h3>\u5907\u4efd\u548c\u6062\u590d<\/h3>\n<p>\u4f7f\u7528 pgsql \u6216 postgres \u7528\u6237\u6765\u5b8c\u6210\u5907\u4efd\u4e0e\u6062\u590d\u3002\u4e0b\u9762\u662f\u5907\u4efd\u548c\u6062\u590d\u5355\u4e2a\u6570\u636e\u5e93\uff1a<\/p>\n<pre># pg_dump --clean dbname &gt; dbname_sql.dump\r\n# psql dbname &lt; dbname_sql.dump\r\n<\/pre>\n<p>\u5907\u4efd\u548c\u6062\u590d\u6240\u6709\u6570\u636e\u5e93(\u5305\u62ec\u7528\u6237)\uff1a<\/p>\n<pre># pg_dumpall --clean &gt; full.dump\r\n# psql -f full.dump postgres\r\n<\/pre>\n<p>\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u4f60\u53ef\u4ee5\u58f0\u660e\u4efb\u610f\u73b0\u6709\u7684\u6570\u636e\u5e93\u8fdb\u884c\u8fde\u63a5\uff0c\u4f46\u662f\u5982\u679c\u4f60\u662f\u5411\u4e00\u4e2a\u7a7a\u7684\u6570\u636e\u5e93\u96c6\u7fa4\u88c5\u8f7d\uff0c\u90a3\u4e48 postgres \u5e94\u8be5\u662f\u6bd4\u8f83\u597d\u7684\u9009\u62e9\u3002<\/p>\n<h2 id=\"mysql\">MySQL<\/h2>\n<h3>\u66f4\u6539 mysql root \u7528\u6237\u6216\u5176\u5b83\u7528\u6237\u7684\u5bc6\u7801<\/h3>\n<h4>\u65b9\u6cd5 1<\/h4>\n<pre># \/etc\/init.d\/mysql stop\r\n<i><span class=\"cmt\">or<\/span><\/i>\r\n# killall mysqld\r\n# mysqld --skip-grant-tables\r\n# mysqladmin -u root password 'newpasswd'\r\n# \/etc\/init.d\/mysql start\r\n<\/pre>\n<h4>\u65b9\u6cd5 2<\/h4>\n<pre># mysql -u root mysql\r\n<span class=\"cmt\">mysql&gt;<\/span> UPDATE USER SET PASSWORD=PASSWORD(\"newpassword\") where user='root';\r\n<span class=\"cmt\">mysql&gt;<\/span> FLUSH PRIVILEGES;                           <span class=\"cmt\"># \u4f7f\u7528\u7528\u6237\u540d\u66ff\u4ee3\"root\"<\/span>\r\n<span class=\"cmt\">mysql&gt;<\/span> quit\r\n<\/pre>\n<h3>\u521b\u5efa\u7528\u6237\u548c\u6570\u636e\u5e93<\/h3>\n<pre># mysql -u root mysql\r\n<span class=\"cmt\">mysql&gt;<\/span> CREATE DATABASE bobdb;\r\n<span class=\"cmt\">mysql&gt;<\/span> GRANT ALL ON *.* TO 'bob'@'%' IDENTIFIED BY 'pwd'; \r\n                           <span class=\"cmt\"># \u4f7f\u7528 localhost \u66ff\u4ee3 % \u6765\u9650\u5236\u7f51\u7edc\u8bbf\u95ee<\/span>\r\n<span class=\"cmt\">mysql&gt;<\/span> DROP DATABASE bobdb;                        <span class=\"cmt\"># \u5220\u9664\u6570\u636e\u5e93 bobdb<\/span>\r\n<span class=\"cmt\">mysql&gt;<\/span> DROP USER bob;                              <span class=\"cmt\"># \u5220\u9664\u7528\u6237 bob<\/span>\r\n<span class=\"cmt\">mysql&gt;<\/span> DELETE FROM mysql.user WHERE user='bob and host='hostname'; \r\n                           <span class=\"cmt\"># \u5220\u9664 mysql \u6570\u636e\u5e93 user \u8868\u4e2d user=bob,host=hostname \u7684\u8bb0\u5f55<\/span>\r\n<span class=\"cmt\">mysql&gt;<\/span> FLUSH PRIVILEGES;\r\n<\/pre>\n<h3>\u5141\u8bb8\u8fdc\u7a0b\u8bbf\u95ee<\/h3>\n<p>\u8fdc\u7a0b\u8bbf\u95ee\u901a\u5e38\u5141\u8bb8\u5355\u4e2a\u6570\u636e\u5e93\uff0c\u800c\u4e0d\u662f\u6240\u6709\u7684\u6570\u636e\u5e93\u3002\u6587\u4ef6\u00a0<code>\/etc\/my.cnf<\/code>\u00a0\u5305\u542b\u7ea6\u5b9a\u7684 IP \u5730\u5740\u3002\u901a\u5e38\u4e3a\u00a0<code>bind-address =<\/code>\u00a0\u7ed1\u5b9a\u5730\u5740\u3002<\/p>\n<pre># mysql -u root mysql\r\n<span class=\"cmt\">mysql&gt;<\/span> GRANT ALL ON bobdb.* TO bob@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'PASSWORD';\r\n<span class=\"cmt\">mysql&gt;<\/span> REVOKE GRANT OPTION ON foo.* FROM bar@'xxx.xxx.xxx.xxx';\r\n<span class=\"cmt\">mysql&gt;<\/span> FLUSH PRIVILEGES;                  <span class=\"cmt\"># \u4f7f\u7528 'hostname' \u4e5f\u53ef\u4e3a '%' \u6765\u5b8c\u5168\u8bbf\u95ee<\/span>\r\n<\/pre>\n<h3>\u5907\u4efd\u548c\u6062\u590d<\/h3>\n<p>\u5907\u4efd\u548c\u6062\u590d\u5355\u4e2a\u6570\u636e\u5e93\uff1a<\/p>\n<pre># mysqldump -u root -psecret --add-drop-database dbname &gt; dbname_sql.dump\r\n# mysql -u root -psecret -D dbname &lt; dbname_sql.dump\r\n<\/pre>\n<p>\u5907\u4efd\u548c\u6062\u590d\u6240\u6709\u7684\u6570\u636e\u5e93\uff1a<\/p>\n<pre># mysqldump -u root -psecret --add-drop-database --all-databases &gt; full.dump\r\n# mysql -u root -psecret &lt; full.dump\r\n<\/pre>\n<p>\u8fd9\u91cc mysql root \u7684\u5bc6\u7801\u4e3a &#8220;secret&#8221;\uff0c-p \u9009\u9879\u540e\u9762\u6ca1\u6709\u7a7a\u683c\u3002\u5f53\u5355\u72ec\u4f7f\u7528 -p \u9009\u9879(\u4e0d\u8ddf\u5bc6\u7801)\uff0c\u547d\u4ee4\u884c\u63d0\u793a\u7b26\u540e\u4f1a\u8981\u6c42\u8f93\u5165\u5bc6\u7801\u3002<\/p>\n<h2 id=\"sqlite\">SQLite<\/h2>\n<p><a href=\"http:\/\/www.sqlite.org\/\">SQLite<\/a>\u00a0\u662f\u4e00\u4e2a\u5c0f\u800c\u5f3a\u5927\u7684\u3001\u72ec\u7acb\u7684(self-contained)\u3001\u65e0\u670d\u52a1\u5668\u7684(serverless)\u3001\u96f6\u914d\u7f6e\u7684(zero-configuration) SQL \u6570\u636e\u5e93\u3002<\/p>\n<h3>\u5907\u4efd\u548c\u6062\u590d<\/h3>\n<p>\u5b9e\u7528\u5907\u4efd\u548c\u6062\u590d SQLite \u6570\u636e\u5e93\u547d\u4ee4\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u4f60\u53ef\u4ee5\u7f16\u8f91\u5907\u4efd\u6587\u4ef6\u6765\u4fee\u6539\u5b57\u6bb5\u7684\u5c5e\u6027\u548c\u7c7b\u578b\uff0c\u7136\u540e\u518d\u6062\u590d\u8fd9\u4e2a\u6570\u636e\u5e93\u3002\u8fd9\u6bd4\u4f7f\u7528 SQL \u547d\u4ee4\u6765\u5f97\u5bb9\u6613\u3002\u5bf9\u4e8e 3.x \u6570\u636e\u5e93\u53ef\u4f7f\u7528\u00a0<code>sqlite3<\/code>\u3002<\/p>\n<pre># sqlite database.db .dump &gt; dump.sql              <span class=\"cmt\"># \u5907\u4efd<\/span>\r\n# sqlite database.db &lt; dump.sql                    <span class=\"cmt\"># \u6062\u590d<\/span>\r\n<\/pre>\n<h3>\u8f6c\u6362 2.x \u5230 3.x \u6570\u636e\u5e93<\/h3>\n<pre>sqlite database_v2.db .dump | sqlite3 database_v3.db<\/pre>\n<\/div>\n<div id=\"quota\">\n<h1><a>\u78c1\u76d8\u9650\u989d<\/a><\/h1>\n<p>\u78c1\u76d8\u9650\u989d\u7528\u6765\u9650\u5236\u78c1\u76d8\u7a7a\u95f4\u5927\u5c0f\u548c\/\u6216\u7528\u6237(\u6216\u7528\u6237\u7ec4)\u53ef\u7528\u7684\u6587\u4ef6\u6570\u3002The quotas are allocated on a per-file system basis and are enforced by the kernel.<\/p>\n<h2>Linux \u8bbe\u7f6e<\/h2>\n<p>Quota \u5de5\u5177\u5305\u901a\u5e38\u5df2\u5b89\u88c5\uff0c\u5176\u5305\u542b\u4e00\u4e9b\u547d\u4ee4\u884c\u5de5\u5177\u3002<br \/>\n\u5728 fstab \u4e2d\u6fc0\u6d3b\u7528\u6237\u914d\u989d\u5e76\u91cd\u65b0\u6302\u8f7d\u5206\u533a\u3002\u5982\u679c\u5206\u533a\u6b63\u5728\u4f7f\u7528\uff0c\u5173\u95ed\u6240\u6709\u4f7f\u7528\u7684\u6587\u4ef6\uff0c\u6216\u8005\u91cd\u542f\u7cfb\u7edf\u3002\u6dfb\u52a0\u00a0<code>usrquota<\/code>\u00a0\u5230 fstab \u7684\u6302\u8f7d\u7c7b\u578b\u4e2d\uff0c\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<pre>\/dev\/sda2     \/home    reiserfs     rw,acl,user_xattr,usrquota 1 1\r\n# mount -o remount \/home\r\n# mount                              <span class=\"cmt\"># \u68c0\u67e5 usrquota \u5df2\u7ecf\u6fc0\u6d3b\uff0c\u5426\u5219\u91cd\u542f<\/span>\r\n<\/pre>\n<p>\u7528\u00a0<code>quotacheck<\/code>\u00a0\u521d\u59cb\u5316 quota.user \u6587\u4ef6\u3002<\/p>\n<pre># quotacheck -vum \/home\r\n# chmod 644 \/home\/aquota.user        <span class=\"cmt\"># \u8ba9\u7528\u6237\u68c0\u67e5\u81ea\u5df1\u7684\u914d\u989d<\/span>\r\n<\/pre>\n<p>\u7528\u811a\u672c(e.g. SuSE \u7684 \/etc\/init.d\/quotad)\u6216\u00a0<code>quotaon<\/code>\u00a0\u6765\u542f\u7528\u9650\u989d\uff1a<\/p>\n<pre>quotaon -vu \/home<\/pre>\n<p>\u68c0\u67e5\u914d\u989d\u542f\u7528\u60c5\u51b5\uff1a<\/p>\n<pre>quota -v<\/pre>\n<h2>FreeBSD \u8bbe\u7f6e<\/h2>\n<p>Quota \u5de5\u5177\u662f FreeBSD \u57fa\u672c\u7cfb\u7edf\u7684\u4e00\u90e8\u5206\uff0c\u7136\u800c\u5185\u6838\u9700\u8981 quota \u9009\u9879\u3002\u5982\u679c\u4e0d\u5b58\u5728\uff0c\u65b0\u589e\u5b83\u5e76<a href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#compilekernel\">\u91cd\u65b0\u7f16\u8bd1<\/a>\u5185\u6838\u3002<\/p>\n<pre>options QUOTA<\/pre>\n<p>\u4e0e Linux \u4e00\u6837\uff0c\u6dfb\u52a0\u9650\u989d\u5230 fstab \u9009\u9879(\u662f userquota\uff0c\u800c\u4e0d\u662f usrquota)\u4e2d\uff1a<\/p>\n<pre>\/dev\/ad0s1d    \/home    ufs     rw,noatime,userquota    2  2\r\n# mount \/home                        <span class=\"cmt\"># \u91cd\u65b0\u6302\u8f7d\u5206\u533a<\/span>\r\n<\/pre>\n<p>\u5728 \/etc\/rc.conf \u4e2d\u542f\u7528\u78c1\u76d8\u9650\u989d\u5e76\u5f00\u542f quota \u670d\u52a1\u3002<\/p>\n<pre># grep quotas \/etc\/rc.conf\r\nenable_quotas=\"YES\"                  <span class=\"cmt\"># \u5728\u542f\u52a8\u65f6\u6253\u5f00\u9650\u989d(\u6216\u8005 \"NO\")<\/span>\r\ncheck_quotas=\"YES\"                   <span class=\"cmt\"># \u5728\u542f\u52a8\u65f6\u68c0\u67e5\u9650\u989d(\u6216\u8005 \"NO\")<\/span>\r\n# \/etc\/rc.d\/quota start\r\n<\/pre>\n<h2 id=\"assignquota\">\u5206\u914d\u9650\u989d<\/h2>\n<p>\u78c1\u76d8\u9650\u989d\u9ed8\u8ba4\u5e76\u4e0d\u9650\u5236(\u8bbe\u7f6e\u4e3a0)\u3002\u7528\u00a0<code>edquota<\/code>\u00a0\u6765\u5bf9\u5355\u7528\u6237\u8fdb\u884c\u9650\u5236\u3002\u4e00\u4e2a quota \u4e5f\u53ef\u7ed9\u8bb8\u591a\u7528\u6237\u590d\u7528\u3002\u867d\u7136 quota \u5b9e\u73b0\u4e4b\u95f4\u7684\u6587\u4ef6\u7ed3\u6784\u4e0d\u540c\uff0c\u4f46\u5176\u539f\u7406\u662f\u76f8\u540c\u7684\uff1a\u9650\u5236\u8282\u70b9(inodes)\u6570\u91cf\u4ee5\u53ca\u4f7f\u7528\u8005\u53ef\u4ee5\u53d6\u7528\u7684\u78c1\u76d8\u533a\u5757\u6570\u91cf\u3002<i>Only change the values of soft and hard<\/i>. \u5982\u679c\u672a\u6307\u5b9a\uff0c\u9ed8\u8ba4\u533a\u5757\u5927\u5c0f\u4e3a 1k\u3002\u4f7f\u7528\u00a0<code>edquota -t<\/code>\u00a0\u8bbe\u7f6e grace \u65f6\u95f4\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<pre># edquota -u colin<\/pre>\n<h3>Linux<\/h3>\n<pre>Disk quotas for user colin (uid 1007):\r\n  Filesystem         blocks       soft       hard     inodes     soft     hard\r\n  \/dev\/sda8            108       1000       2000          1        0        0\r\n<\/pre>\n<h3>FreeBSD<\/h3>\n<pre>Quotas for user colin:\r\n\/home: kbytes in use: 504184, limits (soft = 700000, hard = 800000)\r\n   inodes in use: 1792, limits (soft = 0, hard = 0)\r\n<\/pre>\n<h3>\u7ed9\u8bb8\u591a\u7528\u6237\u5206\u914d\u9650\u989d<\/h3>\n<p>\u547d\u4ee4\u00a0<code>edquota -p<\/code>\u00a0\u7528\u6765\u590d\u7528\u4e00\u4e2a quota \u7ed9\u5176\u4ed6\u7528\u6237\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u590d\u7528\u6240\u6307\u7528\u6237\u7684\u9650\u989d\u7ed9\u6240\u6709\u7528\u6237\uff1a<\/p>\n<pre># edquota -p refuser `awk -F: $3 &gt; 499 {print $1}' \/etc\/passwd`\r\n# edquota -p refuser user1 user2     <span class=\"cmt\"># \u590d\u7528\u7ed9 2 \u4e2a\u7528\u6237<\/span>\r\n<\/pre>\n<h3>\u68c0\u67e5<\/h3>\n<p>\u7528\u6237\u53ea\u9700\u8f93\u5165\u00a0<code>quota<\/code>\u00a0(\u6587\u4ef6 quota.user \u5fc5\u987b\u53ef\u8bfb) \u6765\u53ef\u4ee5\u68c0\u67e5\u4ed6\u4eec\u7684\u9650\u989d\u3002Root \u53ef\u4ee5\u67e5\u770b\u6240\u6709\u7528\u6237\u7684\u9650\u989d\u3002<\/p>\n<pre># quota -u colin                     <span class=\"cmt\"># \u67e5\u770b\u7528\u6237\u7684\u9650\u989d<\/span>\r\n# repquota \/home                     <span class=\"cmt\"># \u6240\u6709\u7528\u6237\u5728\u8fd9\u4e2a\u5206\u533a\u4e0a\u7684\u9650\u989d\u60c5\u51b5<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"shells\">\n<h1><a>SHELLS<\/a><\/h1>\n<p>\u8bb8\u591a Linux \u53d1\u884c\u7248\u4f7f\u7528 BASH Shell\uff0cBSD \u4f7f\u7528\u7684\u662f tcsh\uff0cBourne Shell \u4ec5\u7528\u4e8e\u811a\u672c\u3002\u8fc7\u6ee4\u5668(Filter)\u975e\u5e38\u6709\u7528\u5e76\u4e14\u53ef\u7528\u4e8e\u7ba1\u9053(pipe)\uff1a<\/p>\n<ul>\n<li><code>grep<\/code>\u00a0\u00a0 \u00a0\u6a21\u5f0f\u5339\u914d<\/li>\n<li><code>sed<\/code>\u00a0\u00a0 \u00a0 \u67e5\u627e\u5e76\u66ff\u6362\u5b57\u7b26\u4e32\u6216\u5b57\u7b26<\/li>\n<li><code>cut<\/code>\u00a0\u00a0 \u00a0 \u4ece\u4e00\u4e2a\u6807\u8bb0\u5f00\u59cb\u6253\u5370\u6240\u6307\u5b9a\u5217\u6570\u636e<\/li>\n<li><code>sort<\/code>\u00a0\u00a0 \u00a0\u6309\u5b57\u6bcd\u6216\u6570\u5b57\u6392\u5e8f<\/li>\n<li><code>uniq<\/code>\u00a0\u00a0 \u00a0\u5220\u9664\u4e00\u4e2a\u6587\u4ef6\u4e2d\u91cd\u590d\u884c<\/li>\n<\/ul>\n<p>\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u4e00\u6b21\u4f7f\u7528\u6240\u6709\u547d\u4ee4\uff1a<\/p>\n<pre># ifconfig | sed 's\/  \/ \/g' | cut -d\" \" -f1 | uniq | grep -E \"[a-z0-9]+\" | sort -r\r\n# ifconfig | sed '\/.*inet addr:\/!d;s\/\/\/;s\/ .*\/\/'|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n\r\n<\/pre>\n<p>sed \u7684\u6a21\u5f0f\u5b57\u7b26\u4e32\u4e2d\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26\u662f\u4e00\u4e2a tab\u3002\u8981\u5728\u547d\u4ee4\u63a7\u5236\u53f0\u4e2d\u8f93\u5165 tab\uff0c\u53ef\u4ee5\u4f7f\u7528 ctrl-v ctrl-tab\u3002<\/p>\n<h2 id=\"bash\">bash<\/h2>\n<p>Bash\u3001sh \u7684\u91cd\u5b9a\u5411\u548c\u7ba1\u9053\uff1a<\/p>\n<pre># cmd 1&gt; file                         <span class=\"cmt\"># \u91cd\u5b9a\u5411\u6807\u51c6\u8f93\u51fa\u5230 file\u3002<\/span>\r\n# cmd 2&gt; file                         <span class=\"cmt\"># \u91cd\u5b9a\u5411\u6807\u51c6\u9519\u8bef\u8f93\u51fa\u5230 file\u3002<\/span>\r\n# cmd 1&gt;&gt; file                        <span class=\"cmt\"># \u91cd\u5b9a\u5411\u6807\u51c6\u8f93\u51fa\u5e76\u8ffd\u52a0\u5230 file\u3002<\/span>\r\n# cmd &amp;&gt; file                         <span class=\"cmt\"># \u91cd\u5b9a\u5411\u6807\u51c6\u8f93\u51fa\u548c\u6807\u51c6\u9519\u8bef\u8f93\u51fa\u5230 file\u3002<\/span>\r\n# cmd &gt;file 2&gt;&amp;1                      <span class=\"cmt\"># \u91cd\u5b9a\u5411\u6807\u51c6\u9519\u8bef\u8f93\u51fa\u5230\u6807\u51c6\u8f93\u51fa\u7136\u540e\u91cd\u5b9a\u5411\u5230 file\u3002<\/span>\r\n# cmd1 | cmd2                         <span class=\"cmt\"># cmd1 \u7684\u8f93\u51fa\u901a\u8fc7\u7ba1\u9053\u8fde\u63a5\u5230 cmd2 \u7684\u8f93\u5165<\/span>\r\n# cmd1 2&gt;&amp;1 | cmd2                    <span class=\"cmt\"># cmd1 \u7684\u8f93\u51fa\u548c\u9519\u8bef\u8f93\u51fa\u901a\u8fc7\u7ba1\u9053\u8fde\u63a5\u5230 cmd2 \u7684\u8f93\u5165<\/span>\r\n<\/pre>\n<p>\u4fee\u6539\u4f60\u7684\u914d\u7f6e\u6587\u4ef6 ~\/.bashrc (\u4e5f\u53ef\u4ee5\u662f ~\/.bash_profile)\u3002\u4e0b\u5217\u6761\u76ee\u975e\u5e38\u6709\u7528\uff0c\u4f7f\u7528&#8221;. .bashrc&#8221;\u91cd\u65b0\u52a0\u8f7d\u3002<\/p>\n<pre># in .bashrc\r\nbind '\"\\e[A\"':history-search-backward <span class=\"cmt\"># \u4f7f\u7528\u4e0a\u4e0b\u952e\u67e5\u627e<\/span>\r\nbind '\"\\e[B\"':history-search-forward  <span class=\"cmt\"># \u5386\u53f2\u547d\u4ee4\u3002\u65e0\u4ef7\u4e4b\u5b9d!<\/span>\r\nset -o emacs                          <span class=\"cmt\"># Set emacs mode in bash (\u770b\u4e0b\u9762)<\/span>\r\nset bell-style visible                <span class=\"cmt\"># Do not beep, inverse colors<\/span>\r\n    <span class=\"cmt\"># \u8bbe\u7f6e\u4e00\u4e2a\u6f02\u4eae\u7684\u63d0\u793a\u7b26\u50cf [user@host]\/path\/todir&gt;<\/span>\r\nPS1=\"\\[\\033[1;30m\\][\\[\\033[1;34m\\]\\u\\[\\033[1;30m\\]\"\r\nPS1=\"$PS1@\\[\\033[0;33m\\]\\h\\[\\033[1;30m\\]]\\[\\033[0;37m\\]\"\r\nPS1=\"$PS1\\w\\[\\033[1;30m\\]&gt;\\[\\033[0m\\]\"\r\n<\/pre>\n<pre><span class=\"cmt\"># \u8981\u68c0\u67e5\u5f53\u524d\u53ef\u7528\u522b\u540d(alias)\uff0c\u53ea\u9700\u7b80\u5355\u8f93\u5165\u547d\u4ee4 alias<\/span>\r\nalias  ls='ls -aF'                    <span class=\"cmt\"># \u6dfb\u52a0\u6307\u793a\u7b26(*\/=&gt;@| \u5176\u4e2d\u4e4b\u4e00)<\/span>\r\nalias  ll='ls -aFls'                  <span class=\"cmt\"># \u6e05\u5355<\/span>\r\nalias  la='ls -all'\r\nalias ..='cd ..'\r\nalias ...='cd ..\/..'\r\nexport HISTFILESIZE=5000              <span class=\"cmt\"># \u5de8\u5927\u7684\u5386\u53f2\u8bb0\u5f55<\/span>\r\nexport CLICOLOR=1                     <span class=\"cmt\"># \u4f7f\u7528\u989c\u8272(\u5982\u679c\u53ef\u7528)<\/span>\r\nexport LSCOLORS=ExGxFxdxCxDxDxBxBxExEx\r\n<\/pre>\n<h2 id=\"tcsh\">tcsh<\/h2>\n<p>Tcsh\u3001csh \u7684\u91cd\u5b9a\u5411\u548c\u7ba1\u9053(&gt; \u548c &gt;&gt; \u540c sh \u4e2d\u4e00\u6837)\uff1a<\/p>\n<pre># cmd &gt;&amp; file                         <span class=\"cmt\"># \u91cd\u5b9a\u5411\u6807\u51c6\u8f93\u51fa\u548c\u6807\u51c6\u9519\u8bef\u8f93\u51fa\u5230 file\u3002<\/span>\r\n# cmd &gt;&gt;&amp; file                        <span class=\"cmt\"># \u8ffd\u52a0\u6807\u51c6\u8f93\u51fa\u548c\u6807\u51c6\u9519\u8bef\u8f93\u51fa\u5230 file\u3002<\/span>\r\n# cmd1 | cmd2                         <span class=\"cmt\"># cmd1 \u7684\u8f93\u51fa\u901a\u8fc7\u7ba1\u9053\u8fde\u63a5\u5230 cmd2 \u7684\u8f93\u5165<\/span>\r\n# cmd1 |&amp; cmd2                        <span class=\"cmt\"># cmd1 \u7684\u8f93\u51fa\u548c\u9519\u8bef\u8f93\u51fa\u901a\u8fc7\u7ba1\u9053\u8fde\u63a5\u5230 cmd2 \u7684\u8f93\u5165<\/span>\r\n<\/pre>\n<p>Csh\/tcsh \u7684\u8bbe\u7f6e\u5728\u00a0<code>~\/.cshrc<\/code>\u00a0\u4e2d\uff0c\u4f7f\u7528&#8221;source .cshrc&#8221;\u6765\u91cd\u65b0\u52a0\u8f7d\u3002\u4f8b\u5b50\uff1a<\/p>\n<pre># in .cshrc\r\nalias  ls      'ls -aF'\r\nalias  ll      'ls -aFls'\r\nalias  la      'ls -all'\r\nalias  ..      'cd ..'\r\nalias  ...     'cd ..\/..'\r\nset   prompt    = \"%B%n%b@%B%m%b%\/&gt; \" <span class=\"cmt\"># \u50cf user@host\/path\/todir&gt;<\/span>\r\nset   history   =  5000\r\nset   savehist  = ( 6000 merge )\r\nset   autolist                        <span class=\"cmt\"># \u63a7\u5236\u547d\u4ee4\u8865\u5168\u548c\u53d8\u91cf\u8865\u5168<\/span>\r\nset   visiblebell                     <span class=\"cmt\"># \u4f7f\u7528\u95ea\u52a8\u5c4f\u5e55\u7684\u65b9\u5f0f\u6765\u53d6\u4ee3\u8702\u9e23\u5668\u9e23\u53eb<\/span>\r\n<\/pre>\n<pre><span class=\"cmt\"># Bindkey \u548c\u989c\u8272<\/span>\r\nbindkey -e     Select Emacs bindings  <span class=\"cmt\"># \u5c06\u547d\u4ee4\u884c\u7f16\u8f91\u5668\u5207\u6362\u5230emacs\u6a21\u5f0f<\/span>\r\nbindkey -k up history-search-backward <span class=\"cmt\"># \u4f7f\u7528\u4e0a\u4e0b\u952e\u6765\u641c\u7d22<\/span>\r\nbindkey -k down history-search-forward\r\nsetenv CLICOLOR 1                     <span class=\"cmt\"># \u4f7f\u7528\u989c\u8272(\u53ef\u80fd\u7684\u8bdd)<\/span>\r\nsetenv LSCOLORS ExGxFxdxCxDxDxBxBxExEx\r\n<\/pre>\n<p>\u8be5 emacs \u6a21\u5f0f\u5c06\u4f7f\u7528 emacs \u5feb\u6377\u952e\u6765\u4fee\u6539\u547d\u4ee4\u63d0\u793a\u884c\u3002\u8fd9\u662f\u975e\u5e38\u6709\u7528\u7684(\u4e0d\u5355\u4e3a Emacs \u7528\u6237)\u3002\u6700\u5e38\u7528\u7684\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li>C-a \u00a0 \u00a0 \u00a0 \u79fb\u52a8\u5149\u6807\u5230\u884c\u5934<\/li>\n<li>C-e \u00a0 \u00a0 \u00a0 \u79fb\u52a8\u5149\u6807\u5230\u884c\u5c3e<\/li>\n<li>M-b \u00a0 \u00a0 \u00a0 \u79fb\u52a8\u5149\u6807\u5230\u524d\u4e00\u4e2a\u5355\u8bcd<\/li>\n<li>M-f \u00a0 \u00a0 \u00a0 \u79fb\u52a8\u5149\u6807\u5230\u540e\u4e00\u4e2a\u5355\u8bcd<\/li>\n<li>M-d \u00a0 \u00a0 \u00a0 \u526a\u5207\u4e0b\u4e00\u4e2a\u5355\u8bcd<\/li>\n<li>C-w \u00a0 \u00a0 \u00a0 \u526a\u5207\u6700\u540e\u4e00\u4e2a\u5355\u8bcd<\/li>\n<li>C-u \u00a0 \u00a0 \u00a0 \u526a\u5207\u5149\u6807\u524d\u6240\u6709\u5b57\u7b26<\/li>\n<li>C-k \u00a0 \u00a0 \u00a0 \u526a\u5207\u5149\u6807\u540e\u6240\u6709\u5b57\u7b26<\/li>\n<li>C-y \u00a0 \u00a0 \u00a0 \u7c98\u5e16\u6700\u540e\u526a\u5207\u7684\u5b57\u7b26(\u7b80\u6613\u7684\u7c98\u5e16)<\/li>\n<li>C-_ \u00a0 \u00a0 \u00a0 \u91cd\u505a<\/li>\n<\/ul>\n<p><i>\u6ce8\u610f:<\/i>\u00a0C- = \u6309\u4f4f control \u952e\uff0cM- = \u6309\u4f4f meta (\u5b83\u901a\u5e38\u4e3a alt \u6216\u8005 escape)\u952e\u3002<\/div>\n<div id=\"scripting\">\n<h1><a>\u811a\u672c<\/a><\/h1>\n<p class=\"xrefp\"><a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#bournebasics\">\u57fa\u7840<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#bourneexample\">\u811a\u672c\u5b9e\u4f8b<\/a>\u00a0|\u00a0<a class=\"xrefp\" href=\"http:\/\/cb.vu\/unixtoolbox_zh_CN.xhtml#sed\">sed\/\u5b9e\u7528\u547d\u4ee4<\/a><\/p>\n<p>Bourne shell\u00a0(\/bin\/sh) \u5b58\u5728\u4e8e\u6240\u6709\u7684 Unix \u7cfb\u7edf\u4e0a\uff0c\u5e76\u4e14\u7528\u5979\u5199\u7684\u811a\u672c\u662f(\u5b8c\u5168)\u53ef\u79fb\u690d\u7684\uff1b\u00a0<code>man 1 sh<\/code>\u00a0\u662f\u4e00\u4e2a\u597d\u7684\u53c2\u8003\u3002<\/p>\n<h2 id=\"bournebasics\">\u57fa\u7840<\/h2>\n<h3>\u53d8\u91cf\u548c\u53c2\u6570<\/h3>\n<p>\u4f7f\u7528\u00a0<code>variable=value<\/code>\u00a0\u7684\u547d\u4ee4\u683c\u5f0f\u8bbe\u7f6e\u53d8\u91cf\uff0c\u5176\u4e2d variable \u662f\u53d8\u91cf\u540d\u79f0\uff0cvalue\u662f\u6253\u7b97\u8d4b\u7ed9\u8be5\u53d8\u91cf\u7684\u503c\u3002\u4f7f\u7528 $variable \u83b7\u53d6\u53d8\u91cf\u503c\u3002<\/p>\n<pre>MESSAGE=\"Hello World\"                        <span class=\"cmt\"># \u8d4b\u4e88\u4e00\u4e2a\u5b57\u7b26\u4e32<\/span>\r\nPI=3.1415                                    <span class=\"cmt\"># \u8d4b\u4e88\u4e00\u4e2a\u5341\u8fdb\u5236\u5c0f\u6570<\/span>\r\nN=8\r\nTWON=`expr $N * 2`                           <span class=\"cmt\"># \u7b97\u672f\u8868\u8fbe\u5f0f(\u53ea\u9650\u6574\u6570)<\/span>\r\nTWON=$(($N * 2))                             <span class=\"cmt\"># \u53e6\u4e00\u79cd\u8bed\u6cd5<\/span>\r\nTWOPI=`echo \"$PI * 2\" | bc -l`               <span class=\"cmt\"># \u4f7f\u7528 bc \u8fdb\u884c\u6d6e\u70b9\u8fd0\u7b97<\/span>\r\nZERO=`echo \"c($PI\/4)-sqrt(2)\/2\" | bc -l`\r\n<\/pre>\n<p>\u547d\u4ee4\u884c\u53c2\u6570\uff1a<\/p>\n<pre>$0, $1, $2, ...                              <span class=\"cmt\"># $0 \u547d\u4ee4\u672c\u8eab<\/span> \r\n$#                                           <span class=\"cmt\"># \u547d\u4ee4\u53c2\u6570\u4e2a\u6570<\/span>\r\n$*                                           <span class=\"cmt\"># \u6240\u6709\u53c2\u6570(\u4e5f\u53ef\u4ee5\u662f $@)<\/span>\r\n<\/pre>\n<h3>\u4e00\u4e9b\u7279\u6b8a\u7684\u53d8\u91cf<\/h3>\n<pre>$$                                           <span class=\"cmt\"># \u5f53\u524d\u8fdb\u7a0b ID<\/span>\r\n$?                                           <span class=\"cmt\"># \u6700\u540e\u547d\u4ee4\u9000\u51fa\u72b6\u6001\u7801<\/span>\r\n  command\r\n  <span class=\"keyword\">if<\/span> [ $<span class=\"pp\">?<\/span> != 0 ]; <span class=\"keyword\">then<\/span>\r\n    echo \"command failed\"\r\n  <span class=\"keyword\">fi<\/span>\r\n<span class=\"pp\">mypath<\/span>=`pwd`\r\n<span class=\"pp\">mypath<\/span>=${<span class=\"pp\">mypath<\/span>}\/file.txt\r\necho ${<span class=\"pp\">mypath<\/span>##*\/}                           <span class=\"cmt\"># \u53ea\u663e\u793a\u6587\u4ef6\u540d<\/span>\r\necho ${<span class=\"pp\">mypath<\/span>%%.*}                           <span class=\"cmt\"># \u9664\u4e86\u6269\u5c55\u540d\u7684\u5168\u8def\u5f84<\/span>\r\n<span class=\"pp\">var2<\/span>=${<span class=\"pp\">var<\/span>:=string}                          <span class=\"cmt\"># \u5982\u679cvar\u6ca1\u6709\u88ab\u8d4b\u503c\uff0c\u5219string\u503c\u5148\u8d4b\u503c\u7ed9var\uff0c\r\n                                             # \u7136\u540e\u518d\u8d4b\u503c\u7ed9var2<\/span>\r\n<\/pre>\n<h3>\u7ed3\u6784\u63a7\u5236<\/h3>\n<pre><span class=\"keyword\">for<\/span> <span class=\"pp\">file<\/span> in `ls`\r\n<span class=\"keyword\">do<\/span>\r\n    echo $<span class=\"pp\">file<\/span>\r\n<span class=\"keyword\">done<\/span>\r\n\r\n<span class=\"pp\">count<\/span>=0\r\n<span class=\"keyword\">while<\/span> [ $<span class=\"pp\">count<\/span> -lt 5 ]; <span class=\"keyword\">do<\/span>\r\n    echo $<span class=\"pp\">count<\/span>\r\n    sleep 1\r\n    <span class=\"pp\">count<\/span>=$(($<span class=\"pp\">count<\/span> + 1))\r\n<span class=\"keyword\">done<\/span>\r\n\r\nmyfunction() {\r\n    find . -type f -name \"*.$<span class=\"pp\">1<\/span>\" -print       <span class=\"cmt\"># $1 \u4e3a\u65b9\u6cd5\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570<\/span>\r\n}\r\nmyfunction \"txt\"\r\n<\/pre>\n<h4>\u4ea7\u751f\u4e00\u4e2a\u6587\u4ef6<\/h4>\n<pre><span class=\"pp\">MYHOME<\/span>=\/home\/colin\r\ncat &gt; testhome.sh &lt;&lt; _EOF\r\n<span class=\"cmt\"># \u6240\u6709_EOF\u524d\u7684\u4ee3\u7801\u90fd\u4f1a\u8fdb\u5165\u5230 testhome.sh \u6587\u4ef6\u4e2d\u53bb<\/span>\r\n<span class=\"keyword\">if<\/span> [ -d \"$<span class=\"pp\">MYHOME<\/span>\" ] ; <span class=\"keyword\">then<\/span>\r\n    echo $<span class=\"pp\">MYHOME<\/span> exists\r\n<span class=\"keyword\">else<\/span>\r\n    echo $<span class=\"pp\">MYHOME<\/span> does not exist\r\n<span class=\"keyword\">fi<\/span>\r\n_EOF\r\nsh testhome.sh\r\n<\/pre>\n<h2 id=\"bourneexample\">Bourne \u811a\u672c\u5b9e\u4f8b<\/h2>\n<p>\u6765\u4e00\u4e2a\u5c0f\u5b9e\u4f8b\uff0c\u6b64\u811a\u672c\u4ece\u672c xhtml \u6587\u6863\u521b\u5efa\u4e00\u4e2a PDF \u5c0f\u518c\u5b50\uff1a<\/p>\n<pre><span class=\"pp\">#!\/bin\/sh<\/span>\r\n<span class=\"cmt\"># \u6b64\u811a\u672c\u53ef\u4ee5\u521b\u5efa\u4e00\u4efd\u4f9b\u53cc\u9762\u6253\u5370\u673a\u6253\u5370\u7684 PDF \u683c\u5f0f\u7684\u4e66<\/span>\r\n<span class=\"keyword\">if<\/span> [ $<span class=\"pp\">#<\/span> <span class=\"keyword\">-ne<\/span> 1 ]; <span class=\"keyword\">then<\/span>                        <span class=\"cmt\"># \u68c0\u67e5\u53c2\u6570\u662f\u5426\u7b49\u4e8e 1<\/span>\r\n  echo 1&gt;&amp;2 \"Usage: $0 HtmlFile\"\r\n  <span class=\"keyword\">exit<\/span> 1                                     <span class=\"cmt\"># \u5982\u679c\u4e0d\u7b49\u4e8e1\uff0c\u975e0\u9000\u51fa<\/span>\r\n<span class=\"keyword\">fi<\/span>\r\n\r\n<span class=\"pp\">file<\/span>=$<span class=\"pp\">1<\/span>                                      <span class=\"cmt\"># \u6587\u4ef6\u53d8\u91cf<\/span>\r\n<span class=\"pp\">fname<\/span>=${<span class=\"pp\">file<\/span>%.*}                             <span class=\"cmt\"># \u6587\u4ef6\u540d\u53d8\u91cf<\/span>\r\n<span class=\"pp\">fext<\/span>=${<span class=\"pp\">file<\/span>#*.}                              <span class=\"cmt\"># \u6587\u4ef6\u6269\u5c55\u540d\u53d8\u91cf<\/span>\r\n\r\nprince $<span class=\"pp\">file<\/span> -o $<span class=\"pp\">fname<\/span>.pdf                   <span class=\"cmt\"># www.princexml.com<\/span>\r\npdftops -paper A4 -noshrink $<span class=\"pp\">fname<\/span>.pdf $<span class=\"pp\">fname<\/span>.ps <span class=\"cmt\"># \u521b\u5efa postscript \u5c0f\u518c\u5b50<\/span>\r\ncat $<span class=\"pp\">fname<\/span>.ps |psbook|psnup -Pa4 -2 |pstops -b \"2:0,1U(21cm,29.7cm)\" &gt; $<span class=\"pp\">fname<\/span>.book.ps\r\n\r\nps2pdf13 -sPAPERSIZE=a4 -sAutoRotatePages=None $<span class=\"pp\">fname<\/span>.book.ps $<span class=\"pp\">fname<\/span>.book.pdf\r\n                                             <span class=\"cmt\"># \u5728 Windows \u4e0a\u4f7f\u7528 #a4 \u548c #None!<\/span>\r\n<span class=\"keyword\">exit<\/span> 0                                       <span class=\"cmt\"># exit 0 \u610f\u4e3a\u6210\u529f<\/span>\r\n<\/pre>\n<h2 id=\"sed\">\u4e00\u4e9b sed \u547d\u4ee4<\/h2>\n<p>\u8fd9\u91cc\u662f<a href=\"http:\/\/student.northpark.edu\/pemente\/sed\/sed1line.txt\">\u5355\u884c sed \u547d\u4ee4\u7684\u91d1\u77ff<\/a>\u3002\u8fd8\u6709\u4e00\u4e2a\u5f88\u597d\u7684\u00a0<a href=\"http:\/\/www.grymoire.com\/Unix\/Sed.html\">sed \u4ecb\u7ecd\u53ca\u6559\u7a0b<\/a>\u3002<\/p>\n<pre>sed 's\/string1\/string2\/g'                    <span class=\"cmt\"># \u66ff\u6362 string1 \u4e3a string2<\/span>\r\nsed -i 's\/wroong\/wrong\/g' *.txt              <span class=\"cmt\"># \u7528 g \u66ff\u6362\u6240\u6709\u8fd4\u56de\u7684\u5355\u8bcd<\/span>\r\nsed 's\/\\(.*\\)1\/\\12\/g'                        <span class=\"cmt\"># \u4fee\u6539 anystring1 \u4e3a anystring2<\/span>\r\nsed '\/&lt;p&gt;\/,\/&lt;\\\/p&gt;\/d' t.xhtml                 <span class=\"cmt\"># \u5220\u9664\u4ee5 &lt;p&gt; \u5f00\u59cb\uff0c\u4ee5 &lt;\/p&gt; \u7ed3\u5c3e\u7684\u884c<\/span>\r\nsed '\/ *#\/d; \/^ *$\/d'                        <span class=\"cmt\"># \u5220\u9664\u6ce8\u91ca\u548c\u7a7a\u884c<\/span>\r\nsed 's\/[ \\t]*$\/\/'                            <span class=\"cmt\"># \u5220\u9664\u884c\u5c3e\u7a7a\u683c (\u4f7f\u7528 tab \u4ee3\u66ff \\t)<\/span>\r\nsed 's\/^[ \\t]*\/\/;s\/[ \\t]*$\/\/'                <span class=\"cmt\"># \u5220\u9664\u884c\u5934\u5c3e\u7a7a\u683c<\/span>\r\nsed 's\/[^*]\/[&amp;]\/'                            <span class=\"cmt\"># \u62ec\u4f4f\u9996\u5b57\u7b26 [] top -&gt; [t]op<\/span>\r\nsed = file | sed 'N;s\/\\n\/\\t\/' &gt; file.num     <span class=\"cmt\"># \u4e3a\u6587\u4ef6\u6dfb\u52a0\u884c\u53f7<\/span>\r\n<\/pre>\n<h2 id=\"regex\">\u6b63\u5219\u8868\u8fbe\u5f0f<\/h2>\n<p>\u4e00\u4e9b\u57fa\u672c\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u540c\u6837\u53ef\u7528\u4e8e sed\u3002\u4f5c\u4e3a\u4e00\u4e2a\u826f\u597d\u7684\u542f\u8499\uff0c\u53ef\u770b\u00a0<a href=\"http:\/\/www.regular-expressions.info\/reference.html\">\u57fa\u672c\u6b63\u5219\u8bed\u6cd5<\/a>\u3002<\/p>\n<pre>[\\^$.|?*+()                          <span class=\"cmt\"># \u7279\u6b8a\u5b57\u7b26\uff0c\u5176\u4ed6\u5b57\u7b26\u5c06\u5339\u914d\u81ea\u8eab<\/span>\r\n\\                                    <span class=\"cmt\"># \u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\uff0c\u5f53\u6210\u666e\u901a\u5b57\u7b26\u5bf9\u5f85<\/span>\r\n*                                    <span class=\"cmt\"># \u91cd\u590d\u524d\u9879 0 \u6b21\u6216\u591a\u6b21<\/span>\r\n.                                    <span class=\"cmt\"># \u5355\u4e2a\u5b57\u7b26\u9664\u6362\u884c\u7b26<\/span>\r\n.*                                   <span class=\"cmt\"># \u5339\u914d 0 \u4e2a\u6216\u591a\u4e2a\u5b57\u7b26<\/span>\r\n^                                    <span class=\"cmt\"># \u5339\u914d\u5b57\u7b26\u4e32\u884c\u5f00\u59cb\u5904<\/span>\r\n$                                    <span class=\"cmt\"># \u5339\u914d\u5b57\u7b26\u4e32\u884c\u7ed3\u5c3e\u5904<\/span>\r\n.$                                   <span class=\"cmt\"># \u5339\u914d\u5b57\u7b26\u4e32\u884c\u6700\u540e\u4e00\u4e2a\u5b57\u7b26<\/span>\r\n^ $                                  <span class=\"cmt\"># \u5339\u914d\u5355\u4e2a\u7a7a\u683c\u7684\u884c<\/span>\r\n[^A-Z]                               <span class=\"cmt\"># \u5339\u914d\u4efb\u4f55\u4ee5 A-Z \u5b57\u7b26\u5f00\u59cb\u7684\u884c<\/span>\r\n<\/pre>\n<h2 id=\"shcmd\">\u4e00\u4e9b\u5b9e\u7528\u547d\u4ee4<\/h2>\n<p>\u4e0b\u5217\u547d\u4ee4\u5bf9\u4e8e\u5305\u542b\u4e8e\u4e00\u4e2a\u811a\u672c\u6216\u8005\u5355\u884c\u547d\u4ee4\u6765\u8bf4\u5f88\u6709\u7528\u3002<\/p>\n<pre>sort -t. -k1,1n -k2,2n -k3,3n -k4,4n         <span class=\"cmt\"># \u6392\u5e8f IPv4 \u683c\u5f0f\u7684 IP \u5730\u5740<\/span>\r\necho 'Test' | tr '[:lower:]' '[:upper:]'     <span class=\"cmt\"># \u8f6c\u6362\u6210\u5927\u5199<\/span>\r\necho foo.bar | cut -d . -f 1                 <span class=\"cmt\"># \u8fd4\u56de foo<\/span>\r\nPID=$(ps | grep script.sh | grep bin | awk '{print $1}')          <span class=\"cmt\"># \u6b63\u5728\u8fd0\u884c\u540d\u4e3a script \u811a\u672c\u7684 PID<\/span>\r\nPID=$(ps axww | grep [p]ing | awk '{print $1}')                   <span class=\"cmt\"># ping \u7684 PID (w\/o grep pid)<\/span>\r\nIP=$(ifconfig $INTERFACE | sed '\/.*inet addr:\/!d;s\/\/\/;s\/ .*\/\/')   <span class=\"cmt\"># Linux<\/span>\r\nIP=$(ifconfig $INTERFACE | sed '\/.*inet \/!d;s\/\/\/;s\/ .*\/\/')        <span class=\"cmt\"># FreeBSD<\/span>\r\nif [ `diff file1 file2 | wc -l` != 0 ]; then [...] fi             <span class=\"cmt\"># \u6587\u4ef6\u6539\u53d8\u4e86\uff1f<\/span>\r\ncat \/etc\/master.passwd | grep -v root | grep -v \\*: | awk -F\":\" \\ <span class=\"cmt\"># \u521b\u5efa http passwd<\/span>\r\n'{ printf(\"%s:%s\\n\", $1, $2) }' &gt; \/usr\/local\/etc\/apache2\/passwd\r\n\r\ntestuser=$(cat \/usr\/local\/etc\/apache2\/passwd | grep -v \\    <span class=\"cmt\"># \u67e5\u770b passwd \u4e2d\u7684\u7528\u6237<\/span>\r\nroot | grep -v \\*: | awk -F\":\" '{ printf(\"%s\\n\", $1) }' | grep ^user$)\r\n:(){ :|:&amp; };:                                <span class=\"cmt\"># bash fork \u70b8\u5f39\u3002\u4f1a\u5e72\u6389\u4f60\u7684\u673a\u5668<\/span>\r\ntail +2 file &gt; file2                         <span class=\"cmt\"># \u5220\u9664\u6587\u4ef6\u7684\u7b2c\u4e00\u884c<\/span>\r\n<\/pre>\n<p>\u6211\u4f7f\u7528\u4e00\u79cd\u5c0f\u4f0e\u4fe9\u6765\u4e00\u6b21\u66f4\u6539\u8bb8\u591a\u6587\u4ef6\u7684\u6269\u5c55\u540d\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u4ece .cxx \u5230 .cpp\u3002\u6392\u9664\u6700\u540e\u7684\u00a0<code>| sh<\/code>\u00a0\u5148\u6d4b\u8bd5\u4e00\u4e0b\u3002\u4f60\u540c\u6837\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u00a0<code>rename<\/code>\u00a0\u6765\u505a\u8fd9\u4e9b\uff0c\u5982\u679c\u5b89\u88c5\u4e86\u7684\u8bdd\u3002\u6216\u8005\u4f7f\u7528 bash \u5185\u5efa\u547d\u4ee4\u3002<\/p>\n<pre># ls *.cxx | awk -F. '{print \"mv \"$0\" \"$1\".cpp\"}' | sh\r\n# ls *.c | sed \"s\/.*\/cp &amp; &amp;.$(date \"+%Y%m%d\")\/\" | sh <span class=\"cmt\"># \u5982 \u62f7\u8d1d *.c \u6210 *.c.20080401<\/span>\r\n# rename .cxx .cpp *.cxx                             <span class=\"cmt\"># \u91cd\u547d\u540d\u6240\u6709 .cxx \u6210 .cpp<\/span>\r\n# for i in *.cxx; do mv $i ${i%%.cxx}.cpp; done      <span class=\"cmt\"># bash \u5185\u5efa\u7684<\/span>\r\n<\/pre>\n<\/div>\n<div id=\"programming\">\n<h1><a>\u7f16\u7a0b<\/a><\/h1>\n<h2 id=\"cbasics\">C \u57fa\u7840<\/h2>\n<pre>strcpy(newstr,str)                        <span class=\"cmt\">\/* \u62f7\u8d1d str \u5230 newstr *\/<\/span>\r\nexpr1 ? expr2 : expr3                     <span class=\"cmt\">\/* if (expr1) expr2 else expr3 *\/<\/span>\r\nx = (y &gt; z) ? y : z;                      <span class=\"cmt\">\/* if (y &gt; z) x = y; else x = z; *\/<\/span>\r\nint a[]={0,1,2};                          <span class=\"cmt\">\/* \u521d\u59cb\u5316\u6570\u7ec4 (\u6216\u8005 a[3]={0,1,2}; *\/<\/span>\r\nint a[2][3]={{1,2,3},{4,5,6}};            <span class=\"cmt\">\/* \u521d\u59cb\u5316\u4e8c\u7ef4\u6570\u7ec4 *\/<\/span>\r\nint i = 12345;                            <span class=\"cmt\">\/* \u4ece i \u8f6c\u6362\u6210 char str *\/<\/span>\r\nchar str[10];\r\nsprintf(str, \"%d\", i);\r\n<\/pre>\n<h2>C \u5b9e\u4f8b<\/h2>\n<p>\u4e00\u4e2a\u6700\u5c0f\u5316\u7684 C \u7a0b\u5f0f simple.c\uff1a<\/p>\n<pre><span class=\"pp\">#include<\/span> &lt;stdio.h&gt;\r\nmain() {\r\n    <span class=\"keyword\">int<\/span> number=42;\r\n    printf(\"The answer is %i\\n\", number);  \r\n}\r\n<\/pre>\n<p>\u7f16\u8bd1\uff1a<\/p>\n<pre># gcc simple.c -o simple\r\n# .\/simple\r\nThe answer is 42\r\n<\/pre>\n<h2 id=\"cppbasics\">C++ \u57fa\u7840<\/h2>\n<pre>*pointer                                  <span class=\"cmt\">\/\/ \u6307\u5411\u5bf9\u8c61\u7684\u6307\u9488<\/span>\r\n&amp;obj                                      <span class=\"cmt\">\/\/ \u5bf9\u8c61 obj \u7684\u5730\u5740<\/span>\r\nobj.x                                     <span class=\"cmt\">\/\/ \u7c7b(\u5bf9\u8c61) obj \u6210\u5458 x<\/span>\r\npobj-&gt;x                                   <span class=\"cmt\">\/\/ \u6307\u9488 pobj \u6307\u5411\u7c7b(\u5bf9\u8c61)\u6210\u5458 x<\/span>\r\n                                          <span class=\"cmt\">\/\/ (*pobj).x \u540c pobj-&gt;x<\/span>\r\n<\/pre>\n<h2>C++ \u5b9e\u4f8b<\/h2>\n<p>\u6765\u4e00\u4e2a\u7a0d\u5fae\u73b0\u5b9e\u4e00\u70b9\u7684 C++ \u7a0b\u5e8f\uff0c\u6211\u4eec\u5728\u4e00\u4e2a\u5934\u6587\u4ef6(IPv4.h)\u4e2d\u521b\u5efa\u4e00\u4e2a\u7c7b\u5e76\u4e14\u5b9e\u73b0\u5b83(IPv4.cpp)\uff0c\u7136\u540e\u521b\u5efa\u4e00\u4e2a\u7a0b\u5f0f\u6765\u4f7f\u7528\u5176\u529f\u80fd\u3002\u8fd9\u4e2a\u7c7b\u7684\u6210\u5458\u65b9\u6cd5\u5b9e\u73b0\u4e86 IP \u5730\u5740\u4ece\u4e00\u4e32\u6574\u6570\u8f6c\u6362\u6210\u6211\u4eec\u719f\u77e5\u7684\u70b9\u5206\u683c\u5f0f\u3002\u8fd9\u662f\u4e00\u4e2a\u6700\u5c0f\u5316\u7684 C++ \u7a0b\u5f0f\u548c\u591a\u6e90\u6587\u4ef6(multi-source)\u7684\u7f16\u8bd1\u3002<\/p>\n<h3>IPv4 class<\/h3>\n<h4>IPv4.h:<\/h4>\n<pre><span class=\"pp\">#ifndef<\/span> IPV4_H\r\n<span class=\"pp\">#define<\/span> IPV4_H\r\n<span class=\"pp\">#include<\/span> &lt;string&gt;\r\n\r\n<span class=\"keyword\">namespace<\/span> GenericUtils {                          <span class=\"cmt\">\/\/ \u521b\u5efa namespace\r\n<\/span><span class=\"keyword\">class<\/span> IPv4 {                                      <span class=\"cmt\">\/\/ \u7c7b\u5b9a\u4e49\r\n<\/span><span class=\"keyword\">public<\/span>:\r\n    IPv4();\r\n    ~IPv4();\r\n    std::string IPint_to_IPquad(<span class=\"keyword\">unsigned<\/span> <span class=\"keyword\">long<\/span> ip);<span class=\"cmt\">\/\/ \u6210\u5458\u65b9\u6cd5\u63a5\u53e3\r\n<\/span>};\r\n} <span class=\"cmt\">\/\/namespace GenericUtils<\/span>\r\n<span class=\"pp\">#endif<\/span> <span class=\"cmt\">\/\/ IPV4_H\r\n<\/span><\/pre>\n<h4>IPv4.cpp:<\/h4>\n<pre><span class=\"pp\">#include<\/span> \"IPv4.h\"\r\n<span class=\"pp\">#include<\/span> &lt;string&gt;\r\n<span class=\"pp\">#include<\/span> &lt;sstream&gt;\r\n<span class=\"keyword\">using<\/span> <span class=\"keyword\">namespace<\/span> std;                              <span class=\"cmt\">\/\/ \u4f7f\u7528 namespace\r\n<\/span><span class=\"keyword\">using<\/span> <span class=\"keyword\">namespace<\/span> GenericUtils;\r\n\r\nIPv4::IPv4() {}                                   <span class=\"cmt\">\/\/ \u9ed8\u8ba4\u6784\u9020\/\u6790\u6784\u51fd\u6570\r\n<\/span>IPv4::~IPv4() {}\r\nstring IPv4::IPint_to_IPquad(<span class=\"keyword\">unsigned<\/span> <span class=\"keyword\">long<\/span> ip) {  <span class=\"cmt\">\/\/ \u6210\u5458\u65b9\u6cd5\u5b9e\u73b0\r\n<\/span>    ostringstream ipstr;                          <span class=\"cmt\">\/\/ \u4f7f\u7528\u5b57\u7b26\u4e32\u6d41\r\n<\/span>    ipstr &lt;&lt; ((ip &amp;0xff000000) &gt;&gt; 24)             <span class=\"cmt\">\/\/ \u4f4d\u53f3\u79fb\r\n<\/span>          &lt;&lt; \".\" &lt;&lt; ((ip &amp;0x00ff0000) &gt;&gt; 16)\r\n          &lt;&lt; \".\" &lt;&lt; ((ip &amp;0x0000ff00) &gt;&gt; 8)\r\n          &lt;&lt; \".\" &lt;&lt; ((ip &amp;0x000000ff));\r\n    <span class=\"keyword\">return<\/span> ipstr.str();\r\n}\r\n<\/pre>\n<h3>\u7a0b\u5e8f simplecpp.cpp<\/h3>\n<pre><span class=\"pp\">#include<\/span> \"IPv4.h\"\r\n<span class=\"pp\">#include<\/span> &lt;iostream&gt;\r\n<span class=\"pp\">#include<\/span> &lt;string&gt;\r\n<span class=\"keyword\">using<\/span> <span class=\"keyword\">namespace<\/span> std;\r\n\r\n<span class=\"keyword\">int<\/span> main (<span class=\"keyword\">int<\/span> argc, <span class=\"keyword\">char<\/span>* argv[]) {\r\n    string ipstr;                                 <span class=\"cmt\">\/\/ \u5b9a\u4e49\u53d8\u91cf\r\n<\/span>    <span class=\"keyword\">unsigned<\/span> <span class=\"keyword\">long<\/span> ipint = 1347861486;             <span class=\"cmt\">\/\/ \u6570\u5b57\u5f62\u5f0f\u7684 IP<\/span>\r\n    GenericUtils::IPv4 iputils;                   <span class=\"cmt\">\/\/ \u521b\u5efa\u4e00\u4e2a\u7c7b\u7684\u5bf9\u8c61\r\n<\/span>    ipstr = iputils.IPint_to_IPquad(ipint);       <span class=\"cmt\">\/\/ \u8c03\u7814\u7c7b\u7684\u6210\u5458\u65b9\u6cd5\r\n<\/span>    cout &lt;&lt; ipint &lt;&lt; \" = \" &lt;&lt; ipstr &lt;&lt; endl;      <span class=\"cmt\">\/\/ \u8f93\u51fa\u7ed3\u679c<\/span>\r\n\r\n    <span class=\"keyword\">return<\/span> 0;\r\n}\r\n<\/pre>\n<p>\u7f16\u8bd1\u548c\u6267\u884c\uff1a<\/p>\n<pre># g++ -c IPv4.cpp simplecpp.cpp                <span class=\"cmt\"># \u7f16\u8bd1\u6210\u76ee\u6807\u6587\u4ef6<\/span>\r\n# g++ IPv4.o simplecpp.o -o simplecpp.exe      <span class=\"cmt\"># \u8fde\u63a5\u76ee\u6807\u4ee3\u7801\uff0c\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6<\/span>\r\n# .\/simplecpp.exe \r\n1347861486 = 80.86.187.238\r\n<\/pre>\n<p>\u4f7f\u7528\u00a0<code>ldd<\/code>\u00a0\u811a\u672c\u68c0\u67e5\u5e76\u5217\u51fa\u53ef\u6267\u884c\u7a0b\u5e8f\u6240\u4f9d\u8d56\u7684\u5171\u4eab\u5e93\u6587\u4ef6\u3002\u8fd9\u4e2a\u547d\u4ee4\u540c\u6837\u53ef\u4ee5\u7528\u6765\u68c0\u67e5\u5171\u4eab\u5e93\u7684\u4e22\u5931\u3002<\/p>\n<pre># ldd \/sbin\/ifconfig<\/pre>\n<h2 id=\"makefile\">\u7b80\u5355\u7684 Makefile<\/h2>\n<p>\u76f8\u5e94\u7684\u6700\u5c0f\u5316\u591a\u6e90\u6587\u4ef6(multi-source)\u7f16\u8bd1 Makefile \u663e\u793a\u5982\u4e0b\u3002\u6bcf\u4e00\u4e2a\u547d\u4ee4\u884c\u5fc5\u987b\u4ee5\u00a0<i>tab<\/i>\u00a0\u5f00\u59cb\uff01\u53ef\u4ee5\u5c06\u4e00\u4e2a\u8f83\u957f\u884c\u4f7f\u7528\u53cd\u659c\u7ebf&#8221;\\&#8221;\u6765\u5206\u89e3\u4e3a\u591a\u884c\u3002<\/p>\n<pre><span class=\"pp\">CC<\/span> = g++\r\n<span class=\"pp\">CFLAGS<\/span> = -O\r\n<span class=\"pp\">OBJS<\/span> = IPv4.o simplecpp.o\r\n\r\n<span class=\"keyword\">simplecpp<\/span>: ${OBJS}\r\n\t${CC} -o simplecpp ${CFLAGS} ${OBJS}\r\n<span class=\"keyword\">clean<\/span>:\r\n\trm -f ${TARGET} ${OBJS}\r\n<\/pre>\n<\/div>\n<div id=\"onlinehelp\">\n<h1><a>\u5728\u7ebf\u5e2e\u52a9<\/a><\/h1>\n<h2 id=\"documentation\">\u6587\u6863<\/h2>\n<table>\n<tbody>\n<tr>\n<td><a href=\"http:\/\/en.tldp.org\/\">Linux \u6587\u6863<\/a><\/td>\n<td>en.tldp.org<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.linuxmanpages.com\/\">Linux Man Pages<\/a><\/td>\n<td>www.linuxmanpages.com<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.oreillynet.com\/linux\/cmd\/\">Linux \u547d\u4ee4\u76ee\u5f55<\/a><\/td>\n<td>www.oreillynet.com\/linux\/cmd<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/linux.die.net\/\">Linux doc man howtos<\/a><\/td>\n<td>linux.die.net<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.freebsd.org\/handbook\/\">FreeBSD \u624b\u518c<\/a><\/td>\n<td>www.freebsd.org\/handbook<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.freebsd.org\/cgi\/man.cgi\">FreeBSD Man Pages<\/a><\/td>\n<td>www.freebsd.org\/cgi\/man.cgi<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.freebsdwiki.net\/\">FreeBSD \u7528\u6237 wiki<\/a><\/td>\n<td>www.freebsdwiki.net<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/docs.sun.com\/app\/docs\/coll\/40.10\">Solaris Man Pages<\/a><\/td>\n<td>docs.sun.com\/app\/docs\/coll\/40.10<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"crossref\">\u5176\u4ed6 Unix\/Linux \u53c2\u8003<\/h2>\n<table>\n<tbody>\n<tr>\n<td><a href=\"http:\/\/bhami.com\/rosetta.html\">Rosetta Stone for Unix<\/a><\/td>\n<td>bhami.com\/rosetta.html (a Unix command translator)<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/unixguide.net\/unixguide.shtml\">Unix guide cross reference<\/a><\/td>\n<td>unixguide.net\/unixguide.shtml<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.linuxguide.it\/linux_commands_line_en.htm\" rel=\"nofollow\">Linux \u547d\u4ee4\u884c\u5217\u8868<\/a><\/td>\n<td>www.linuxguide.it\/commands_list.php<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.pixelbeat.org\/cmdline.html\" rel=\"nofollow\">Short Linux reference<\/a><\/td>\n<td>www.pixelbeat.org\/cmdline.html<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"last\">That&#8217;s all folks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u539f\u6587\u5730\u5740 UNIX TOOLBOX &#038;#<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[117],"class_list":["post-4878","post","type-post","status-publish","format-standard","hentry","tag-01-linux"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=4878"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4878\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=4878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=4878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=4878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}