contents
下一节: 新闻过期 上一层: C-News 前一节: 活动文件

文章批处理

新闻批处理遵循特定的格式,这种格式对于 Bnews、C-News 和 INN 都是相同的。每个文章都以如下一行开头
           #! rnews count

其中 count 是文章的字节数。当使用批处理压缩时,生成的文件作为一个整体进行压缩,并在前面加上另一行,指示用于解压缩的消息。标准的压缩工具是 compress,它由以下标识

           #! cunbatch

有时,当必须通过邮件软件发送批处理,而该软件会删除所有数据的第八位时,压缩的批处理可以使用所谓的 c7 编码进行保护;这些批处理将以 c7unbatch 标记。

当批处理被馈送到远程站点的 rnews 时,它会检查这些标记并适当处理批处理。一些站点也使用其他压缩工具,如 gzip,并在其 gzipped 文件前加上 zunbatch。C-News 不识别像这样的非标准标头;您必须修改源代码以支持它们。

在 C-News 中,文章批处理由 /usr/lib/news/bin/batch/sendbatches 执行,它从 site/togo 文件中获取文章列表,并将它们放入多个新闻批处理中。它应该每小时执行一次,甚至更频繁,具体取决于流量。

它的操作由 /usr/lib/news 中的 batchparms 文件控制。此文件描述了每个站点允许的最大批处理大小、要使用的批处理和可选的压缩程序,以及将其传递到远程站点的传输方式。您可以按站点指定批处理参数,以及为未明确提及的站点设置一组默认参数。

要为特定站点执行批处理,您可以按如下方式调用它

           # su news -c "/usr/lib/news/bin/batch/sendbatches site"

当不带参数调用时,sendbatches 处理所有批处理队列。“all”的解释取决于 batchparms 中是否存在默认条目。如果找到默认条目,则检查 /var/spool/news/out.going 中的所有目录,否则,它会循环遍历 batchparms 中的所有条目。请注意,sendbatches 在扫描 out.going 目录时,仅将那些不包含点或 at 符号 (@) 的目录作为站点名称。

安装 C-News 时,您很可能会在您的发行版中找到一个 batchparms 文件,其中包含合理的默认条目,因此您很可能不必修改该文件。以防万一,我们仍然描述其格式。每行由六个字段组成,字段之间用空格或制表符分隔

           site size max batcher muncher transport

这些字段的含义如下

站点
是该条目应用到的站点的名称。此站点的 togo 文件必须位于新闻假脱机目录下的 out.going/togo 中。站点名称 /default/ 表示默认条目。
大小
是创建的文章批处理的最大大小(压缩前)。对于大于此大小的单个文章,C-News 会例外地将它们放在单独的批处理中。

max 是为该特定站点创建和计划传输的最大批处理数量,超过此数量批处理将停止。这在远程站点长时间宕机的情况下很有用,因为它防止 C-News 用大量的 Newsbatch 塞满您的 UUCP 假脱机目录。

C-News 使用 /usr/lib/news/bin 中的 queulen 脚本确定排队的批处理数量。Vince Skahan 的 newspak 版本应包含一个用于兼容 BNU 的 UUCP 的脚本。如果您使用不同类型的假脱机目录,例如 Taylor UUCP,您可能需要编写自己的脚本。gif

batcher 字段包含用于从 togo 文件中的文章列表生成批处理的命令。对于常规馈送,这通常是 batcher。对于其他目的,可以提供替代的批处理程序。例如,ihave/sendme 协议要求将文章列表转换为 ihave 或 sendme 控制消息,这些消息发布到新闻组 to.site。这由 batchih 和 batchsm 执行。

muncher 字段指定用于压缩的命令。通常,这是 compcun,一个生成压缩批处理的脚本。gif 或者,您可以提供一个使用 gzip 的 muncher,例如 gzipcun(为了明确:您必须自己编写它)。您必须确保远程站点上的 uncompress 已修补以识别用 gzip 压缩的文件。

如果远程站点没有 uncompress 命令,您可以指定 nocomp,它不进行任何压缩。

最后一个字段 transport 描述要使用的传输方式。许多用于不同传输的标准命令可用,它们的名称以 via 开头。sendbatches 在命令行上传递给它们目标站点名称。如果 batchparms 条目不是 /default/,它会通过剥离第一个点或斜杠及其后的任何内容,从 site 字段派生站点名称。如果条目是 /default/,则使用 out.going 中的目录名称。

有两个命令使用 uux 在远程系统上执行 rnews;viauux 和 viauuxz。后者为(旧版本的)uux 设置 -z 标志,以防止它为每个交付的文章返回成功消息。另一个命令 viamail 通过邮件将文章批处理发送到远程系统上的用户 rnews。当然,这要求远程系统以某种方式将其所有发往 rnews 的邮件馈送到其本地新闻系统。有关这些传输方式的完整列表,请参阅 newsbatch(8) 手册页。

最后三个字段中的所有命令必须位于 out.going/site 或 /usr/lib/news/bin/batch 中。它们中的大多数是脚本,因此您可以轻松地为您的个人需求定制新工具。它们作为管道调用。文章列表被馈送到标准输入上的 batcher,后者在标准输出上生成批处理。然后将其通过管道传递到 muncher,依此类推。

下面给出了一个示例文件。

           # batchparms file for the brewery
           # site        | size   |max    |batcher  |muncher    |transport
           #-------------+--------+-------+---------+-----------+-----------
           /default/       100000  22      batcher   compcun     viauux
           swim             10000  10      batcher   nocomp      viauux

contents
下一节: 新闻过期 上一层: C-News 前一节: 活动文件

Andrew Anderson
1996 年 3 月 7 日星期四 23:22:06 EST