|
|
第 91 帖 | |
|
|
strings--显示文件中的可打印字符
__________________
雪中兜售空心菜 只为过个快乐年 ------------------------------------------------- |- AMD 3000+ ATI9550 KINGSTON 1G |- MATOR 80G 千兆网卡 7.1声道 以上03年至今未变 宠辱不惊,看庭前花开花落 去留无意,望天上云卷云舒 --------------------------------------------------- 我天生就是一个要和错误抗战一生的人 |
|
|
|
|
|
|
|
第 92 帖 | |
|
|
名称
stty - 改变并打印终端行设置 总览 stty [-F device] [--file=device] [SETTING]... stty [-F device] [--file=device] [-a|--all] stty [-F device] [--file=device] [-g|--save] 描述 quot; Add any additional description here 打印或改变终端属性. -a, --all 以可读的格式打印当前的所有设置 -g, --save 以终端可读的格式打印当前的所有设置 -F, --file 打开指定的设备,并用此设备作为输入来代替标准输入 --help 显示帮助并退出 --version 显示版本信息并退出 选项-在SETTING之前使用这些选项将被视为无效 星号*表明是非POSIX设置. 以下是一些系统定义了的可用设置: 特殊字符 * dsusp CHAR CHAR表示输入满时,发一个停止信号给终端 eof CHAR CHAR表示一个文件结束 (结束输入) eol CHAR CHAR表示当前行结束 * eol2 CHAR CHAR是另一个表示结束当前行的字符 erase CHAR CHAR表示擦除最后一个输入字符 intr CHAR CHAR表示发一个中断信号 kill CHAR CHAR表示擦除当前行 * lnext CHAR CHAR表示输入下一个字符 quit CHAR CHAR表示发出一个退出信号 * rprnt CHAR CHAR表示刷新当前行 start CHAR CHAR表示在停止输出后重新开始输出 stop CHAR CHAR表示停止输出 susp CHAR CHAR表示发送一个终端停止信号 * swtch CHAR CHAR表示切换到不同的外壳层 * werase CHAR CHAR表示擦除已经输入的最后一个单词 特殊设置 N 把输入和输出的波特率设为N * cols N 通知内核终端有N列 * columns N 与cols N 相同 ispeed N 设置输入速度为N * line N 用行约束规则N min N 用 -icanon, 设置一次完整的读操作最小为N个字符 ospeed N 设置输出速度为N * rows N 通知内核终端有N行 * size 根据内核打印出终端的行数和列数 speed 打印出终端的速度 time N 同时用 -icanon, 设置读超时为十分之N秒 控制设置 [-]clocal 关闭解调器的控制信号 [-]cread 允许接收输入 * [-]crtscts 允许 RTS/CTS 的握手 csN 把字符长度设为N, N 为[5..8] [-]cstopb 对每字符使用两个停止位 (一个带有 `-') [-]hup 当最后一个进程关闭终端后,发一个挂起信号 [-]hupcl 同 [-]hup [-]parenb 在输出中产生奇偶校验位,并要求在输入中也有奇偶校验位 [-]parodd 设置奇校验 (偶校验用 `-') 输入设置: [-]brkint 暂停并产生中断信号 [-]icrnl 将回车解释为换行 [-]ignbrk 忽略中断信号 [-]igncr 忽略回车符 [-]ignpar 忽略有奇偶校验错的字符 * [-]imaxbel 对一个字符产生嘟叫,但不刷新已满的输入缓冲区 [-]inlcr 将换行解释为回车 [-]inpck 打开输入奇偶校验 [-]istrip 清除输入字符的高位(第8位) * [-]iuclc 将大写字符转换成小写字符 * [-]ixany 使任何字符都重新开始输出(而 不仅仅是重新输出字符能实现此功能) [-]ixoff 打开发送开始/停止字符的开关 [-]ixon 打开XON/XOFF的流量控制 [-]parmrk 标记奇偶校验错误 (使用255-0-character 字符序列) [-]tandem 同 [-]ixoff 输出设置: * bsN 回退延迟, N 为 [0..1] * crN 回车延迟, N 为 [0..3] * ffN 换页延迟, N 为 [0..1] * nlN 换行延迟, N 为 [0..1] * [-]ocrnl 将回车解释为换行 * [-]ofdel 使用删除字符来填充,而不是用空字符填充 * [-]ofill 使用填充字符,不使用定时延迟 * [-]olcuc 将小写字符转换成大写 * [-]onlcr 将换行解释为回车-换行 * [-]onlret 换行执行一次回车 * [-]onocr 不在第一列打印回车 [-]opost postprocess 输出 * tabN 水平tab键延迟, N 为 [0..3] * tabs 同tab0 * -tabs 同tab3 * vtN 垂直方向tab键延迟。。。, N 为 [0..1] 本地设置: [-]crterase 将擦除字符显示为:退格-空格-退格 * crtkill 根据echoprt和echoe的设置去除所有行 * -crtkill 根据echoctl和echok设置去除所有行 * [-]ctlecho 在头部符号中显示控制字符'^c') [-]echo 显示输入字符 * [-]echoctl 同 [-]ctlecho [-]echoe 同[-]crterase [-]echok 在一个杀死字符后显示一个换行 * [-]echoke 同 [-]crtkill [-]echonl 即使不显示其它字符也换行 * [-]echoprt 向后显示在 '' 和 '/'之间的擦除字符 [-]icanon 打开 erase, kill, werase, 和 rprnt 这些特殊字符 [-]iexten 打开 非POSIX 特殊字符 [-]isig 打开中断,退出和挂起这些特殊字符 [-]noflsh 在中断和退出这些特殊字符后禁止刷新 * [-]prterase 同 [-]echoprt * [-]tostop 停止试图写终端的后台作业 * [-]xcase 与icanon同时使用, 表示用`'退出大写状态 综合设置: * [-]LCASE 同 [-]lcase cbreak 同 -icanon -cbreak 同 icanon cooked 同 brkint ignpar istrip icrnl ixon opost isig icanon, eof 和 eol 字符被设为默认值 -cooked 同 raw crt 同 echoe echoctl echoke dec 同 echoe echoctl echoke -ixany intr ^c erase 0177 kill ^u * [-]decctlq 同 [-]ixany ek 将擦除,杀死字符设为它们的默认值 evenp 同 parenb -parodd cs7 -evenp 同 -parenb cs8 * [-]lcase 同 xcase iuclc olcuc litout 同 fB-parenb -istrip -opost cs8 -litout 同 parenb istrip opost cs7 nl 同 -icrnl -onlcr -nl 同 icrnl -inlcr -igncr onlcr -ocrnl -onlret oddp 同 parenb parodd cs7 -oddp 同 -parenb cs8 [-]parity 同 [-]evenp pass8 同 -parenb -istrip cs8 -pass8 同 parenb istrip cs7 raw 同 -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuc lc -ixany -imaxbel -opost -isig -icanon -xcase min 1 ti me 0 -raw 同 cooked sane 同 cread -ignbrk brkint -inlcr -igncr icrnl -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff 0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke, 所有特殊字符使用缺省值. 本命令处理连接到标准输入的终端行.如不带参数,则输出波特率, 行的约束规则,以及与健全的stty相背离的设置.在设置中, CHAR 是逐字读取的, 或是象 ^c, 0x37, 0177 或127这样的编码; 特殊值 ^- 或未定义被用来禁止特殊字符. 报告臭虫 报告臭虫向. 参见 完整的文档 stty 保持为Texinfo手册. 如果 info 及 stty 在你的机器上正确安装的话, 命令 info stty 会使你能够读取完整的手册. 版权 Copyright ?1999 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
|
|
|
|
|
|
第 93 帖 | |
|
|
su--运行替换用户和组标识的shell
|
|
|
|
|
|
|
|
第 94 帖 | |
|
|
NAME 名称
sync - 同步内存与磁盘的数据 总览 sync [--help] [--version] 描述 sync 把任何在内存中缓冲的数据写到磁盘上。这能包括(但不仅限于)修改了的超级块, i 节点,和延迟的读写。这必须由内核执行; sync 除了执行 sync(2) 系统调用外什么都不做. 内核把数据保持在内存里以避免磁盘读写(磁盘相对来说比较慢)这能改进性能,但如果计算机跨掉,结果就可能是数据丢失,或者文件系统损坏. sync 保证任把何在内存里的东西写入磁盘. sync 应该在处理器异常停止前调用 (例如,在因为调试新的内核代码引起内核恐慌(?可能是灾难发生吧)之前) 一般而言,处理器应该使用 shutdown(8) 或者 reboot(8) 或者 halt(8) 命令来停止, 那会试图,在调用 sync(2) 前让系统处于静止状态. (这些命令有好几种不同的实现,请参考你的文档,在一些系统上你不能直接调用 reboot(8) 和 halt(8) GNU 标准选项 --help 在标准输出上印出用法信息并退出。 --version 在标准输出上印出版本信息并退出。 -- 结束选项列表 环境(变量) 变量 LANG, LC_ALL, LC_CTYPE 和 LC_MESSAGES 有通常的意义. 遵循 POSIX 1003.2 注意 在 Linux 上, sync 仅保证安排脏数据块进入等待:实际上在真正写入前要花费一点时间. reboot(8) 和 halt(8) 在调用 sync(2) 之后会睡眠几秒以考虑这些延时. 这份 sync 的描述可以在 fileutils-4.0 包你找到; 其他版本也许有些微的差别. 把修正和新增邮到 aeb@cwi.nl. 程序缺陷邮到 fileutils-bugs@gnu.ai.mit.edu. 又见 sync(2), halt(8), reboot(8), update(8) [中文版维护人] Scorpio <rawk@chinese.com> [中文版最新更新] 2000/11/26 |
|
|
|
|
|
|
|
第 95 帖 | |
|
|
命令名
tar - tar 档案文件管理程序的 GNU 版本。 总览 tar [ - ] A --catenate --concatenate | c --create | d --diff --compare | r --append | t --list | u --update | x -extract --get [ --atime-preserve ] [ -b, --block-size N ] [ -B, --read-full-blocks ] [ -C, --directory DIR ] [ --checkpoint ] [ -f, --file [HOSTNAME:]F ] [ --force-local ] [ -F, --info-script F --new-volume-script F ] [ -G, --incremental ] [ -g, --listed-incremental F ] [ -h, --dereference ] [ -i, --ignore-zeros ] [ -I, --bzip ] [ --ignore-failed-read ] [ -k, --keep-old-files ] [ -K, --starting-file F ] [ -l, --one-file-system ] [ -L, --tape-length N ] [ -m, --modification-time ] [ -M, --multi-volume ] [ -N, --after-date DATE, --newer DATE ] [ -o, --old-archive, --portability ] [ -O, --to-stdout ] [ -p, --same-permissions, --preserve-permissions ] [ -P, --absolute-paths ] [ --preserve ] [ -R, --record-number ] [ --remove-files ] [ -s, --same-order, --preserve-order ] [ --same-owner ] [ -S, --sparse ] [ -T, --files-from F ] [ --null ] [ --totals ] [ -v, --verbose ] [ -V, --label NAME ] [ --version ] [ -w, --interactive, --confirmation ] [ -W, --verify ] [ --exclude FILE ] [ -X, --exclude-from FILE ] [ -Z, --compress, --uncompress ] [ -z, --gzip, --ungzip ] [ --use-compress-program PROG ] [ --block-compress ] [ -[0-7][lmh] ] filename1 [ filename2, ... filenameN ] directory1 [ directory2, ...directoryN ] 描述 tar 程序用于储存或展开 tar 存档文件。存档文件可放在磁盘中 ,也可以存为普通文件。 tar是需要参数的,可选的参数是A、c、d、r、t、u、x,您在使用tar时必须首先为 tar 指定至少一个参数;然后,您必须指定要处理的文件或目录。如果指定一个目录则该目录下的所有子目录都将被加入存档。 应用举例: 1)展开 abc.tar.gz 使用命令: tar xvzf abc.tar.gz 展开 abc.tar 使用命令: tar xvf abc.tar 2)将当前目录下的 man 目录及其子目录存成存档 man.tar tar cf man.tar ./man 参数说明 运行tar时必须要有下列参数中的至少一个才可运行 -A, --catenate, --concatenate 将一存档与已有的存档合并 -c, --create 建立新的存档 -d, --diff, --compare 比较存档与当前文件的不同之处 --delete 从存档中删除 -r, --append 附加到存档结尾 -t, --list 列出存档中文件的目录 -u, --update 仅将较新的文件附加到存档中 -x, --extract, --get 从存档展开文件 其他参数 --atime-preserve 不改变转储文件的存取时间 -b, --block-size N 指定块大小为 Nx512 字节(缺省时 N=20) -B, --read-full-blocks 读取时重组块(???!!!) -C, --directory DIR 转到指定的目录 --checkpoint 读取存档时显示目录名 -f, --file [HOSTNAME:]F 指定存档或设备 (缺省为 /dev/rmt0) --force-local 强制使用本地存档,即使存在克隆 -F, --info-script F --new-volume-script F 在每个磁盘结尾使用脚本 F (隐含 -M) -G, --incremental 建立老 GNU 格式的备份 -g, --listed-incremental F 建立新 GNU 格式的备份 -h, --dereference 不转储动态链接,转储动态链接指向的文件。 -i, --ignore-zeros 忽略存档中的 0 字节块(通常意味着文件结束) --ignore-failed-read 在不可读文件中作 0 标记后再退出??? -k, --keep-old-files 保存现有文件;从存档中展开时不进行覆盖 -K, --starting-file F 从存档文件 F 开始 -l, --one-file-system 在本地文件系统中创建存档 -L, --tape-length N 在写入 N*1024 个字节后暂停,等待更换磁盘 -m, --modification-time 当从一个档案中恢复文件时,不使用新的时间标签 -M, --multi-volume 建立多卷存档,以便在几个磁盘中存放 -N, --after-date DATE, --newer DATE 仅存储时间较新的文件 -o, --old-archive, --portability 以 V7 格式存档,不用 ANSI 格式 -O, --to-stdout 将文件展开到标准输出 -p, --same-permissions, --preserve-permissions 展开所有保护信息 -P, --absolute-paths 不要从文件名中去除 '/' --preserve like -p -s 与 -p -s 相似 -R, --record-number 显示信息时同时显示存档中的记录数 --remove-files 建立存档后删除源文件 -s, --same-order, --preserve-order ??? --same-owner 展开以后使所有文件属于同一所有者 -S, --sparse 高效处理 -T, --files-from F 从文件中得到要展开或要创建的文件名 --null 读取空结束的文件名,使 -C 失效 --totals 显示用 --create 参数写入的总字节数 -v, --verbose 详细显示处理的文件 -V, --label NAME 为存档指定卷标 --version 显示 tar 程序的版本号 -w, --interactive, --confirmation 每个操作都要求确认 -W, --verify 写入存档后进行校验 --exclude FILE 不把指定文件包含在内 -X, --exclude-from FILE 从指定文件中读入不想包含的文件的列表 -y, --bzip2, --bunzip2 用 bzip2 对存档压缩或解压 -Z, --compress, --uncompress 用 compress 对存档压缩或解压 -z, --gzip, --ungzip 用 gzip 对存档压缩或解压 --use-compress-program PROG 用 PROG 对存档压缩或解压 ( PROG 需能接受 -d 参数) --block-compress 为便于磁盘存储,按块记录存档 -[0-7][lmh] 指定驱动器和密度[高中低] |
|
|
|
|
|
|
|
第 96 帖 | |
|
|
NAME(名称)
tail - 输出文件的末尾部分 SYNOPSIS(总览) ../src/tail [OPTION]... [FILE]... DESCRIPTION(描述) 在标准输出上显示每个FILE的最后10行. 如果多于一个FILE,会一个接一个地显示, 并在每个文件显示的首部给出文件名. 如果没有FILE,或者FILE是-,那么就从标准输入上读取. --retry 即使tail开始时就不能访问或者在tail运行后不能访问,也仍然不停地尝试打开文件. -- 只与-f合用时有用. -c, --bytes=N 输出最后N个字节 -f, --follow[={name|descriptor}] 当文件增长时,输出后续添加的数据; -f, --follow以及 --follow=descriptor 都是相同的意思 -n, --lines=N 输出最后N行,而非默认的最后10行 --max-unchanged-stats=N 参看texinfo文档(默认为5) --max-consecutive-size-changes=N 参看texinfo文档(默认为200) --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束. -q, --quiet, --silent 从不输出给出文件名的首部 -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒 -v, --verbose 总是输出给出文件名的首部 --help 显示帮助信息后退出 --version 输出版本信息后退出 如果N(字节或者行数)的第一个字符为`+', 那么从每个文件的开头算起的第N项开始显示, 否则, 显示该文件的最后N项. N可以有一个倍数前缀: b表示512,k表示1024,m表示1048576(1兆). 第一个选项 -VALUE 或+VALUE 以-n VALUE或-n +VALUE 方式看待,除非VALUE含有[bkm]后缀倍数中的一个,在这种情况下,它被看作 -c VALUE 或者-c +VALUE 使用--follow (-f)时,tail默认后接文件描述符, 这意味着即使tail显示的文件改名了,tail仍然可以追踪到其末尾部分. 如果你确实希望查询文件的实际名而非文件描述符 (例如,日志轮转时), 这种默认的操作就不是你所期望的了. 在这种情况下应使用--follow=name. 这将导致tail通过周期性地重新打开所指定的文件来追踪其是否被删除了,或者被其他程序重新创建了. AUTHOR(作者) Paul Rubin, David MacKenzie, Ian Lance Taylor和Jim Meyering. REPORTING BUGS(报告BUGS) 请报告bugs到<bug-textutils@gnu.org>. COPYRIGHT(版权) Copyright ?1999 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. SEE ALSO(另见) tail 的完整文档是以Texinfo手册形式维护的. 如果 info 和 tail 程序在你那儿都已经安装好了,那么命令 info tail 应该会让你访问到整篇手册. [中文版维护人] riser E-mail:boomer@ccidnet.com [中文版最新更新] 2001/8/8 |
|
|
|
|
|
|
|
第 97 帖 | |
|
|
名称 (NAME)
tcpdump - 转储网络上的数据流 总览 (SYNOPSIS) tcpdump [ -adeflnNOpqStvx ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ expression ] 描述 (DESCRIPTION) Tcpdump 打印出 在某个 网络界面 上, 匹配 布尔表达式 expression 的 报头. 对于 SunOS 的 nit 或 bpf 界面: 要 运行 tcpdump , 你 必须 有 /dev/nit 或 /dev/bpf* 的 读访问 权限. 对于 Solaris 的 dlpi: 你 必须 有 网络仿真设备 (network pseudo device), 如 /dev/le 的 读访问 权限. 对于 HP-UX 的 dlpi: 你 必须 是 root, 或者 把它 安装成 root 的 设置uid 程序. 对于 IRIX 的 snoop: 你 必须 是 root, 或者 把它 安装成 root 的 设置uid 程序. 对于 Linux: 你 必须 是 root, 或者 把它 安装成 root 的 设置uid 程序. 对于 Ultrix 和 Digital UNIX: 一旦 超级用户 使用 pfconfig(8) 开放了 promiscuous 操作模式 (promiscuous-mode), 任何用户 都可以 运行 tcpdump. 对于 BSD: 你 必须 有 /dev/bpf* 的 读访问 权限. 选项 (OPTIONS) -a 试着 把 网络和广播地址 转换成 名称. -c 当 收到 count 报文 后 退出. -d 把 编译好的 报文匹配模板 (packet-matching code) 翻译成 可读形式, 传往 标准输出, 然后退出. -dd 把 报文匹配模板 (packet-matching code) 以 C 程序片断 的 形式 输出. -ddd 把 报文匹配模板 (packet-matching code) 以 十进制数 形式 输出 (前面 加上 总数). -e 每行 都 显示 链路层报头. -f 用 数字形式 显示 '外部的' 互联网地址, 而不是 字符形式 (这个 选项 用来绕开 脑壳坏光的 SUN 黄页服务器 的 问题 --- 一般说来 它 翻译 外部网络数字地址 的时候 会 长期挂起). -F 把 file 的内容 用作 过滤表达式. 忽略 命令行 上 的 表达式. -i 监听 interface. 如果 不指定 接口, tcpdump 在 系统 的 接口 清单 中, 寻找 号码最小, 已经 配置好的 接口 (loopback 除外). 选中的时候 会 中断 连接. -l 行缓冲 标准输出. 可用于 捕捉 数据 的 同时 查看 数据. 例如, ``tcpdump -l | tee dat'' or ``tcpdump -l > dat & tail -f dat''. -n 别把 地址 转换成 名字 (就是说, 主机地址, 端口号等) -N 不显示 主机名字 中的 域名 部分. 例如, 如果 使用 这个 选项, tcpdump 只显示 ``nic'', 而不是 ``nic.ddn.mil''. -O 禁止运行 报文匹配模板 的 优化器. 只有 当你 怀疑 优化器 有 bug 时 才有用. -p 禁止 把 接口 置成 promiscuous 模式. 注意, 接口 有可能 因 其他原因而 处于 promiscuous 模式; 因此, '-p' 不能 作为 `ether host {local-hw-addr} 或 ether broadcast' 的 简写. -q 快速输出. 显示 较少的 协议信息, 输出行 会 短一点点. -r 从 file 中 读入 数据报 (文件 是用 -w 选项 创建的). 如果 file 是 ``-'', 就 读 标准输入. -s 从每个 报文 中 截取 snaplen 字节的数据, 而不是 缺省的 68 (如果是 SunOS 的 NIT, 最小值是 96). 68 个字节 适用于 IP, ICMP, TCP 和 UDP, 但是 有可能 截掉 名字服务器 和 NFS 报文 的 协议 信息 (见下面). 输出时 如果指定 ``[|proto]'', tcpdump 可以 指出 那些 捕捉量过小的 数据报, 这里的 proto 是 截断发生处 的 协议层 名称. 注意, 采用 更大的 捕捉范围 既增加了 处理 报文 的 时间, 又 相应的 减少了报文的 缓冲 数量, 可能 导致 报文的丢失. 你 应该 把 snaplen 设的尽量小, 只要 能够 容纳 你 需要 的 协议信息 就可以了. -T 把 通过 "expression" 挑选出来的 报文 解释成 指定的 type. 目前 已知 的 类型 有: rpc (远程过程调用 Remote Procedure Call), rtp (实时应用协议 Real-Time Applications protocol), rtcp (实时应用控制协议 Real-Time Applications control protocol), vat (可视音频工具 Visual Audio Tool), 和 wb (分布式白板 distributed White Board). -S 显示 绝对的, 而不是 相对的 TCP 序列号. -t 禁止 显示 时戳标志. -tt 显示 未格式化的 时戳标志. -v (稍微多一点) 繁琐的输出. 例如, 显示 IP 数据报 中的 生存周期 和 服务类型. -vv 更繁琐的输出. 例如, 显示 NFS 应答报文 的 附加域. -w 把 原始报文 存进 file, 而不是 分析 和 显示. 它们 可以 以后 用 -r 选项 显示. 如果 file 是 ``-'', 就 写往 标准输出. -x 以 16 进制数 形式 显示 每一个 报文 (去掉链路层报头后) . 可以 显示 较小的 完整 报文, 否则 只 显示 snaplen 个 字节 . expression 用来 选择 要 转储 的 数据报. 如果 没有 指定 expression , 就 转储 网络的 全部 报文. 否则, 只转储 相对 expression 为 `true' 的 数据报. expression 一个或多个 原语 (primitive) 组成. 原语 通常 由 一个 标识 (id, 名称或数字), 和 标识 前面的 一个或多个 修饰子(qualifier) 组成. 修饰子 有 三种 不同的类型: type 类型修饰子 指出 标识名称 或 标识数字 代表 什么 类型的东西. 可以使用的 类型 有 host, net 和 port. 例如, `host foo', `net 128.3', `port 20'. 如果 不指定 类型修饰子, 就使用 缺省的 host . dir 方向修饰子 指出 相对于 标识 的 传输方向 (数据是 传入还是传出 标识). 可以使用的 方向 有 src, dst, src or dst 和 src and dst. 例如, `src foo', `dst net 128.3', `src or dst port ftp-data'. 如果 不指定 方向修饰子, 就使用 缺省的 src or dst . 对于 `null' 链路层 (就是说 象 slip 之类的 点到点 协议), 用 inbound 和 outbound 修饰子 指定 所需的 传输方向. proto 协议修饰子 要求 匹配 指定的协议. 可以使用的 协议 有: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp 和 udp. 例如, `ether src foo', `arp net 128.3', `tcp port 21'. 如果 不指定协议修饰子, 就使用 所有 符合 类型 的 协议. 例如, `src foo' 指 `(ip 或 arp 或 rarp) src foo' (注意后者不符合语法), `net bar' 指 `(ip 或 arp 或 rarp) net bar', `port 53' 指 `(tcp 或 udp) port 53'. [`fddi' 实际上 是 `ether' 的 别名; 分析器 把 它们 视为 ``用在 指定 网络接口 上的 数据链路层.'' FDDI 报头 包含 类似于 以太协议的 源目地址, 而且 通常 包含 类似于 以太协议 的 报文类型, 因此 你 可以过滤 FDDI 域, 就象 分析 以太协议 一样. FDDI 报头 也 包含 其他 域, 但是你 不能 在 过滤器 表达式 里 显式描述.] 作为 上述 的 补充, 有一些 特殊的 `原语' 关键字, 它们 不同于 上面的模式: gateway, broadcast, less, greater 和 数学表达式. 这些 在 后面 有 叙述. 更复杂的 过滤器表达式 可以 通过 and, or 和 not 连接 原语 来 组建. 例如, `host foo and not port ftp and not port ftp-data'. 为了少敲点键, 可以忽略 相同的 修饰子. 例如, `tcp dst port ftp or ftp-data or domain' 实际上 就是 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'. 允许的 原语 有: dst host host 如果 报文中 IP 的 目的地址域 是 host, 则 逻辑 为 真. host 既可以 是 地址, 也可以 是 主机名. src host host 如果 报文中 IP 的 源地址域 是 host, 则 逻辑 为 真. host host 如果 报文中 IP 的 源地址域 或者 目的地址域 是 host, 则 逻辑 为 真. 上面 所有的 host 表达式 都可以 加上 ip, arp, 或 rarp 关键字 做 前缀, 就象: ip host host 它等价于: ether proto \ip and host host 如果 host 是 拥有 多个 IP 地址 的 主机名, 它的 每个地址 都会 被查验. ether dst ehost 如果 报文的 以太目的地址 是 ehost, 则 逻辑 为 真. Ehost 既可以是 名字 (/etc/ethers 里有), 也可以是 数字 (有关 数字格式 另见 ethers(3N) ). ether src ehost 如果 报文的 以太源地址 是 ehost, 则 逻辑 为 真. ether host ehost 如果 报文的 以太源地址 或 以太目的地址 是 ehost, 则 逻辑 为 真. gateway host 如果 报文 把 host 当做 网关, 则 逻辑 为 真. 也就是说, 报文的以太源或目的地址 是 host, 但是 IP 的 源目地址 都不是 host. host 必须 是个 主机名, 而且 必须 存在 /etc/hosts 和 /etc/ethers 中. (一个等价的表达式是 ether host ehost and not host host 对于 host / ehost, 它既可以是 名字, 也可以是 数字.) dst net net 如果 报文的 IP 目的地址 属于 网络号 net, 则 逻辑 为 真. net 既可以 是 名字 (存在 /etc/networks 中), 也可以是 网络号. (详见 networks(4)). src net net 如果 报文的 IP 源地址 属于 网络号 net, 则 逻辑 为 真. net net 如果 报文的 IP 源地址 或 目的地址 属于 网络号 net, 则 逻辑 为 真. net net mask mask 如果 IP 地址 匹配 指定 网络掩码(netmask) 的 net, 则 逻辑 为 真. 本原语 可以用 src 或 dst 修饰. net net/len 如果 IP 地址 匹配 指定 网络掩码 的 net, 则 逻辑 为 真, 掩码 的 有效位宽 为 len. 本原语 可以用 src 或 dst 修饰. dst port port 如果 报文 是 ip/tcp 或 ip/udp, 并且 目的端口 是 port, 则 逻辑 为 真. port 是一个 数字, 也可以是 /etc/services 中 说明过的 名字 (参看 tcp(4P) 和 udp(4P)). 如果 使用 名字, 则 检查 端口号 和 协议. 如果 使用 数字, 或者 有二义的名字, 则 只检查 端口号 (例如, dst port 513 将显示 tcp/login 的数据 和 udp/who 的数据, 而 port domain 将显示 tcp/domain 和 udp/domain 的数据). src port port 如果 报文 的 源端口号 是 port, 则 逻辑 为 真. port port 如果 报文 的 源端口 或 目的端口 是 port, 则 逻辑 为 真. 上述的 任意一个 端口表达式 都可以 用 关键字 tcp 或 udp 做 前缀, 就象: tcp src port port 它 只匹配 源端口 是 port 的 TCP 报文. less length 如果 报文 的 长度 小于等于 length, 则 逻辑 为 真. 它等同于: len <= length. greater length 如果 报文 的 长度 大于等于 length, 则 逻辑 为 真. 它等同于: len >= length. ip proto protocol 如果 报文 是 IP 数据报(参见 ip(4P)), 其 内容 的 协议类型 是 protocol, 则 逻辑 为 真. Protocol 可以是 数字, 也可以是 下列 名称 中的 一个: icmp, igrp, udp, nd, 或 tcp. 注意 这些 标识符 tcp, udp, 和 icmp 也同样是 关键字, 所以 必须 用 反斜杠(\) 转义, 在 C-shell 中 应该是 \\ . ether broadcast 如果 报文 是 以太广播报文, 则 逻辑 为 真. 关键字 ether 是 可选的. ip broadcast 如果 报文 是 IP广播报文, 则 逻辑 为 真. Tcpdump 检查 全0 和 全1 广播约定, 并且 检查 本地 的 子网掩码. ether multicast 如果 报文 是 以太多目传送报文(multicast), 则 逻辑 为 真. 关键字 ether 是 可选的. 这实际上 是 `ether[0] & 1 != 0' 的简写. ip multicast 如果 报文 是 IP多目传送报文, 则 逻辑 为 真. ether proto protocol 如果 报文协议 属于 以太类型 的 protocol, 则 逻辑 为 真. Protocol 可以是 数字, 也可以是 名字, 如 ip, arp, 或 rarp. 注意 这些 标识符 也是 关键字, 所以 必须 用 反斜杠(\) 转义. [如果是 FDDI (例如, `fddi protocol arp'), 协议 标识 来自 802.2 逻辑链路控制(LLC)报头, 它 通常 位于 FDDI 报头 的 顶层. 当 根据 协议标识过滤 报文 时, Tcpdump 假设 所有的 FDDI 报文 含有 LLC 报头, 而且 LLC 报头 用的是 SNAP 格式.] decnet src host 如果 DECNET 的 源地址 是 host, 则 逻辑 为 真, 该 主机地址 的 形式 可能 是 ``10.123'', 或者是 DECNET 主机名. [只有 配置成 运行 DECNET 的 Ultrix 系统 支持 DECNET 主机名.] decnet dst host 如果 DECNET 的 目的地址 是 host, 则 逻辑 为 真. decnet host host 如果 DECNET 的 源地址 或 目的地址 是 host, 则 逻辑 为 真. ip, arp, rarp, decnet 是: ether proto p 的 简写 形式, 其中 p 为 上述 协议 的 一种. lat, moprc, mopdl 是: ether proto p 的 简写 形式, 其中 p 为 上述 协议 的 一种. 注意 tcpdump 目前 不知道 如何 分析 这些 协议. tcp, udp, icmp 是: ip proto p 的 简写 形式, 其中 p 为 上述 协议 的 一种. expr relop expr 如果 这个 关系 成立, 则 逻辑 为 真, 其中 relop 是 >, <, >=, <=, =, != 之一, expr 是 数学表达式, 由 常整数(标准C语法形式), 普通的 二进制运算符 [+, -, *, /, &, |], 一个 长度运算符, 和 指定的 报文数据访问算符 组成. 要 访问 报文内 的 数据, 使用 下面的 语法: proto [ expr : size ] Proto 是 ether, fddi, ip, arp, rarp, tcp, udp, or icmp 之一, 同时 也指出了 下标 操作 的协议层. expr 给出 字节单位 的 偏移量, 该 偏移量 相对于 指定的 协议层. Size 是 可选项, 指出 感兴趣的 字节数; 它可以 是 1, 2, 4, 缺省为 1 字节. 由 关键字 len 给出的 长度运算符 指明 报文 的 长度. 例如, `ether[0] & 1 != 0' 捕捉 所有的 多目传送 报文. 表达式 `ip[0] & 0xf != 5' 捕捉 所有 带 可选域 的 IP 报文. 表达式 `ip[6:2] & 0x1fff = 0' 只捕捉 未分片 和 片偏移为0 的 数据报. 这种 检查 隐含在 tcp 和 udp 下标操作 中. 例如, tcp[0] 一定是 TCP 报头 的 第一个 字节, 而不是 其中 某个 IP片 的 第一个 字节. 原语 可以 用 下述 方法 结合使用: 园括弧 括起来的 原语 和 操作符 (园括弧 在 Shell 中 有专用, 所以必须转义). 取反操作 (`!' or `not'). 连结操作 (`&&' or `and'). 或操作 (`||' or `or'). 取反操作 有 最高优先级. 或操作 和 连结操作 有 相同的 优先级, 运算时 从左到右 结合. 注意 连结操作 需要 显式的 and 算符, 而不是 并列放置. 如果 给出 标识符, 但没给 关键字, 那么 暗指 最近使用 的 关键字. 例如, not host vs and ace 作为 not host vs and host ace 的 简写形式, 不应该 和 not ( host vs or ace ) 混淆. 表达式参数 可以 作为 单个 参数 传给 tcpdump, 也可以 作为 复合参数, 后者 更方便 一些. 一般说来, 如果 表达式 包含 Shell 元字符(metacharacter), 传递 单个 括起来的 参数 要 容易 一些. 复合参数 在 被解析前 用 空格 联接 一起. 示例 (EXAMPLES) 显示 所有 进出 sundown 的 报文: tcpdump host sundown 显示 helios 和 主机 hot, ace 之间 的 报文 传送: tcpdump host helios and \( hot or ace \) 显示 ace 和 除了 helios 以外的 所有 主机 的 IP报文: tcpdump ip host ace and not helios 显示 本地的主机 和 Berkeley的主机 之间 的 网络数据: tcpdump net ucb-ether 显示 所有 通过 网关 snup 的 ftp 报文 (注意 这个 表达式 被 单引号 括起, 防止 shell 解释 园括弧): tcpdump 'gateway snup and (port ftp or ftp-data)' 显示 既不是 来自 本地主机, 也不是 传往 本地主机 的 网络数据 (如果 你 把 网关 通往 某个 其他网络, 这个 做法 将不会 把 数据 发往 你的本地网络). tcpdump ip and not net localnet 显示 每个 TCP会话 的 起始 和 结束 报文 (SYN 和 FIN 报文), 而且 会话方 中有一个 远程主机. tcpdump 'tcp[13] & 3 != 0 and not src and dst net localnet' 显示 经过 网关 snup 中 大于 576 字节的 IP 数据报: tcpdump 'gateway snup and ip[2:2] > 576' 显示 IP 广播 或 多目传送 的 数据报, 这些 报文 不是 通过 以太网 的 广播 或 多目传送 形式 传送的: tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224' 显示 所有 不是 回响请求/应答 的 ICMP 报文 (也就是说, 不是 ping 报文): tcpdump 'icmp[0] != 8 and icmp[0] != 0" 输出格式 (OUTPUT FORMAT) tcpdump 的 输出格式 取决于 协议. 下面的 描述 给出 大多数 格式 的简要说明 和 范例. 链路层报头 (Link Level Headers) 如果 给出 '-e' 选项 就 显示 链路层报头. 在 以太网上, 显示 报文的 源目地址, 协议 和 报文长度. 在 FDDI 网络上, '-e' 选项 导致 tcpdump 显示出 `帧控制(frame control)' 域, 源目地址 和 报文长度. (`帧控制' 域 负责 解释 其余的 报文. 普通报文 (比如说 载有 IP数据报) 是 `异步' 报文, 优先级 介于 0 到 7; 例如, `async4'. 这些 被认为 载有 802.2 逻辑链路控制(LLC) 报文; 如果 它们 不是 ISO 数据报 或者 所谓的 SNAP 报文, 就显示出 LLC 报头. (注意: 以下 描述中 假设 你 熟悉 RFC-1144 中说明的 SLIP 压缩算法.) 在 SLIP 链路上, tcpdump 显示出 方向指示 (``I'' 指 inbound, ``O'' 指 outbound), 报文类型 和 压缩信息. 首先显示的 是 报文类型. 有三种 类型 ip, utcp 和 ctcp. 对于 ip 报文 不再 显示 更多的 链路信息. 对于 TCP 报文, 在 类型 后面 显示 连接标识. 如果 报文 是 压缩过的, 就显示出 编码的报头. 特殊 情形 以 *S+n 和 *SA+n 的 形式 显示, 这里的 n 是 顺序号 (或顺序号 及其 确认) 发生 的 改变 总和. 如果 不是 特殊 情形, 就显示 0 或 多少个 改变. 改变 由 U (urgent pointer), W (window), A (ack), S (sequence number) 和 I (packet ID) 指明, 后跟 一个 变化量(+n or -n), 或 另一个 值(=n). 最后显示 报文中 的 数据总和, 以及 压缩报头 的 长度. 例如, 下面一行 显示了 一个 传出的 压缩的 TCP 报文, 有一个 隐含的 连接标识; 确认(ack)的 变化量是 6, 顺序号 是 49, 报文ID 是 6; 有三个字节的数据 和六个字节 的 压缩报头: O ctcp * A+6 S+49 I+6 3 (6) ARP/RARP 报文 Arp/rarp 报文 的 输出 显示 请求类型 及其 参数. 输出格式 倾向于 能够 自我解释. 这里 是一个 简单的例子, 来自 主机 rtsg 到 主机 csam 的 'rlogin' 开始 部分: arp who-has csam tell rtsg arp reply csam is-at CSAM 第一行 说明 rtsg 发出 一个 arp 报文 询问 internet 主机 csam 的 以太网地址. Csam 用 它的 以太地址 作应答 (这个例子中, 以太地址 是 大写的, internet 地址为 小写). 如果 用 tcpdump -n 看上去 要 清楚一些: arp who-has 128.3.254.6 tell 128.3.254.68 arp reply 128.3.254.6 is-at 02:07:01:00:01:c4 如果 用 tcpdump -e, 可以 看到 实际上 第一个 报文 是 广播, 第二个报文 是 点到点 的: RTSG Broadcast 0806 64: arp who-has csam tell rtsg CSAM RTSG 0806 64: arp reply csam is-at CSAM 这里 第一个 报文 指出 以太网源地址是 RTSG, 目的地址 是 以太网广播地址, 类型域 为 16进制数 0806 (类型 ETHER_ARP), 报文全长 64 字节. TCP 报文 (注意: 以下的描述中 假设 你 熟悉 RFC-793 中 说明的 TCP 协议, 如果 你不了解 这个 协议, 无论是 本文 还是 tcpdump 都对你 用处 不大) 一般说来 tcp 协议的 输出格式是: src > dst: flags data-seqno ack window urgent options Src 和 dst 是 源目IP地址和端口. Flags 是 S (SYN), F (FIN), P (PUSH) 或 R (RST) 或 单独的 `.'(无标志), 或者是 它们的 组合. Data-seqno 说明了 本报文中的数据 在 流序号 中的 位置 (见下例). Ack 是 在这条连接上 信源机 希望 下一个 接收的 字节的 流序号 (sequence number). Window 是 在这条连接上 信源机 接收缓冲区 的 字节大小. Urg 表明 报文内 是 `紧急(urgent)' 数据. Options 是 tcp 可选报头, 用 尖括号 括起 (例如, <mss 1024>). Src, dst 和 flags 肯定 存在. 其他域 依据 报文的 tcp 报头 内容, 只输出 有必要 的 部分. 下面 是 从 主机 rtsg rlogin 到 主机 csam 的 开始部分. rtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024> csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024> rtsg.1023 > csam.login: . ack 1 win 4096 rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096 csam.login > rtsg.1023: . ack 2 win 4096 rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096 csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077 csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1 csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1 第一行 是说 从 rtsg 的 tcp 端口 1023 向 csam 的 login 端口 发送 报文. S 标志 表明 设置了 SYN 标志. 报文 的 流序号 是 768512, 没有 数据. (这个写成 `first:last(nbytes)', 意思是 `从 流序号 first 到 last, 不包括 last, 有 nbytes 字节的 用户数据'.) 此时 没有 捎带确认(piggy-backed ack), 有效的 接收窗口 是 4096 字节, 有一个 最大段大小(max-segment-size) 的 选项, 请求 设置 mss 为 1024 字节. Csam 用类似的 形式 应答, 只是 增加了 一个 对 rtsg SYN 的 捎带确认. 然后 Rtsg 确认 csam 的 SYN. `.' 意味着 没有 设置 标志. 这个 报文 不包含 数据, 因此 也就 没有 数据的流序号. 注意这个 确认流序号 是一个 小整数(1). 当 tcpdump 第一次 发现 一个 tcp 会话时, 它 显示 报文 携带的 流序号. 在 随后收到的 报文里, 它 显示 当前报文 和 最初那个 报文 的 流序号 之 差. 这 意味着 从第一个报文 开始, 以后的 流序号 可以 理解成 数据流 中的 相对位移 as relative byte positions in the conversation's data stream (with the first data byte each direction being `1'). `-S' 选项 能够 改变 这个 特性, 直接 显示 原始的 流序号. 在 第六行, rtsg 传给 csam 19 个字节 的 数据 (字节 2 到 20). 报文中 设置了 PUSH 标志. 第七行 csam 表明 它 收到了 rtsg 的 数据, 字节序号是 21, 但不包括 第21个 字节. 显然 大多数 数据 在 socket 的 缓冲区内, 因为 csam 的 接收窗口 收到的 数据小于 19 个 字节. 同时 csam 向 rtsg 发送了 一个字节 的 数据. 第八和第九行 显示 csam 发送了 两个字节 的 紧急数据 到 rtsg. 如果 捕捉区 设置的 过小, 以至于 tcpdump 不能 捕捉到 完整的 TCP 报头, tcpdump 会 尽可能的 翻译 已捕获的 部分, 然后 显示 ``[|tcp]'', 表明 无法 翻译 其余 部分. 如果 报头 包含 一个 伪造的 选项 (one with a length that's either too small or beyond the end of the header), tcpdump 显示 ``[bad opt]'' 并且 不再 翻译 其他 选项部分 (因为 它 不可能 判断出从哪儿 开始). 如果 报头长度 表明 存在 选项, 但是 IP 数据报 长度 不够, 不可能 真的 保存 选项, tcpdump 就显示 ``[bad hdr length]''. UDP 报文 UDP 格式 就象 这个 rwho 报文 显示的: actinide.who > broadcast.who: udp 84 就是说 把一个 udp 数据报 从 主机 actinide 的 who 端口 发送到 broadcast, Internet 广播地址 的 who 端口. 报文 包含 84字节 的 用户数据. 某些 UDP 服务 能够 识别出来(从 源目端口号 上), 因而 显示出 更高层的 协议信息. 特别是 域名服务请求(RFC-1034/1035) 和 NFS 的 RPC 调用(RFC-1050). UDP 域名服务请求 (Name Server Requests) (注意: 以下的描述中 假设 你 熟悉 RFC-1035 说明的 域名服务协议. 如果你 不熟悉 这个协议, 下面的内容 就象是 天书.) 域名服务请求 的 格式 是 src > dst: id op? flags qtype qclass name (len) h2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37) 主机 h2opolo 访问 helios 上的 域名服务, 询问和 ucbvax.berkeley.edu. 关联的 地址记录(qtype=A). 查询号是 `3'. `+' 表明 设置了 递归请求 标志. 查询长度是 37 字节, 不包括 UDP 和 IP 头. 查询操作 是 普通的 Query 操作, 因此 op 域 可以 忽略. 如果 op 设置成 其他什么东西, 它应该 显示在 `3' 和 `+' 之间. 类似的, qclass 是 普通的 C_IN 类型, 也被 忽略了. 其他类型的 qclass 应该 在 `A' 后面 显示. Tcpdump 会检查 一些 不规则 情况, 相应的 结果 作为 补充域 放在 方括号内: 如果 某个 查询 包含 回答, 名字服务 或 管理机构部分, 就把 ancount, nscount, 或 arcount 显示成 `[na]', `[nn]' 或 `[nau]', 这里的 n 代表 相应的 数量. 如果 在 第二和第三字节 中, 任何一个 回答位(AA, RA 或 rcode) 或 任何一个 `必须为零' 的位 被 置位, 就显示 `[b2&3=x]', 这里的 x 是 报头 第二和第三字节 的 16进制数. UDP 名字服务回答 名字服务回答的 格式 是 src > dst: id op rcode flags a/n/au type class data (len) helios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273) helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97) 第一个例子里, helios 回答了 h2opolo 发出的 标识为3 的 询问, 一共是 3 个 回答记录, 3 个 名字服务记录 和 7 个管理结构记录. 第一个 回答纪录 的 类型是 A (地址), 数据是 internet 地址 128.32.137.3. 回答的 全长 为 273 字节, 不包括 UDP 和 IP 报头. 作为 A 记录的 class(C_IN) 可以 忽略 op (询问) 和 rcode (NoError). 在第二个例子里, helios 对 标识为2 的 询问 作出 域名不存在 (NXDomain) 的 回答, 没有 回答记录, 一个 名字服务记录, 而且 没有 管理结构. `*' 表明 设置了 权威回答(authoritative answer). 由于 没有 回答记录, 这里就 不显示 type, class 和 data. 其他 标志 字符 可以 显示为 `-' (没有设置递归有效(RA)) 和 `|' (设置 消息截短(TC)). 如果 `问题' 部分 没有 有效的 内容, 就 显示 `[nq]'. 注意 名字服务的 询问和回答 一般说来 比较大, 68 字节的 snaplen 可能无法 捕捉到 足够的 报文内容. 如果 你 的确 在 研究 名字服务 的 情况, 可以使用 -s 选项 增大 捕捉缓冲区. `-s 128' 应该 效果 不错了. NFS 请求和响应 Sun NFS (网络文件系统) 的 请求和响应 显示格式 是: src.xid > dst.nfs: len op args src.nfs > dst.xid: reply stat len op results sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165 wrl.nfs > sushi.6709: reply ok 40 readlink "../var" sushi.201b > wrl.nfs: 144 lookup fh 9,74/4096.6878 "xcolors" wrl.nfs > sushi.201b: reply ok 128 lookup fh 9,74/4134.3150 在第一行, 主机 sushi 向 wrl 发送 号码为 6709 的 交易会话 (注意 源主机 后面的 数字 是 交易号, 不是 端口). 这项请求 长 112 字节, 不包括 UDP 和 IP 报头. 在 文件句柄 (fh) 21,24/10.731657119 上执行 readlink (读取 符号连接) 操作. (如果 运气 不错, 就象 这种情况, 文件句柄 可以 依次翻译成 主次设备号, i 节点号, 和 事件号(generation number). ) Wrl 回答 `ok' 和 连接的 内容. 在第三行, sushi 请求 wrl 在 目录文件 9,74/4096.6878 中 查找 `xcolors'. 注意 数据的 打印格式 取决于 操作类型. 格式 应该是 可以自我说明的. 给出 -v (verbose) 选项 可以 显示 附加信息. 例如: sushi.1372a > wrl.nfs: 148 read fh 21,11/12.195 8192 bytes @ 24576 wrl.nfs > sushi.1372a: reply ok 1472 read REG 100664 ids 417/0 sz 29388 (-v 同时 使它 显示 IP 报头的 TTL, ID, 和 分片域, 在 这个例子里 把它们省略了.) 在第一行, sushi 请求 wrl 从 文件 21,11/12.195 的 偏移位置 24576 开始, 读取 8192 字节. Wrl 回答 `ok'; 第二行 显示的 报文 是 应答的 第一个 分片, 因此 只有 1472 字节 (其余数据 在 后续的 分片中传过来, 但由于 这些分片里 没有 NFS 甚至 UDP 报头, 因此 根据 所使用的 过滤器表达式, 有可能 不显示). -v 选项 还会 显示 一些 文件属性 (它们 作为 文件数据 的 附带部分 传回来): 文件类型 (普通文件 ``REG''), 存取模式 (八进制数), uid 和 gid, 以及 文件大小. 如果再给一个 -v 选项 (-vv), 还能 显示 更多的细节. 注意 NFS 请求 的 数据量 非常大, 除非 增加 snaplen, 否则 很多细节 无法显示. 试一试 `-s 192' 选项. NFS 应答报文 没有明确 标明 RPC 操作. 因此 tcpdump 保留有 ``近来的'' 请求 记录, 根据 交易号 匹配 应答报文. 如果 应答报文 没有 相应的 请求报文, 它 就 无法分析. KIP Appletalk (UDP 上的 DDP) Appletalk DDP 报文 封装在 UDP 数据报 中, 解包后 按 DDP 报文 转储 (也就是说, 忽略 所有的 UDP 报头 信息). 文件 /etc/atalk.names 用来 把 appletalk 网络和节点号 翻译成 名字. 这个文件 的 行格式 是 number name 1.254 ether 16.1 icsd-net 1.254.110 ace 前两行 给出了 appletalk 的 网络名称. 第三行 给出 某个主机 的 名字 (主机和网络 依据 第三组 数字 区分 - 网络号 一定 是 两组数字, 主机号 一定 是 三组 数字.) 号码 和 名字 用 空白符(空格或tab) 隔开. /etc/atalk.names 文件 可以 包含 空行 或 注释行(以`#'开始的行). Appletalk 地址 按 这个格式 显示 net.host.port 144.1.209.2 > icsd-net.112.220 office.2 > icsd-net.112.220 jssmag.149.235 > icsd-net.2 (如果 不存在 /etc/atalk.names , 或者 里面 缺少 有效项目, 就以 数字形式 显示 地址.) 第一个例子里, 网络 144.1 的 209 节点的 NBP (DDP 端口 2) 向 网络 icsd 的 112 节点 的 220 端口 发送数据. 第二行 和 上面 一样, 只是 知道了 源节点 的 全称 (`office'). 第三行 是从 网络 jssmag 的 149 节点 的 235 端口 向 icsd-net 的 NBP 端口广播 (注意 广播地址 (255) 隐含在 无主机号的 网络名字 中 - 所以 在 /etc/atalk.names 中 区分 节点名 和 网络名 是个 好主意). Tcpdump 可以 翻译 NBP (名字联结协议) 和 ATP (Appletalk 交互协议) 的 报文内容. 其他协议 只转储 协议名称 (或号码, 如果 还 没给 这个协议 注册 名称) 和 报文大小. NBP 报文 的 输出格式 就象 下面的 例子: icsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*" jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250 techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186 第一行 是 网络 icsd 的 112 主机 在 网络 jssmag 上的 广播, 对 名字 laserwriter 做 名字查询请求. 名字查询请求 的 nbp 标识号 是 190. 第二行 显示的是 对 这个请求 的 回答 (注意 它们 有 同样的 标识号), 主机 jssmag.209 表示 在它的 250 端口 注册了 一个 laserwriter 的 资源, 名字是 "RM1140". 第三行 是 这个请求 的 其他回答, 主机 techpit 的 186 端口 有 laserwriter 注册的 "techpit". ATP 报文 格式 如 下例 所示: jssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001 helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000 jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001 helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001 jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002 Jssmag.209 向 主机 helios 发起 12266 号 交易, 请求 8 个 报文(`<0-7>'). 行尾的 十六进制数 是 请求中 `userdata' 域 的 值. Helios 用 8 个 512字节 的 报文 应答. 跟在 交易号 后面的 `:digit' 给出了 交易过程中 报文的 序列号, 括弧内的 数字 是 报文的 数据量, 不包括 atp 报头. 报文 7 的 `*' 表明 设置了 EOM 位. 然后 Jssmag.209 请求 重传 第 3 & 5 报文. Helios 做了 重传后 jssmag.209 结束 这次 交易. 最后, jssmag.209 发起 下一次 交易请求. 请求中的 `*' 表明 没有 设置 XO (只有一次) 位. IP 分片 分片的 Internet 数据报 显示为 (frag id:size@offset+) (frag id:size@offset) (第一种 形式 表明 还有 更多的 分片. 第二种 形式 表明 这是 最后 一片.) Id 是 分片 标识号. Size 是 分片 大小 (字节), 不包括 IP 报头. Offset 是 该分片 在 原数据报 中 的 偏移 (单位是字节). 每一个 分片 的 信息 都可以 打印出来. 第一个 分片 包含了 高层 协议 报头, 显示 协议信息 后 显示 分片 的 信息. 第一个 分片 以后的 分片 不再 含有高层协议 报头, 所以 在 源目地址 后面 只显示 分片 信息. 例如, 下面是 从 arizona.edu 到 lbl-rtsg.arpa 的 一部分 ftp 传输, 途经的 CSNET 看上去 处理不了 576 字节的 数据报: arizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328@0+) arizona > rtsg: (frag 595a:204@328) rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560 这里 有几点 需要注意: 首先, 第二行的 地址 不包括 端口号. 这是因为 TCP 协议 信息 全部 装到了 第一个 分片内, 所以 显示 后续分片的 时候 不可能 知道端口 或 流序号. 其次, 第一行的 tcp 流序号部分 看上去有 308 字节的 用户数据, 实际上 是 512 字节 (第一个 分片的 308 和 第二个 分片的 204 字节). 如果你 正在 寻找 流序号中 的 空洞, 或者 试图 匹配 报文 的 确认(ack), 那你上当了. 如果 报文的 IP 标有 不要分片 标志, 显示时 在尾部 加上 (DF). 时戳 缺省情况下, 所有 输出行 的 前面 都有 时戳. 时戳 就是 当前时间, 显示格式为 hh:mm:ss.frac 精度 和 内核时钟 一样. 时戳 反映了 内核 收到 报文 的 时间. 从 以太接口 收到 报文 到 内核 响应 '报文就绪' 中断 有一个 滞后, 该 滞后 不被考虑. 另见 (SEE ALSO) traffic(1C), nit(4P), bpf(4), pcap(3) 作者 (AUTHORS) Van Jacobson, Craig Leres and Steven McCanne, all of the Lawrence Berkeley National Laboratory, University of California, Berkeley, CA. 当前 版本 可以 从 匿名ftp 获得: ftp://ftp.ee.lbl.gov/tcpdump.tar.Z BUGS 请把 臭虫 报告 传往 tcpdump@ee.lbl.gov. NIT 不允许 监视 你自己的 传出数据, BPF 可以. 我们 建议 你 使用 后者. 应该 试着 重组 IP 分片, 至少可以 为 更高层的 协议 计算出 正确的 长度. 名字服务逆向询问 转储的 不正确: 打印出 (空的)问题部分, 而实际上 询问 放在了回答部分. 有人 认为 这种 逆向询问 本身就是 bug, 应该 修改 产生问题 的 程序, 而非 tcpdump. 苹果 Ethertalk DDP 的 报文 应该 象 KIP DDP 的 报文 一样 容易 转储, 事实却 不是 这样. 即使 我们 有意 作点什么 来 促销 Ethertalk (我们没有), LBL 也不允许 Ethertalk 出现在 它的 任何网络上, 所以 我们 没办法 测试 这些代码. 如果 报文的 路径上 出现 夏时制时间 变化, 可能 导致 时戳 混乱. (这个时间变化将忽略) 操作 FDDI 报头的 过滤器表达式 假设 所有的 FDDI 报文 被封装在 以太报文 中. 这对 IP, ARP 和 DECNET Phase IV 无疑是 正确的, 但对 某些 协议 如 ISO CLNS 不正确. 因此, 过滤器 有可能会 糊里糊涂的 的 接收 一些 并不真正 匹配过滤器表达式 的 报文. [中文版维护人] 徐明 Email: xuming@bigfoot.com [中文版最新更新] 2001/3/5 《中国Linux论坛man手册页翻译计划》 www.linuxforum.net/man-pages/ |
|
|
|
|
|
|
|
第 98 帖 | |
|
|
名字
testparm - 检查smb.conf配置文件的内部正确性 ,SH 总览 testparm [-s] [-h] [-L servername] [configfilename] [hostname hostIP] 描述 此程序是samba套件的一部分。 testparm是个非常简单的程序,用于检查smbd配置文件的内部正确性。如果程序报告没有什么问题,那么你可以放心地使用这个配置文件,并且smbd也会非常顺利地装入它。 注意,这并不保证配置文件中指定的服务可以获得或者如你所愿地那样进行操作。 如果在它的命令上指定可选的主机名和主机IP地址的话,测试程序将通过服务接口运行并报告是否指定的主机可以访问每个服务。 如果testparm在smb.conf文件中找到一个错误的话,它会向调用程序返回退出代码1,否则返回退出代码0。这样shell脚本可以测试testparm的输入。 选项 -s 如果不带这个参数,testparm将提示在列出服务名和服务定义项之间打一个回车。 -h 列出用法信息 -L servername 对服务项名字设定%L这样的宏值。对于测试包含这样的宏值的文件非常有用。 configfilename 指定要检查的配置文件名。如果不指定的话,程序对默认的smb.conf文件进行检查。 hostname 如果命令行带有这个参数时,测试程序将检查smb.conf文件中的“hosts allow”和“hosts deny”参数用以测试这些IP地址对应的主机名是否可以访问smbd服务器。如果用这样的参数时, hostIP参数也必须一并使用。 hostIP 这个参数用于指定前面给出的主机名相对应的IP地址。如上说述,主机名参数和这个地址必须一并使用。 相关文件 smb.conf,通常这是smbd使用的配置文件名。 诊断 The program will issue a message saying whether the configuration file loaded OK or not. This message may be preceded by errors and warnings if the file did not load. If the file was loaded OK, the program then dumps all known service details to stdout. 程序运行的结果将给出装入的配置文件是否正确的信息。如果文件没有被装入时可能显示的是错误和警告信息。反之,装入文件正确的话,程序会在标准输出上列出所有可知的服务细节。 版本 此手册页是针对samba套件版本2.0的。 另见 smb.conf (5), smbd (8) 作者 samba软件和相关工具最初由Andrew Tridgell samba-bugs@samba.org创建。samba现在由开发组作为类似Linux内核开发采用的开放源代码计划方式来发展。 samba手册页最初由Karl Auer撰写。它的源码已被转换成YODL(一种极好的开放源代码软件,可以在 ftp://ftp.icce.rug.nl/pub/unix/处获得)格式并已由Jeremy Allison更新到samba2.0版本。 请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。 [中文版维护人] meaculpa: Email: meaculpa@21cn.com [中文版最新更新] 2000/12/08 [中国 Linux 论坛 man 手册页翻译计划] www.cmpp.net/ |
|
|
|
|
|
|
|
第 99 帖 | |
|
|
NAME 名字 testprns - 为smbd测试合法的打印机名
总览 testprns printername [printcapname] 描述 此程序是samba套件的一部分。 testprns是个非常简单的测试程序,用于检查smbd作为服务提供的打印机名是否合法。 在这里“Valid”的意思就是“在printcap中可以找到该打印机”。实际上总是使用printcap文件来指定打印机是非常明智的。 选项 printername 要测试的打印机名。 打印机可以从printcap文件的每个记录首字段中获得,字段中用“|” 号来识别单个的打印机名和别名。注意当测试请求的打印机名时并不确认或检查printcap文件的总览。打印假脱机系统会比testprns程序更多或更少地放宽printcap文件的总览。但是,如果testprns找到了打印机的话smbd会作这样的检查。 printcapname 此参数指定想要对给出的打印机名进行查找的printcap文件名。 如果此参数没有指定的话,testprns将尝试对编译时指定的printcap文件名。 相关文件 /etc/printcap 通常是被扫描的默认printcap文件。请参见 printcap (5). 诊断 如果发现检测的打印机合法,则显示“Printer name <printername> is valid”这样的信息。 如果发现检测的打印机不合法,则显示“Printer name <printername> is not valid”这样的信息。 所有测试结果信息通常情况下会被记录到当前目录下的test.log文件中。程序运行在调试级3上,所以会记录十分详细的信息。如果有出错或警告的话应该仔细检查这个文件。 其它信息是不需加以说明的。 另见 printcap (5), smbd (8), smbclient (1) 作者 samba软件和相关工具最初由Andrew Tridgell samba-bugs@samba.org创建。samba现在由开发组作为类似Linux内核开发采用的开放源代码计划方式来发展。 samba手册页最初由Karl Auer撰写。它的源码已被转换成YODL(一种极好的开放源代码软件,可以在 ftp://ftp.icce.rug.nl/pub/unix/处获得)格式并已由Jeremy Allison更新到samba2.0版本。 请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。 [中文版维护人] meaculpa: Email: meaculpa@21cn.com [中文版最新更新] 2000/12/08 [中国 Linux 论坛 man 手册页翻译计划] www.cmpp.net/ |
|
|
|
|
|
|
|
第 100 帖 | |
|
|
名字
touch - 修改文件的时间戳记. 总览 touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)... 被废弃的版本: touch [-acm][ugly_time] file(文件)... GNU版本: touch [-acfm] [-r file(参照文件)] [-t decimtime(时间值)] [-d time(时间值)] [--time={atime,access,use,mtime,modify}] [--date=time] [--reference=file] [--no-create] [--help] [--version] [--] file(文件)... 用法描述 touch 修改每个指定文件 file 的存取(access)和/或修改(modification)时间戳记.除非使用-r或-t选项,这些时间戳记都将修改为当前的时间.使用-r选项时,这些戳记将按照文件 ref_file 的时间戳记来修改(即变得和ref_file时间戳记值相同).使用-t选项,则这些戳记将按照给定的时间值 time 进行修改.同时使用或同时不使用选项-a和-m,存取和修改两个戳记都将被更改.若只使用选项-a,则只修改存取戳记.同样,只使用选项-m,则只修改修改戳记.若要修改戳记的文件尚不存在,除非使用-c选项,touch 将创建它(作为空文件,并赋予0666的模式且受umask值的限制). POSIX标准定义的选项 -a 修改文件 file 的存取时间. -c 不创建文件 file. -m 修改文件 file file -r ref_file 将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值. -t time 使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.此处的 time 规定为如下形式的十进制数∶ [[CC]YY]MMDDhhmm[.SS] 这里,CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch 将把年数CCYY限定在1969--2068之内.MM为月数,DD为天将把年数CCYY限定在1969--2068之内.MM为月数,DD为天数,hh为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间.由于系统的限制,早于1970年1月1日的时间是错误的. POSIX标准的细节 已被废弃的touch版本使用时会出现模棱两可的情况: ugly_time 到底是时间值还是文件名?由于此种版本尚未提供-r或-t选项,所以使用时至少要有两个命令行参数,作为时间值, ugly_time 必须为第一个参数.这里的 ugly_time 是一个形为MMDDhhmm[yy]的八位或十位整数.其中,yy是介于69--99之间表示1969--1999之间某一年的两位数,如果不给,表示当前这一年. GNU版本的细节 如果第一个指定文件 file 的名子从形式上说是选项 -t 的有效参数,并且没有给出选项 -d, -r 或 -t -t 数,也没有给`--'选项,那么这个文件名将被解释成时间值. 一般情况下,利用 touch 修改文件的时间戳记时要求用户时该文件的所有者.除非只是把文件的存取和修改两种时间戳记修改为当前的时刻,这种情况只要求用户拥有对该文件`写'的权利就行了. GNU版本选项用法简介 -a, --time=atime, --time=access, --time=use 只修改存取时间. -c, --no-create 如果要修改的文件不存在,此选项使touch不去创建它. -d, --date=time 使用时间值 time 代替指定文件的戳记值.可以包含月份名,时区名以及`am'和 `pm'等等. -f 此选项用于兼容BSD版本的 touch(1). -m, --time=mtime, --time=modify 只修改修改时间. -r file, --reference=file 使用参照文件 file 的时间戳记值修改指定文件的时间戳记. -t decimtime 这里时间值 decimtime 的格式为MMDDhhmm[[CC]YY][.ss] 从左至右分别是月份,日期,小时,分钟,可选的世纪和年,以及可选的秒. touch 将用这组数值修改指定文件的时间戳记.请注意,这个格式与POSIX标准所规定的格式并不一样. GNU版本通用选项 --help 使程序在标准输出上显示该程序的用法信息. --version 使程序在标准输出上打印其版本信息. GNU版本通用选项 --help 使程序在标准输出上显示该程序的用法信息. --version 使程序在标准输出上打印其版本信息. -- 用于使程序终止对选项的解析. 运行环境 环境变量TZ一般用来表明所给时刻是哪个时区的.而环境变量LANG, LC_ALL, LC_CTYPE 和 LC_MESSAGES还是一般情况下的意义. 遵循 GNU版touch的-t选项的参数所用格式并不符合POSIX标准1003.2的描述. 用法实例 如果文件foo并不存在,那么命令`touch foo'将创建它,并把最后的修改时间改到现在的时刻.这一特点经常用来引导 make 的执行. 注意 这篇说明描述了fileutils-4.0程序包中的 touch. 其它版本的touch可能与此有稍许不同.对本文的修正和增补请致信aeb@cwi.nl.程序缺陷请向fileutils-bugs@gnu.ai.mit.edu报告? [中文版维护人] 晓寒 E-mail:xiaohan@sina.com [中文版最新更新] 2000/10/19 [中国Linux论坛man手册页翻译计划] www.cmpp.net/ |
|
|
|
|
|
|
|
第 101 帖 | |
|
|
NAME
uname - 显示输出系统信息 总览 uname [OPTION]... 描述 显示相应的系统信息. 没有指定选项时,同 -s. -a, --all 显示所有的信息 -m, --machine 显示机器(硬件)类型 -n, --nodename 显示机器的网络节点主机名 -r, --release 显示操作系统发行版本 -s, --sysname 显示操作系统名 -p, --processor 显示主机处理器(CPU)类型 -v 显示操作系统版本 --help 显示本帮助并退出 --version 显示版本信息并退出 报告BUGS 请向<bug-sh-utils@gnu.org>报告您所发现的bugs. 另见 uname 的文档全部以 Texinfo 格式维护.如果您的系统中正确地安装 info 和 uname 程序,您就可以通过 info uname 命令查阅整个手册. 版权 Copyright ?1999 Free Software Foundation, Inc. 这是自由软件.有关拷贝条件请参见源文档. 而且没有保证, 甚至对商业或者对于特殊目的适应性也没有. 中文版维护人 Mirnshi <mirnshi@263.net> |
|
|
|
|
|
|
|
第 102 帖 | |
|
|
名称
unicode_start - 将控制台设为Unicode模式. 总览 unicode_start [ font [ screen-font-map ] ] 描述 unicode_start 命令将显示屏及键盘设为 Unicode 模式, 并且有可能还会装载所用的 字体 和 显示屏-字体 映射. 如果没有给出参数,就使用当前的 字体 和 显示屏-字体 映射. BUGS 如果没有装载"显示屏-字体 映射", 可能会有麻烦. 另见 unicode_stop(1), consolechars(8). |
|
|
|
|
|
|
|
第 103 帖 | |
|
|
名称
unicode_stop - 撤销控制台unicode模式(例如, 回到8-bit模式). 总览 unicode_stop 描述 unicode_stop 撤销以前 unicode_start(1) 命令的效果, 将显示屏和键盘设回到 8-bit 模式. 另见 unicode_start(1), consolechars(8). |
|
|
|
|
|
|
|
第 104 帖 | |
|
|
名称 (NAME)
sq - 压缩一个排过序的单词列表 unsq - 解压一个排过序的单词列表 总览 (SYNOPSIS) sq < infile > outfile unsq < infile > outfile 描述 (DESCRIPTION) sq 压缩 一个 排过序的 单词 列表 (一个 字典). 比如: sort /usr/dict/words | sq | compress > words.sq.Z 会 大概 以 4 为 因数 压缩 字典. unsq 解压 sq 的 输出. 比如: compress -d < words.sq.Z | unsq | sort -f -o words 会 解压 sq 压缩 的 字典. 根据 文档 描述, 它 通过 省略 相同 的 词头 来 压缩, 用 一个 单独 的 字符 取代这个 词头, 这个 字符 对 与 前一个词 相同的 字符数 进行 编码. 词头 的 大小 用 一个 编了码 的 可打印 的 字符 表示: 0-9 代表 0-9, A-Z 代表 10-35, a-z 代表 36-61. 作者 (AUTHOR) Mike Wexler 参见 (SEE ALSO) compress(1), sort(1). [中文版维护人] 唐友 <tony_ty@263.net> [中文版最新更新] 2001/9/20 |
|
|
|
|
|
|
|
第 105 帖 | |
|
|
NAME(名称)
uptime - 告知系统运行了多久时间. SYNOPSIS(总览) uptime uptime [-V] DESCRIPTION(描述) uptime 给出下列信息的一行显示. 当前时间, 系统运行了多久时间, 当前登陆的用户有多少, 以及前1,5和15分钟系统的平均负载. 这与通过 w(1) 显示的首行包括的信息相同. FILES(相关文件) /var/run/utmp 关于当前谁在登录的信息 /proc 进程信息 AUTHORS(作者) Larry Greenfield <greenfie@gauss.rutgers.edu>和 Michael K. Johnson <johnsonm@sunsite.unc.edu>. 请将bug的报告发到<procps-bugs@redhat.com> SEE ALSO(另见) ps(1), top(1), utmp(5), w(1) [中文版维护人] riser E-mail:boomer@ccidnet.com [中文版最新更新] 2000/12/16 |
|
|
|
|
|