Results tagged “freebsd” from 清茶 Blog
现在主要用 FreeBSD 7.0 做桌面,共享文件服务器上的文件(CIFS 方式),方法
%mount_smbfs -h
usage: mount_smbfs [-E cs1:cs2] [-I host] [-L locale] [-M crights:srights]
[-N] [-O cowner:cgroup/sowner:sgroup] [-R retrycount]
[-T timeout] [-W workgroup] [-c case] [-d mode] [-f mode]
[-g gid] [-n opt] [-u uid] //user@server/share node
我的文件服务器也是自建的,BSD 6.2两个硬盘做的 RAID/ 支持/ CIFS /NFS 下面以CIFS方式连接
mount_smbfs -I share '//tea@share/software' /media/share_software
服务器是samba user级别,-I 是指定主机 IP 用户可以要求密码的,也可以不要.用户名就是 tea /如果指定参数 -N 就是不要密码,最后面的是挂载点
经过三天艰苦卓绝的build,现在终于使用上了
最小化,尔后 pkg_add -r xorg / pkg_add -r gnome2 问题多多,pkg_delete -a
之后进入ports 直接make install 三天过去了最终安装成功。
现在要解决的问题也不少,如Nvidia的驱动,我哪 9600GT现在还没有发挥最好的效果,还有我的声卡,还有很多很多.........
继续build kde4 / xfce4 都用用,看看哪个用起来爽点,不过从redhat 6.2开始就使用Gnome了,已经有点习惯这个,看来要改还是比较难的
新机到现在也没有什么时间用,一直在用小本本
这机安装过MacOS for PC / 安装过 Ubuntu ,怎么用都感觉不是很爽,再加上现在所管理的服务器大多以BSD为主,想来想去,还是安装BSD来做桌面
过程很慢长...... 刚开始build,路漫漫
安装 /usr/ports/ports-mgmt/portconf/
会在/usr/local/etc/下创建 ports.conf 文件
在文件内写上make 参数,如 mysql
cat /usr/local/etc/ports.conf
databases/mysql*-server: BUILD_OPTIMIZED=yes|WITH_XCHARSET=all|BUILD_STATIC=yes
安装 portinstall databases/mysql50-server
ports的安装方法
cd /usr/ports/databases/mysql50-server/
make install clean && rehash
具体编译参数在ports.conf 里定义好就可以了,之后使用portupgrade更新起来,也不会出错了 
# top # display and update the top cpu processes
# mpstat 1 # display processors related statistics
# vmstat 2 # display virtual memory statistics
# iostat 2 # display I/O statistics (2 s intervals)
# systat -vmstat 1 # BSD summary of system statistics (1 s intervals)
# systat -tcp 1 # BSD tcp connections (try also -ip)
# systat -netstat 1 # BSD active network connections
# systat -ifstat 1 # BSD network traffic through active interfaces
# systat -iostat 1 # BSD CPU and and disk throughput
# tail -n 500 /var/log/messages # Last 500 kernel/syslog messages
# tail /var/log/warn # System warnings messages see syslog.conf
alias ls ls -GF
alias vi vim
set autolist
setenv LANG en_US.UTF-8
setenv LC_CTYPE en_US.UTF-8
来看一个简单的例子:
find /tmp/ -name 'galeki*'
意思就是在/tmp目录下找出以"galeki"开头的文件,-name指出是对文件名进行筛选,是不是很简单明了?除了文件名,find还有更强大的筛选条件:
1.时间:
参数 意义
-atime n 上一次存取时间在n*24小时前以内的文件
-ctime n 上一次状态改变在n*24小时前以内的文件
-mtime n 上一次修改时间在n*24小时前以内的文件
-newer file 比file所指的文件还要新的文件
2.大小:
参数 意义
-size n[bkMG] 大小为n(b为比特,k为KB,M为MB,G为GB)的文件
3.所有者:
参数 意义
-user name 所有者用户名称是name的文件
-group name 所有者用户组群名称是name的文件
例子:
find /tmp/ -name 'sess*' -mtime 1 #在/tmp目录下找到所有以'sess'开头、并且在一个小时以内修改过的文件
find ./ -name '*.zip' -size 546k #在当前目录下找到所有546KB的zip压缩包文件
find /tmp/ -user 'galeki' #在/tmp目录下找到所有所有者为galeki的文件
另外,还可以用"+"、"-"来进一步修饰时间和大小的条件:
find src/ -mtime +2 #找出src目录下上一次修改时间在2天以前的文件
find download/ -size +50M #在download目录下找出大于50M的文件
光找出文件还不够,我们还要对找出的文件进行处理才有意义,一般来讲可以把find的查找结果传递给其他的命令做进一步处理。find本身也提供了许多处理动作的选项。
常用的处理动作:
参数 意义
打印出找出文件的完整地址,一个文件一行
-delete
删除找出的文件
-exec command {} \;
对每一个找到的文件执行command命令,并用文件替换"{}","\;"是固定的结束符。
例子:
find /tmp/ -ctime +7 -delete #删除/tmp目录下一周以前创建的文件
find ./ -name '*.unk' -exec file {} \; #找出当前文件夹下后缀是unk的文件,并用file命令显示每个文件的文件类型
以上只是find的一些简单的用法.
现在换成了xcache+ZendOptimizer, 按照其安装方法,没有什么难度,尤其在BSD上,还是通过ports来安装
不过在重启php就出现问题了,总是报错.......
最终的解决方法是,把xcache.ini里
[xcache-common]
;; install as zend extension (recommended, but not working yet)
;; zend_extension = /usr/local/lib/php/20060613/xcache.so
; zend_extension_ts = /usr/local/lib/php/20060613/xcache.so
;; or install as extension
;;extension = xcache.so
关于用zend 扩展模式的两个加入到php.ini里在ZendOptimizer之前即可
嘿嘿......
写好的配置文件在不是自己的机器上跑服务,总是怕别有用心的人偷看并...... 加密一下
使 用 XXD
一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim
里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。
首先以二进制方式编辑这个文件:vim -b datafile
现在用 xxd 把这个文件转换成十六进制::%!xxd
文本看起来像这样:0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.00000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.
现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。
修改了十六进制部分并不导致可打印字符部分的改变,反之亦然。
最后, 用下面的命令把它转换回来::%!xxd -r
只有十六进制部分的修改才会被采用。右边可打印文本部分的修改忽略不计。
欲知更多详情,参见 xxd 手册。
克服不良的 UNIX 使用模式
developerWorks
文档选项
将此页作为电子邮件发送
将此页作为电子邮件发送
级别: 中级
Michael Stutz (stutz@dsl.org), 作者, 顾问
2007 年 2 月 09 日
采用 10 个能够提高您的 UNIX® 命令行效率的好习惯--并在此过程中摆脱不良的使用模式。本文循序渐进地指导您学习几项用于命令行操作的技术,这些技术非常好,但是通常被忽略。了解常见错误和克服它们的方法,以便您能够确切了解为何值得采用这些 UNIX 习惯。
引言
当您经常使用某个系统时,往往会陷入某种固定的使用模式。有时,您没有养成以尽可能最好的方式做事的习惯。有时,您的不良习惯甚至会导致出现混乱。纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的 UNIX 命令行习惯--帮助您克服许多常见使用怪癖,并在该过程中提高命令行工作效率的好习惯。下面列出了这 10 个好习惯,之后对进行了更详细的描述。
采用 10 个好习惯
要采用的十个好习惯为:
1. 在单个命令中创建目录树。
2. 更改路径;不要移动存档。
3. 将命令与控制操作符组合使用。
4. 谨慎引用变量。
5. 使用转义序列来管理较长的输入。
6. 在列表中对命令分组。
7. 在 find 之外使用 xargs 。
8. 了解何时 grep 应该执行计数--何时应该绕过。
9. 匹配输出中的某些字段,而不只是对行进行匹配。
10. 停止对 cat 使用管道。
在单个命令中创建目录树
清单 1 演示了最常见的 UNIX 坏习惯之一:一次定义一个目录树。
清单 1. 坏习惯 1 的示例:单独定义每个目录树
~ $ mkdir tmp
~ $ cd tmp
~/tmp $ mkdir a
~/tmp $ cd a
~/tmp/a $ mkdir b
~/tmp/a $ cd b
~/tmp/a/b/ $ mkdir c
~/tmp/a/b/ $ cd c
~/tmp/a/b/c $
使用 mkdir 的 -p 选项并在单个命令中创建所有父目录及其子目录要容易得多。但是即使对于知道此选项的管理员,他们在命令行上创建子目录时也仍然束缚于逐步创建每级子目录。花时间有意识地养成这个好习惯是值得的:
清单 2. 好习惯 1 的示例:使用一个命令来定义目录树
~ $ mkdir -p tmp/a/b/c
您可以使用此选项来创建整个复杂的目录树(在脚本中使用是非常理想的),而不只是创建简单的层次结构。例如:
清单 3. 好习惯 1 的另一个示例:使用一个命令来定义复杂的目录树
~ $ mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
过去,单独定义目录的唯一借口是您的 mkdir 实现不支持此选项,但是在大多数系统上不再是这样了。IBM、AIX®、mkdir、GNU mkdir 和其他遵守单一 UNIX 规范 (Single UNIX Specification) 的系统现在都具有此选项。
对于仍然缺乏该功能的少数系统,您可以使用 mkdirhier 脚本(请参见参考资料),此脚本是执行相同功能的 mkdir 的包装:
~ $ mkdirhier project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
更改路径;不要移动存档
另一个不良的使用模式是将 .tar 存档文件移动到某个目录,因为该目录恰好是您希望在其中提取 .tar 文件的目录。其实您根本不需要这样做。您可以随心所欲地将任何 .tar 存档文件解压缩到任何目录--这就是 -C 选项的用途。在解压缩某个存档文件时,使用 -C 选项来指定要在其中解压缩该文件的目录:
清单 4. 好习惯 2 的示例:使用选项 -C 来解压缩 .tar 存档文件
~ $ tar xvf -C tmp/a/b/c newarc.tar.gz
相对于将存档文件移动到您希望在其中解压缩它的位置,切换到该目录,然后才解压缩它,养成使用 -C 的习惯则更加可取--当存档文件位于其他某个位置时尤其如此。
回页首
将命令与控制操作符组合使用
您可能已经知道,在大多数 Shell 中,您可以在单个命令行上通过在命令之间放置一个分号 (;) 来组合命令。该分号是 Shell 控制操作符,虽然它对于在单个命令行上将离散的命令串联起来很有用,但它并不适用于所有情况。例如,假设您使用分号来组合两个命令,其中第二个命令的正确执行完全依赖于第一个命令的成功完成。如果第一个命令未按您预期的那样退出,第二个命令仍然会运行--结果会导致失败。相反,应该使用更适当的控制操作符(本文将描述其中的部分操作符)。只要您的 Shell 支持它们,就值得养成使用它们的习惯。
仅当另一个命令返回零退出状态时才运行某个命令
使用 && 控制操作符来组合两个命令,以便仅当 第一个命令返回零退出状态时才运行第二个命令。换句话说,如果第一个命令运行成功,则第二个命令将运行。如果第一个命令失败,则第二个命令根本就不运行。例如:
清单 5. 好习惯 3 的示例:将命令与控制操作符组合使用
~ $ cd tmp/a/b/c && tar xvf ~/archive.tar
在此例中,存档的内容将提取到 ~/tmp/a/b/c 目录中,除非该目录不存在。如果该目录不存在,则 tar 命令不会运行,因此不会提取任何内容。
仅当另一个命令返回非零退出状态时才运行某个命令
类似地,|| 控制操作符分隔两个命令,并且仅当第一个命令返回非零退出状态时才运行第二个命令。换句话说,如果第一个命令成功,则第二个命令不会运行。如果第一个命令失败,则第二个命令才会 运行。在测试某个给定目录是否存在时,通常使用此操作符,如果该目录不存在,则创建它:
清单 6. 好习惯 3 的另一个示例:将命令与控制操作符组合使用
~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c
您还可以组合使用本部分中描述的控制操作符。每个操作符都影响最后的命令运行:
清单 7. 好习惯 3 的组合示例:将命令与控制操作符组合使用
~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf -C tmp/a/b/c ~/archive.tar
回页首
谨慎引用变量
始终要谨慎使用 Shell 扩展和变量名称。一般最好将变量调用包括在双引号中,除非您有不这样做的足够理由。类似地,如果您直接在字母数字文本后面使用变量名称,则还要确保将该变量名称包括在方括号 ([]) 中,以使其与周围的文本区分开来。否则,Shell 将把尾随文本解释为变量名称的一部分--并且很可能返回一个空值。清单 8 提供了变量的各种引用和非引用及其影响的示例。
清单 8. 好习惯 4 的示例:引用(和非引用)变量
~ $ ls tmp/
a b
~ $ VAR="tmp/*"
~ $ echo $VAR
tmp/a tmp/b
~ $ echo "$VAR"
tmp/*
~ $ echo $VARa
~ $ echo "$VARa"
~ $ echo "${VAR}a"
tmp/*a
~ $ echo ${VAR}a
tmp/a
~ $
回页首
使用转义序列来管理较长的输入
您或许看到过使用反斜杠 (\) 来将较长的行延续到下一行的代码示例,并且您知道大多数 Shell 都将您通过反斜杠联接的后续行上键入的内容视为单个长行。然而,您可能没有在命令行中像通常那样利用此功能。如果您的终端无法正确处理多行回绕,或者您的命令行比通常小(例如在提示符下有长路经的时候),反斜杠就特别有用。反斜杠对于了解键入的长输入行的含义也非常有用,如以下示例所示:
清单 9. 好习惯 5 的示例:将反斜杠用于长输入
~ $ cd tmp/a/b/c || \
> mkdir -p tmp/a/b/c && \
> tar xvf -C tmp/a/b/c ~/archive.tar
或者,也可以使用以下配置:
清单 10. 好习惯 5 的替代示例:将反斜杠用于长输入
~ $ cd tmp/a/b/c \
> || \
> mkdir -p tmp/a/b/c \
> && \
> tar xvf -C tmp/a/b/c ~/archive.tar
然而,当您将输入行划分到多行上时,Shell 始终将其视为单个连续的行,因为它总是删除所有反斜杠和额外的空格。
注意:在大多数 Shell 中,当您按向上箭头键时,整个多行输入将重绘到单个长输入行上。
回页首
在列表中对命令分组
大多数 Shell 都具有在列表中对命令分组的方法,以便您能将它们的合计输出向下传递到某个管道,或者将其任何部分或全部流重定向到相同的地方。您一般可以通过在某个 Subshell 中运行一个命令列表或通过在当前 Shell 中运行一个命令列表来实现此目的。
在 Subshell 中运行命令列表
使用括号将命令列表包括在单个组中。这样做将在一个新的 Subshell 中运行命令,并允许您重定向或收集整组命令的输出,如以下示例所示:
清单 11. 好习惯 6 的示例:在 Subshell 中运行命令列表
~ $ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c && \
> VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \
> | mailx admin -S "Archive contents"
在此示例中,该存档的内容将提取到 tmp/a/b/c/ 目录中,同时将分组命令的输出(包括所提取文件的列表)通过邮件发送到地址 admin。
当您在命令列表中重新定义环境变量,并且您不希望将那些定义应用于当前 Shell 时,使用 Subshell 更可取。
在当前 Shell 中运行命令列表
将命令列表用大括号 ({}) 括起来,以在当前 Shell 中运行。确保在括号与实际命令之间包括空格,否则 Shell 可能无法正确解释括号。此外,还要确保列表中的最后一个命令以分号结尾,如以下示例所示:
清单 12. 好习惯 6 的另一个示例:在当前 Shell 中运行命令列表
~ $ { cp ${VAR}a . && chown -R guest.guest a && \
> tar cvf newarchive.tar a; } | mailx admin -S "New archive"
回页首
在 find 之外使用 xargs
使用 xargs 工具作为筛选器,以充分利用从 find 命令挑选的输出。find 运行通常提供与某些条件匹配的文件列表。此列表被传递到 xargs 上,后者然后使用该文件列表作为参数来运行其他某些有用的命令,如以下示例所示:
清单 13. xargs 工具的经典用法示例
~ $ find some-file-criteria some-file-path | \
> xargs some-great-command-that-needs-filename-arguments
然而,不要将 xargs 仅看作是 find 的辅助工具;它是一个未得到充分利用的工具之一,当您养成使用它的习惯时,将会希望进行所有试验,包括以下用法。
传递空格分隔的列表
在最简单的调用形式中,xargs 就像一个筛选器,它接受一个列表(每个成员分别在单独的行上)作为输入。该工具将那些成员放置在单个空格分隔的行上:
清单 14. xargs 工具产生的输出示例
~ $ xargs
a
b
c
Control-D
a b c
~ $
您可以发送通过 xargs 来输出文件名的任何工具的输出,以便为其他某些接受文件名作为参数的工具获得参数列表,如以下示例所示:
清单 15. xargs 工具的使用示例
~/tmp $ ls -1 | xargs
December_Report.pdf README a archive.tar mkdirhier.sh
~/tmp $ ls -1 | xargs file
December_Report.pdf: PDF document, version 1.3
README: ASCII text
a: directory
archive.tar: POSIX tar archive
mkdirhier.sh: Bourne shell script text executable
~/tmp $
xargs 命令不只用于传递文件名。您还可以在需要将文本筛选到单个行中的任何时候使用它:
清单 16. 好习惯 7 的示例:使用 xargs 工具来将文本筛选到单个行中
~/tmp $ ls -l | xargs
-rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf -rw-r--r-- 1 \
root root 238 Dec 03 08:19 README drwxr-xr-x 38 joe joe 354082 Nov 02 \
16:07 a -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar -rwxr-xr-x 1 \
joe joe 3239 Sep 30 12:40 mkdirhier.sh
~/tmp $
谨慎使用 xargs
从技术上讲,使用 xargs 很少遇到麻烦。缺省情况下,文件结束字符串是下划线 (_);如果将该字符作为单个输入参数来发送,则它之后的所有内容将被忽略。为了防止这种情况发生,可以使用 -e 标志,它在不带参数的情况下完全禁用结束字符串。
回页首
了解何时 grep 应该执行计数--何时应该绕过
避免通过管道将 grep 发送到 wc -l 来对输出行数计数。grep 的 -c 选项提供了对与特定模式匹配的行的计数,并且一般要比通过管道发送到 wc 更快,如以下示例所示:
清单 17. 好习惯 8 的示例:使用和不使用 grep 的行计数
~ $ time grep and tmp/a/longfile.txt | wc -l
2811
real 0m0.097s
user 0m0.006s
sys 0m0.032s
~ $ time grep -c and tmp/a/longfile.txt
2811
real 0m0.013s
user 0m0.006s
sys 0m0.005s
~ $
除了速度因素外,-c 选项还是执行计数的好方法。对于多个文件,带 -c 选项的 grep 返回每个文件的单独计数,每行一个计数,而针对 wc 的管道则提供所有文件的组合总计数。
然而,不管是否考虑速度,此示例都表明了另一个要避免地常见错误。这些计数方法仅提供包含匹配模式的行数--如果那就是您要查找的结果,这没什么问题。但是在行中具有某个特定模式的多个实例的情况下,这些方法无法为您提供实际匹配实例数量 的真实计数。归根结底,若要对实例计数,您还是要使用 wc 来计数。首先,使用 -o 选项(如果您的版本支持它的话)来运行 grep 命令。此选项仅 输出匹配的模式,每行一个模式,而不输出行本身。但是您不能将它与 -c 选项结合使用,因此要使用 wc -l 来对行计数,如以下示例所示:
清单 18. 好习惯 8 的示例:使用 grep 对模式实例计数
~ $ grep -o and tmp/a/longfile.txt | wc -l
3402
~ $
在此例中,调用 wc 要比第二次调用 grep 并插入一个虚拟模式(例如 grep -c)来对行进行匹配和计数稍快一点。
回页首
匹配输出中的某些字段,而不只是对行进行匹配
当您只希望匹配输出行中特定字段 中的模式时,诸如 awk 等工具要优于 grep。
下面经过简化的示例演示了如何仅列出 12 月修改过的文件。
清单 19. 坏习惯 9 的示例:使用 grep 来查找特定字段中的模式
~/tmp $ ls -l /tmp/a/b/c | grep Dec
-rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf
-rw-r--r-- 1 root root 238 Dec 03 08:19 README
-rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar
~/tmp $
在此示例中,grep 对行进行筛选,并输出其修改日期和名称中带 Dec 的所有文件。因此,诸如 December_Report.pdf 等文件是匹配的,即使它自从一月份以来还未修改过。这可能不是您希望的结果。为了匹配特定字段中的模式,最好使用 awk,其中的一个关系运算符对确切的字段进行匹配,如以下示例所示:
清单 20. 好习惯 9 的示例:使用 awk 来查找特定字段中的模式
~/tmp $ ls -l | awk '$6 == "Dec"'
-rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar
-rw-r--r-- 1 root root 238 Dec 03 08:19 README
~/tmp $
有关如何使用 awk 的更多详细信息,请参见参考资料。
回页首
停止对 cat 使用管道
grep 的一个常见的基本用法错误是通过管道将 cat 的输出发送到 grep 以搜索单个文件的内容。这绝对是不必要的,纯粹是浪费时间,因为诸如 grep 这样的工具接受文件名作为参数。您根本不需要在这种情况下使用 cat,如以下示例所示:
清单 21. 好习惯和坏习惯 10 的示例:使用带和不带 cat 的 grep
~ $ time cat tmp/a/longfile.txt | grep and
2811
real 0m0.015s
user 0m0.003s
sys 0m0.013s
~ $ time grep and tmp/a/longfile.txt
2811
real 0m0.010s
user 0m0.006s
sys 0m0.004s
~ $
此错误存在于许多工具中。由于大多数工具都接受使用连字符 (-) 的标准输入作为一个参数,因此即使使用 cat 来分散 stdin 中的多个文件,参数也通常是无效的。仅当您使用带多个筛选选项之一的 cat 时,才真正有必要在管道前首先执行连接。
回页首
结束语:养成好习惯
最好检查一下您的命令行习惯中的任何不良的使用模式。不良的使用模式会降低您的速度,并且通常会导致意外错误。本文介绍了 10 个新习惯,它们可以帮助您摆脱许多最常见的使用错误。养成这些好习惯是加强您的 UNIX 命令行技能的积极步骤。
参考资料
学习
* 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
* "Use free software within commercial UNIX" (developerWorks,2006 年 2 月)是一个有关在商业性专用 UNIX 实现上使用众多开放源代码软件的简短入门读物。
* "在 Bash shell 中工作"(developerWorks,2006 年 5 月)提供了关于流行的 Bash Shell 的介绍性教程。
* "GAWK 入门:AWK 语言基础"(developerWorks,2006 年 9 月)介绍了如何使用 AWK 语言来操作文本。
* "磨练构建正则表达式模式的技能"(developerWorks,2006 年 7 月)描述了使用 grep 的更有用的方法。
* 访问 developerWorks AIX and UNIX 专区以获取提高您的技能所需的资源。
* 您是 AIX 和 UNIX 新手吗?请访问"AIX and UNIX 新手入门"页以了解更多信息。
* 浏览技术书店,以了解有关这些技术主题及其他技术主题的相关书籍。
获得产品和技术
* 若要获得 mkdirhier 的副本,您可以从 Haskell compiler 下载某个版本。
讨论
* 播客:收听播客并与 IBM 技术专家保持同步。
* 访问 developerWorks 博客,从而加入到 developerWorks 社区中来。
关于作者
Michael Stutz 是 The Linux Cookbook 一书的作者,他仅使用开放源码软件对该书进行了设计和排版。他的研究兴趣包括数字出版和图书的发展未来。他使用各种 UNIX 操作系统已有 20 多年。您可以通过 stutz@dsl.org 与他联系。
2,启动中,通过ntpd进行时刻校正的同时,将各个客户端电脑的时刻也进行同期校正。
3,如果不能找到ntp服务器,那么就使用local time,同时同步客户。
全世界约有100多个ntp服务器,从下面地址找一个离你最近的
http://www.eecis.udel.edu/~mills/ntp/clock1a.html
我选择了两个
clock.nc.fukuoka-u.ac.jp 133.100.9.2 clock.tl.fukuoka-u.ac.jp 133.100.11.8
步骤:
FreeBSD中有两个标准的ntp程序,其一为ntpdate。
ntpdate通过从ntp服务器获取时刻,调整本地时刻。
# ntpdate clock.nc.fukuoka-u.ac.jp
9 Oct 18:12:23 ntpdate: step time server 133.100.9.2 offset -19.112674
大约有19秒钟的误差
自动设定
# grep ntpdate /etc/defaults/rc.conf >>/etc/rc.conf # vi /etc/rc.conf ntpdate_enable="YES" # Run ntpdate to sync time on boot (or NO). ntpdate_program="ntpdate" # path to ntpdate, if you want a different one. ntpdate_flags="clock.nc.fukuoka-u.ac.jp" # Flags to ntpdate (if enabled).
重新启动以后就运行了,当然设定没有完,不必急着启动
FreeBSD的另一个标准ntp程序,ntp
ntp程序使的获取ntp时刻的同时,向其他pc提供时刻。
添加文件ntp.conf:
用来作为标准时刻的ntp服务器我选择了两个
clock.nc.fukuoka-u.ac.jp 133.100.9.2 clock.tl.fukuoka-u.ac.jp 133.100.11.8
同时指定复数个服务器也没有问题,系统会自动选择一个可以信赖的。
这里,为避免多余的DNS数据包传递,我们直接指定IP地址。
server行 server 127.127.1.0 为参考本地时刻时用的地址。然后用fudge指定阶层编号为5,降低其优先度。
接着用restrict对每一个IP地址指定相应的规则。
最后,指定波长校正用的drift文档保存地址。关于这个命令行,具体的含义不太清楚。不过如果没有的话,时间校正起来就会比较慢
# vi /etc/ntp.conf server 133.100.9.2 #clock.nc.fukuoka-u.ac.jp server 133.100.11.8 #clock.tl.fukuoka-u.ac.jp server 127.127.1.0 fudge 127.127.0.1 stratum 5 restrict default ignore restrict 127.0.0.0 mask 255.0.0.0 restrict 192.168.1.0 mask 255.255.255.0 noquery nopeer notrust restrict 133.100.9.2 noquery restrict 133.100.11.8 noquery driftfile /etc/ntpd.drift
启动测试
# ntpd -p /var/run/ntpd.pid # tail /var/log/messages Oct 9 16:46:56 chiwawa ntpd[89409]: ntpd 4.1.0-a Thu Apr 3 08:26:24 GMT 2003 (1) Oct 9 16:46:56 chiwawa ntpd[89409]: kernel time discipline status 2040 ...... Oct 9 16:50:10 chiwawa ntpd[89409]: time set -0.189546 s
看到类似的结果就可以了。
运行测试
ntpd的运行用ntpq命令
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *clock.nc.fukuok .GPS. 1 u 43 64 37 19.067 -6.884 10.339 +clock.tl.fukuok .GPS. 1 u 36 64 35 19.670 -3.259 2.341 LOCAL(0) LOCAL(0) 5 l 45 64 37 0.000 0.000 0.001
启动后到时刻校正完成需要一点时间。*是第一候补,+是第二。 本地时刻校正完成以后就可以为其他PC提供时刻校正服务了。
自动启动的设定
完成以上设定,确认运行无误以后:
# grep ntpd /etc/defaults/rc.conf >>/etc/rc.conf # vi /etc/rc.conf xntpd_enable="YES" # Run ntpd Network Time Protocol (or NO). xntpd_program="ntpd" # path to ntpd, if you want a different one. xntpd_flags="-p /var/run/ntpd.pid" # Flags to ntpd (if enabled).
往rc.conf追加上面3行内容,并修改。
客户端PC设定:
UNIX OS # vi /etc/ntp.conf server [local ntp server IP] prefer driftfile /etc/ntpd.drift
或者追加下面内容到crontab,这样,每过一个小时0分的时候就自动更新。
# vi /etc/crontab 0 * * * * root ntpdate [ntp server IP] >/dev/null 2>&1
当然,你的主机其实也是一个客户机,这些内容也可以用上。
Windows
精工的网站上有下载软件,不过是日语的
http://www.seiko-p.co.jp/systems/down/time.html
windows2000自带了sntp机能,请自己研究吧。
BBSURL:
tongpu# portaudit -Fda
fetch: http://www.FreeBSD.org/ports/auditfile.tbz: No address record
Couldn't fetch database.
Old database restored.
portaudit: Download failed.
tongpu# dig www.freebsd.org
; <<>> DiG 9.3.3 <<>> www.freebsd.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14048
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 0
;; QUESTION SECTION:
;www.freebsd.org. IN A
;; AUTHORITY SECTION:
. 3600000 IN NS A.ROOT-SERVERS.NET.
. 3600000 IN NS B.ROOT-SERVERS.NET.
. 3600000 IN NS C.ROOT-SERVERS.NET.
. 3600000 IN NS D.ROOT-SERVERS.NET.
. 3600000 IN NS E.ROOT-SERVERS.NET.
. 3600000 IN NS F.ROOT-SERVERS.NET.
. 3600000 IN NS G.ROOT-SERVERS.NET.
. 3600000 IN NS H.ROOT-SERVERS.NET.
. 3600000 IN NS I.ROOT-SERVERS.NET.
. 3600000 IN NS J.ROOT-SERVERS.NET.
. 3600000 IN NS K.ROOT-SERVERS.NET.
. 3600000 IN NS L.ROOT-SERVERS.NET.
. 3600000 IN NS M.ROOT-SERVERS.NET.
;; Query time: 4 msec
;; SERVER: 202.96.209.5#53(202.96.209.5)
;; WHEN: Sat Jul 7 21:44:11 2007
;; MSG SIZE rcvd: 244
tongpu# ping www.freebsd.org
ping: cannot resolve www.freebsd.org: No address associated with name
tongpu69.147.83.33# cat /etc/resolv.conf
nameserver 202.96.209.5
nameserver 202.96.209.133
Pawel Jakub Dawidek pjd at FreeBSD.org
Fri Apr 6 21:43:39 UTC 2007
Ok, ZFS is now in the tree, what's now? Below you'll find some
instructions how to quickly make it up and running.
First of all you need some disks. Let's assume you have three spare SCSI
disks: da0, da1, da2.
Add a line to your /etc/rc.conf to start ZFS automatically on boot:
# echo 'zfs_enable="YES"' >> /etc/rc.conf
Load ZFS kernel module, for the first time by hand:
# kldload zfs.ko
Now, setup one pool using RAIDZ:
# zpool create tank raidz da0 da1 da2
It should automatically mount /tank/ for you.
Ok, now put /usr/ on ZFS and propose some file systems layout. I know
you probably have some files already, so we will work on /tank/usr
directory and once we ready, we will just change the mountpoint to /usr.
# zfs create tank/usr
Create ports/ file system and enable gzip compression on it, because
most likely we will have only text files there. On the other hand, we
don't want to compress ports/distfiles/, because we keep compressed
stuff already in-there:
# zfs create tank/usr/ports
# zfs set compression=gzip tank/usr/ports
# zfs create tank/usr/ports/distfiles
# zfs set compression=off tank/usr/ports/distfiles
(You do see how your life is changing, don't you?:))
Let's create home file system, my own home/pjd/ file system. I know we
use RAIDZ, but I want to have directory where I put extremly important
stuff, you I'll define that each block has to be stored in tree copies:
# zfs create tank/usr/home
# zfs create tank/usr/home/pjd
# zfs create tank/usr/home/pjd/important
# zfs set copies=3 tank/usr/home/pjd/important
I'd like to have directory with music, etc. that I NFS share. I don't
really care about this stuff and my computer is not very fast, so I'll
just turn off checksumming (this is only for example purposes! please,
benchmark before doing it, because it's most likely not worth it!):
# zfs create tank/music
# zfs set checksum=off tank/music
# zfs set sharenfs=on tank/music
Oh, I almost forget. Who cares about access time updates?
# zfs set atime=off tank
Yes, we set it only on tank and it will be automatically inherited by
others.
Will be also good to be informed if everything is fine with our pool:
# echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf
For some reason you still need UFS file system, for example you use ACLs
or extended attributes which are not yet supported by our ZFS. If so,
why not just use ZFS to provide storage? This way we gain cheap UFS
snapshots, UFS clones, etc. by simply using ZVOLs.
# zfs create -V 10g tank/ufs
# newfs /dev/zvol/tank/ufs
# mount /dev/zvol/tank/ufs /ufs
# zfs snapshot tank/ufs at 20070406
# mount -r /dev/zvol/tank/ufs at 20070406 /ufs20070406
# zfs clone tank/ufs at 20070406 tank/ufsok
# fsck_ffs -p /dev/zvol/tank/ufsok
# mount /dev/zvol/tank/ufsok /ufsok
Want to encrypt your swap and still use ZFS? Nothing more trivial:
# zfs create -V 4g tank/swap
# geli onetime -s 4096 /dev/zvol/tank/swap
# swapon /dev/zvol/tank/swap.eli
Trying to do something risky with your home? Snapshot it first!
# zfs snapshot tank/home/pjd at justincase
Turns out it was more stupid than risky? Rollback your snapshot!
# zfs rollback tank/home/pjd at justincase
# zfs destroy tank/home/pjd at justincase
Ok, everything works, we may set tank/usr as our real /usr:
# zfs set mountpoint=/usr tank/usr
Don't forget to read zfs(8) and zpool(8) manual pages and SUN's ZFS
administration guide:
http://www.opensolaris.org/os/community/zfs/docs/zfsadmin.pdf
--
Pawel Jakub Dawidek http://www.wheel.pl
pjd at FreeBSD.org http://www.FreeBSD.org
FreeBSD committer Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20070406/d16eb0ea/attachment.pgp
吃不消/老是挂/老硬盘是不咋地,一点也不保险
本来做的 gvinum raid5 跑了一段时间,只要读写一大,那硬盘的动静就大的让人吃不消.......... 而后就自个重启了
本想在办公室里放一台,平时做做试验,上面想做个自己的数据库,藏点自己的小秘密..... 现在看来是没可能喽.. 还是太平点吧
一个老机器.../加内存(128MB * 2)/加硬盘(20GB * 4) 一个硬盘用来装系统/dev/ad0 其余三块做raid5 newfs -u /dev/ad1 / ad2 / ad3 t
ouch /etc/gvinum.conf
vi /etc/gvinum.conf
drive disk1 device /dev/ad1
drive disk2 device /dev/ad2
drive disk3 device /dev/ad3
volume share plex org raid5 491k
sd drive disk1 sd drive disk2 sd drive disk3
gvinum create /etc/gvinum.conf
newfs -U /dev/gvinum/share
gvinum start share
gvinum saveconfig
add /boot/loader.confg
geomvinumload="YES"
add /etc/rc.conf start_vinum="YES"
edit /etc/fstab
/dev/gvinum/share /share ufs rw 2 2
ok 大功告成
Preamble: This document is copylefted by Fengchou Li (sl6xx@luxent.com.tw). Permission to use, copy, distribute this document for non-commerical purposes is hereby granted, provided that the author's name and this notice appear in all copies and/or supporting documents; that this document is not modified. This document is istributed in hope that it will be useful, but WITHOUT ANY WARRANTY, either expressed or implied. While every effort has been taken to ensure the accuracy of the information documented herein, the author assumes NO RESPONSIBILITY for errors, or for damages results for the use of the information documented herein. 本文作者保此文章之版权。本文件欢迎任何非商业用途之使用、复制或散布,唯需注意需附上原作者与这段注意事项,且使用者不得修改此文件。作者散布此文件的目的乃是希望此文件能够有所用处,但无论是在此文章内明白表示或由其内容意含推论而得之结果,作者皆无法保证对任何人能达到此的目的。作者已尽一切努力达成此文件内容之正确性,但任何因使用此份文件所导致之直接或间接之损害,作者将不负任何责任。 此文章献给Synnex Taichung的淑君--让我了解萧邦写作Piano Concertos Nos. 1 & 2 时的心情的人... 之前曾看到有交大(?)的同学提出以FreeBSD当Intranet Server的专题,不过似乎缺少了企业实际运用上也很需要的Fax Server。在此将自己把Linux 当Fax Server的经验拿出来与大家分享。如果您有更好的资讯,也欢迎提出来共同讨论。因为这些package在FreeBSD上也都有,所以我想,这里讨论的东西在FreeBSD上应该也可以运作无误。(虽然我也有一部FreeBSD的 Server,但是我没有在上面试过,太累了...) 这里讨论的情形,是以一部Linux当Fax Server服务多部Win95的情形。 Linux也不是不能当NT的Fax Server,只不过Respond这支client端的程式无法正确在NT底下运作。(也许有人有兴趣写一个?!)无论如何,Samba当 95/NT的File/Printer Server还是非常好用的。 基本上,用Samba当Win95的Fax Server和Printer server的方法是一样的。需要被传真出去的文件,您可以把它当成列印到网路印表机般的送给Samba Server。像其他挂在Samba底下的印表机一般,您也可以在网路芳邻上看到这部(实际上是传真机的)印表机。这部传真机收到列印的资料后,会回头来找Win95 Client问传真的电话号码,然后再把传真发送出去。至于传真的接收,是利用mgetty+sendfax把incoming的传真收下来,再用E-mail的方式转给指定的user。 您必须有一部已经架设好且可以正常运作的Samba Server。关于架设Samba 的文件已经有很多讨论了,所以就不赘述了。不过有一个小小建议,就是最好架设有WINS server,可以让您省掉很多Browse的麻烦。 其次,您也必须架设mgetty+sendfax这套软体。关于mgetty+sendfax这套软体,我不打算在这里详细讨论它。之前已有网友Steve Chen (steve.bbs@heaven.stat.tku.edu.tw)发表的大作讨论过。不过关于传真部分的设定,我还是会在下文中加以大略说明。 需要的软体如下: 1. Samba 1.9.16p11: ftp://nctuccca.edu.tw/packages/networking/samba (含samba以及BIG-5中文patch) 2. Mgetty+Sendfax : http://wais.leo.org/~doering/mgetty 3. GhostScript: ftp://ftp.cs.wisc.edu/ghost/(一般的Linux或FreeBSD 的光碟片均有附) 4. Respond 1.4a (For Win95): http://www.boerde.de/~horstf/download/resp14a.zip 5. Printfax.pl v1.3.2: http://www.boerde.de/~horstf/download/printfax.pl (当然,您的Server需装有Perl)。 6. Paint Shop Pro v4.12 (For Win95): 在Win95上看FAX用的,什么地方可以 download应该不必讲吧?! 1. Samba Server的设定 Part I 在打算提供传真服务的机器上,您必须修改smb.conf档案来增加传真服务。以我的机器为例子,有一段类似底下的设定。说类似,是因为这只是为了方便说明的初步的设定,等一下我们还会回头来加上其他的设定。 [fax] comment = Fax Server force user = root postscript = yes print command = /usr/bin/printfax.pl %I %s %U %m printable = yes printer name = fax writable = no path = /tmp valid users = sl6xx write list = sl6xx 这一段在samba上加了一台叫做fax的印表机。samba server收到client端传来的资料后,会执行/usr/bin/printfax.pl这个perl script去处理这传来的资料。 %I, %s, %U, %m等是samba的参数,请参阅samba的文件。 这里比较值得说明的是print command这一行。一般我们用samba来当 printer server,可能会写成像是 print command = lpr -s -r -P%p %s ; rm -f %s 不过因为我们要把这个share当成传真机,所以当然不能用lpr而必须找其他的程式来处理列印的资料。这个程式就是printfax.pl了。 提到printfax.pl,这是Printfax.pl v1.3.2里面的主菜:一个perl script。您在把它cp到/usr/bin底下后,还必须稍加修改里面的内容。主要是修改一些它会执行到的程式的路径。由于我的pintfax.pl已经修改很久了,也忘了改了哪些路径,麻烦大家自己找找看吧! 至于valid users,是允许哪些使用者使用这个服务。sl6xx则是我的ID,请不要照抄。(就算是作弊,也不能连名字也照抄吧! 8-)因为我们内定的读写权是 writable=no。也许您不希望每个人都能用这些设定吧! 2. 修改mgetty+sendfax的设定档: 如果按照mgetty+sendfax的内定值,装好后它的设定档应该是在 /usr/local/etc/mgetty+sendfax/底下(FreeBSD的port可能不一样吧?!) 首先在mgetty.config里面加上您的fax设定。假设我们的fax number是 04-9876543,fax modem接在COM2。现在我们想在传出去的fax表头加上 fax number 886 4 9876543,则要在mgetty.config加上这一行: fax-id 886 4 9876543 数据机的设定如下: port ttyS1 init-chat "" ATZ OK ATQ0V1E0 OK ATL0M0&K3S0=0 OK speed 115200 switchbd 19200 关于数据机的设定,mgetty+sendfax的文件里面讨论了不少,建议一定要看,不同的作业系统及不同的数据机会有不同的设法。这里写的是Linux底下,使用联强的33.6K数据机。switchbd这一行比较特殊,是针对使用 Rockwell晶片,而且传真会碰上问题的数据机。请您自个儿RTFM吧!附带一提的,联强的数据机前后用的晶片不一样,好像有Rockwell也有Cirrus的,我不清楚其他厂牌的是否也如此。此外,为何用ttyS1而不用cua1或modem, mgetty的文件有说明,若OS是FreeBSD又不一样了! 接下来修改sendfax.config。首先必须告诉mgetty用哪一部数据机(应该是说用哪一个port)来收发传真。用COM2的话,应该如此设定: fax-devices ttyS1 如果您的COM1/COM2都接上了数据机,而且都想用来收发传真的话,必须这么写: fax-devices ttyS0:ttyS1 也许您已经用mgetty+sendfax在当PPP server了。没有关系,mgetty 会自动判别。像我用Multi-Port Card就是 fax-devices ttyS16:ttyS17:ttyS18:ttyS19:ttyS20:ttyS21:ttyS22:ttyS23 别忘了,/etc/inittab里面的mgetty设定不可以加上"-D"这个参数,否则就不会接传真了。 接下来是谁可以发传真的设定。请在/usr/local/etc/mgetty+sendfax底下加上fax.allow这个档案,里面是可以发传真的user id,一行一个。 mgetty+sendfax的一堆config档案属性都必须是0600,否则mgetty不会work。 接收fax方面,在mgetty+sendfax的package里面附了一堆shell script,但是内定并没有安装,您必须在tar开mgetty的package后,自己进到 samples里面去找。我是用new_fax.mail这个script再稍加修改如下并将之 copy到/usr/local/lib/mgetty+sendfax/底下。记得档名要改成 "new_fax"。我的"new_fax"如下,只改了两个地方。faxadmin是用来收这 E-mail的alias。另外原来的script有先把fax用gzip压过,我因为要直接在 Win95底下看/印,就把它拿掉了。 #!/bin/sh # # sample script to automatically convert incoming faxes to pbm, uuencode # and gzip them, and send them to "MAILTO". # (FAX_NOTIFY_PROGRAM in policy.h) # # gert@greenie.muc.de # MAILTO="faxadmin@domain.com.tw" MAILER=/usr/lib/sendmail PATH=$PATH:/usr/local/bin G3TOPBM=g32pbm # # HUP="$1" SENDER="$2" PAGES="$3" shift 3 P=1 while [ $P -le $PAGES ] do FAX=$1 RES=`basename $FAX | sed 's/.\(.\).*/\1/'` if [ "$RES" = "n" ] then STRETCH="-s" else STRETCH="" fi ( echo "Subject: fax from $SENDER, page $P of $PAGES" echo "To: $MAILTO" echo "" $G3TOPBM $STRETCH $FAX \ | uuencode `basename $FAX`.pbm ) | $MAILER $MAILTO shift P=`expr $P + 1` done exit 0 3. Win95 Client的设定 其实原来在Samba的site上面也有一份文件,说明如何用Samba来当成Fax Server,不过您必须在送出的文件上用特殊的格式打上WFax Number,并不方便。(老实说,我没有用过那种方法!)现在我们要用的方法,则是Win95 送完资料后,回过头来让server问我们该传哪个地方。Respond 1.4a就是这样的程式。当您在Win95的机器上执行它后,它便会监听port 5555(要跑samba您的Win95至少得装上TCP/IP吧!)。当samba收到列印资料后,会执行printfax.pl来连上client的port 5555。这时Respond这支程式便会 pop out。所以Respond程式的说明就是要您在装好并执行它后,从fax server上telnet您Win95机器的port 5555,看看是否Respond是否会回应。这是个德国程式,不过有英文的说明档。 再来是该送什么资料给samba/mgetty来发传真。当您照第一步的说明设定好samba,再送个HUP的signal给smbd/nmbd后,您应该可以从Win95网路上的芳邻看到server上多了一部叫做fax的印表机。既然要送资料到印表机,当然是要新增印表机了。关键在于要让mgetty传真的资料最好是postscript 格式。所以我们就来增加一部网路上的postscript印表机吧。 请注意一下,实际上这部postscript印表机是不存在的。我们的目的是要让印出来的资料是postscript的格式。我自己是选择Apple LaserWriter。接下来是要点,因为M$的postscript implementation是很buggy的--这是和mgetty作者Gert, Mr. mgetty, Doering讨论后得出来的结果,所以我们必须把印表机的内容那一页的PostScript格式改成"保存格式"。您可以试试看其他的PostScript印表机看看。欢迎您把结果告诉我! 4. 从Win95收FAX 从Win95上面收FAX是非常简单而且直接的。由于前面说明过的设定,Mgetty 会把Fax转成pbm档再uuencode,再mail给指定的使用者。我个人是利用 Netscape 4.02来收信,(因为我用IMAP而不是POP3,您高兴也可以用其他可以直接decode的mail client,之前我就是用Internet Mail)。直接收过来 decode后,如果您有设定让Paint Shop Pro来处理pbm格式的档案的话,就可以直接看或印了。 mgetty+sendfax除了会把进来的fax转成e-mail外,所有传进传出的fax留一份在/var/spool/fax底下(包括您从Win95传过来的),我习惯把它们备份到 MO片上,再把原来的旧fax清掉。 5. Samba Server的设定Part II 其实我的smb.conf中,关于fax的设定是这个样子的: [fax] comment = Fax force user = root postscript = yes print command = /usr/bin/printfax.pl %I %s %U %m; rm %s ; /usr/local/bin/faxrunq printable = yes printer name = fax writable = no path = /tmp valid users = sl6xx write list = sl6xx 和前面不一样的地方是print command这一行多了两个指令。rm %S是把列印过去的spool暂存档案删除。这还不是要点。最重要的,是后面的faxrunq。原来mgetty在收到fax的资料后,是先spool起来,等到执行faxrunq后再拨号送出去。所以您也可以不在这边执行faxrunq,而用其它的方式,例如用 cron daemon来设定定时传送。我是习惯直接传出去所以把faxrunq直接写在 print command的最后面。 6. 后记 到此为止,应该所有的功能都能正确运作了。这样子的方式,优点当然是省钱了。软体不用钱,data/fax共用电话线,... 不过这种方式也有缺点(不知道算不算是?),就是spool起来的传真,万一要砍掉,只能从server上面去砍。这一点对我们用Linux/FreeBSD的人并不是什么大事。不过既然是用在Intranet,而且又是Win95的Client,一定是有一堆unix-phobia的user,(搞不好不止是unix-phobia,还是computer- phobia)必须靠root来帮他们。所以,对搞不定Unix的人,最简单的方法,还是在Win95底下跑Exchange然后share出来吧! 除了mgetty+sendfax以外,还有一些传真的程式,像是 efax (http://www.picante.com/~gtaylor/pht/man/efax.html), 而HylaFax(http://www.vix.com/hylafax/toc.html)也附有Win95的Client程式。不过我因为是先用mgetty架PPP Server的嘛,就顺理成章用它的fax了。也许有网友愿意来讨论一下efax、HylaFax。 这里还有一个类似功能,不过要付钱的软体:ESEMfax,详细资料可以到这里: http://www.esem.com/esemfax.html 有关mgetty+sendfax,有一个news group是专门讨论它的: de.alt.comm.mgetty。虽然是de开头,但是这一区是用英文进行讨论而非德。另外,mgetty+sendfax的作者Gert Doering实在是一个非常热心的人。 http://www.leo.org/~doering/有他帅哥的照片。如果您有mgetty+sendfax 的问题,可以用英文发email到gert@greenie.muc.de 问他。不过记得要发问之前,先把您mgetty的debug level调高一点,然后附上mgetty的log message。不知道Mr. Mgetty看到我叫一堆人去烦他会有什么感想? 7. 参考资料 Samba Man Pages: http://lake.canberra.edu.au/pub/samba/samba.html#Docs Mgetty+sendfax Documentation: http://www.leo.org/~doering/mgetty/index.html Respond README.TXT: http://www.boerde.de/~horstf/download/readme.txt Linux Printing HOWTO: http://sunsite.unc.edu/LDP/HOWTO/Printing-HOWTO.html Linux Serial HOWTO: http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html ?
[global]
encrypted passwords = yes
null passwords = yes
security = user
netbios name = TeacherNAS
workgroup = WORKGROUP
os level = 49
local master = no
server string = Teacher Network Disks Share
log level = 0
max log size = 1000
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=16384 SO_RCVBUF=16384
client code page = 936
character set = UTF-8
unix charset = UTF-8
dos charset = ASCII
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = YES
smb passwd file = /usr/local/etc/samba/smbpasswd
private dir = /usr/local/etc/samba
passdb backend = smbpasswd
[tea]
comment = 清茶 专用目录
path = /share/qingcha
public = YES browseable = NO
writeable = YES
printable = NO
invalid users = @vuser
[zylsf]
comment = 雨林之舟专用目录
path = /share/zylsf
public = YES
browseable = YES
writeable = YES
printable = NO
valid users = zylsf,tea
invalid users = vuser
[manage]
comment = Administrator login(Write And Reader)
path = /share/software
public = YES browseable = YES
writeable = YES create
mode = 0755 directory
mode = 0755
printable = NO
valid users = zylsf,tea
username map = /user/local/etc/samba/usermap.txt
[software]
comment = 软件共享目录 只读 (Only Reader)
path = /share/software
public = YES
browseable = YES
writeable = NO
printable = NO
今更新好SRC 看了一下,看到个内核名为 XBOX 哈可惜没有这样的机来试试 # # XBOX -- kernel for an XBOX # # $FreeBSD: src/sys/i386/conf/XBOX,v 1.7.2.1 2006/08/23 16:28:03 rink Exp $ machine i386 cpu I686_CPU # Celeron ident XBOX makeoptions MODULES_OVERRIDE="" options KDB options DDB options XBOX # kernel is for XBOX device xboxfb # frame buffer support device sc # syscons device fb .................
非常方便
Add /etc/rc.conf
rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_flags="-r"
nas#touch /etc/exports
/mnt/nas -alldirs -mapall=user -network 192.168.99.0 -mask 255.255.255.128 -alldirs
标记允许子目录被作为挂载点。 也就是说,客户端可以根据需要挂载需要的目录。 参考:
http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/network-nfs.html
