- 浏览: 4754744 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
我使用过的Linux命令之tail - 输出文件尾部/动态监视文件尾部
本文链接:http://codingstandards.iteye.com/blog/832575 (转载请注明链接)
用途说明
tail命令可以输出文件的尾部内容,默认情况下它显示文件的最后十行。它常用来动态监视文件的尾部内容的增长情况,比如用来监视日志文件的变化。与tail命令对应的是head命令,用来显示文件头部内容。
常用参数
格式:tail file
输出指定文件file的尾部内容,默认输出最后十行内容(output the last part of files。Print the last 10 lines of each FILE to standard output. )
格式:tail file1 file2 ...
指定多个文件时,会显示每个文件的文件名称,再显示该文件的尾部内容(With more than one FILE, precede each with a header giving the file name.)
格式:tail
格式:tail -
不指定文件时,表明从标准输入读取内容,这通常用在管道线后面,把前一个命令的输出作为tail的输入内容(With no FILE, or when FILE is -, read standard input.)
格式:tail -n file
格式:tail -n n file
格式:tail --lines=n
显示文件最后n 行,比如tail -20 file就是显示文件最后10行,这个参数可以配合其他参数与使用。注意上面三种格式的斜体n 是实际要显示的行数的数值。
注意:tail -n可以显示最后n行的文本内容。那么有没有一种方式显示从n行开始的文本内容,答案是肯定的。
tail -n +4 file表示显示文件file从第4行开始的内容。从1开始计数。
格式:tail -f file
动态跟踪文件file的增长情况(output appended data as the file grows),tail会每隔一秒去检查一下文件是否增加新的内容,如果增加就追加在原来的输出后面显示。但这种情况,必须保证在执行tail命令时,文件已经存在。
如果想终止tail -f的输出,按Ctrl+C中断tail程序即可。如果按Ctrl+C不能中断输出,那么可以在别的终端上执行killall tail强行终止。
注意:采用tail -f来监控文件变化情况时,在某些情况会不太灵。比如在java应用程序中采用log4j日志时,每隔1个小时生成一个新的日志文件,当前的日志输出在LOG4J.LOG中,当一个小时过去后,log4j会将LOG4J.LOG改名成LOG4J.yyyy-mm-dd-HH的形式。那么这个时候tail -f就不能动态输出新的日志内容了。tail命令本身提供了很多参数,似乎都不能完美的解决这个问题。最后只好编写了一个脚本ftail.sh来跟踪日志,详见《Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能
》。刚才我仔细查看了tail的手册页,发现tail -F就能够做到跟踪这种类型的日志。转念一想,这种需求应该早就被Linux世界的人给满足了的。
格式:tail -F file
格式:tail --follow=name --retry file
功能与tail -f file相同,也是动态跟踪文件的变化,不同的是执行此命令时文件可以不存在。
以上处理都是针对文本文件的,下面是针对二进制文件的情形。
格式:tail -c n file
取文件file的最后n个字节。
格式:tail -c +n file
取文件file的第n个字节后的内容。从1开始计数。
使用示例
示例一 输出文件尾部
先使用seq命令输出20个数字保存到1.txt,然后尝试使用tail命令。
[root@new55 ~]# seq 20 >1.txt
[root@new55 ~]# cat 1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@new55 ~]# tail 1.txt
11
12
13
14
15
16
17
18
19
20
[root@new55 ~]# tail -3 1.txt
18
19
20
[root@new55 ~]# tail -n 3 1.txt
18
19
20
[root@new55 ~]# tail --lines=3 1.txt
18
19
20
[root@new55 ~]# tail -n +14 1.txt
14
15
16
17
18
19
20
[root@new55 ~]#
示例二 动态跟踪tomcat输出
动态跟踪tomcat输出。
[root@web logs]# tail -f catalina.out
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
2010-12-03 13:23:02,236 [http-80-15] DEBUG mhr.roi.MhrManager - MhrGetJobReq={seq=991,job_id='86130469-0006'}
2010-12-03 13:23:02,301 [http-80-15] DEBUG mhr.roi.MhrManager - MhrGetJobRsp={seq=991,result=0(成功),,info={job_id='86130469-0006',employer_id=86130469,employer_name=无锡富士时装有限公司,,,job_title='|570309|',job_title0='文员',job_type=f(全职),issue_time='2010-11-03 00:00:00.0',work_address='1902',work_address0=无锡市,desired_count='1',,,,,,job_desc=大专,1年以上5s管理工作经验,电脑操作熟练。,required_experience=1(一年以上),,,,required_degree=15(大专),,,,,,,valid_days=30,access_count=12,expire_time='2010-12-03 00:00:00.0',job_status=1(过期),,,,,,contact_name=王小姐,contact_number=0510-85550088,remarks='★此职位是从后台导入的
',enter_time='2010-11-03 09:45:11.0',change_time=2010-12-03 02:18:05.0,,job_seq=123201,,required_min_age=22,,,accommodations=面议,serve_principal=wjw12580,job_summary=大专,1年以上5s管理工作经验,电脑操作熟练,,}}
2010-12-03 13:23:02,302 [http-80-15] DEBUG mhr.roi.MhrManager - MhrGetEmployerReq={seq=0,employer_id='86130469'}
2010-12-03 13:23:02,304 [http-80-15] DEBUG mhr.roi.MhrManager - MhrGetEmployerRsp={seq=0,result=0(成功),,info={employer_id='86130469',employer_name=无锡富士时装有限公司,employer_region=1902,employer_address=无锡市滨湖镇山水城科技园8号,,employer_desc=无锡富士时装(集团)有限公司成立于1992年,是中日韩合资企业。主要生产高档针织时装,产品全部外销,连续多年荣获“中国行业500强”、“全国工业重点行业效益十佳企业”、“无锡市百佳企业”等称号。公司总部位于江苏省无锡市滨湖镇山水城科技园,全新的厂房设施,占地面积30亩。公司分别在苏州、泰兴、盐城、徐州设有分厂,集团公司现有职工1500多人,年销售额近3亿元。,,,,,,open_mode=5(系统自动操作),open_time='2010-11-03 09:45:10.0',,,,,contact_name=王小姐,contact_number=0510-85550088,,,,,employer_status=1(已经开通),,,login_password=871386,,agency=false,balance=100.0000,,,,,serve_principal=wjw12580,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,remarks='此帐号由“12580zgz-盐城维克多网络传媒有限公司”导入',enter_time='2010-11-03 09:45:10.0',}}
Ctrl+C
[root@web logs]#
示例三 动态跟踪log4j日志
经过我的试验,发现tail -F功能的强大,它等同于--follow=name --retry。如果你跟踪的文件被移动或者改名后, 你还想继续tail它, 你可以使用这个选项。
tail手册页中关于--retry的说明:keep trying to open a file even if it is inaccessible when tail starts or if it becomes inaccessible later; useful when following by name, i.e., with --follow=name。 tail命令开始执行时文件不存在或者执行过程中文件不能访问,会不断重试。
关于--follow的说明:-f, --follow[={name|descriptor}] output appended data as the file grows; -f, --follow, and --follow=descriptor are equivalent 。--follow=descriptor表明跟踪的是文件描述符, --follow=name表明跟踪的是文件名称。 如果文件名称改掉之后,还想继续跟踪原文件名称对应的尾部内容,就得使用-F选项而不是-f选项了。
[root@web imx_server]# tail -F log/IMX.LOG
14:13:28.892 INFO ImxConnection[6] imx.server.ImxConnection - RX IMX_ACTIVE_TEST{seq=3460,client_id=1291343201649042,presence_status=1(presence_status_online),}
14:13:28.892 DEBUG ImxConnection[6] org.logicalcobwebs.proxool.ImxDB - 006417 (01/02/00) - Connection #9 served
14:13:28.892 INFO ImxConnection[6] imx.dbo.ImxOnlineInfoRow - EXEC SQL UPDATE imx_online_info SET last_active_time = '2010-12-03 14:13:28.0' WHERE account = 'zhy'
14:13:28.894 DEBUG ImxConnection[6] org.logicalcobwebs.proxool.ImxDB - UPDATE imx_online_info SET last_active_time = '2010-12-03 14:13:28.0' WHERE account = 'zhy'; (1 milliseconds)
14:13:28.894 DEBUG ImxConnection[6] org.logicalcobwebs.proxool.ImxDB - 006417 (00/02/00) - Connection #9 returned (now AVAILABLE)
14:13:29.625 INFO ImxConnection[6] imx.server.ImxConnection - RX IMX_ACTIVE_TEST{seq=3461,client_id=1291343201649042,presence_status=1(presence_status_online),}
14:13:29.626 DEBUG ImxConnection[6] org.logicalcobwebs.proxool.ImxDB - 006418 (01/02/00) - Connection #8 served
14:13:29.626 INFO ImxConnection[6] imx.dbo.ImxOnlineInfoRow - EXEC SQL UPDATE imx_online_info SET last_active_time = '2010-12-03 14:13:29.0' WHERE account = 'zhy'
14:13:29.627 DEBUG ImxConnection[6] org.logicalcobwebs.proxool.ImxDB - UPDATE imx_online_info SET last_active_time = '2010-12-03 14:13:29.0' WHERE account = 'zhy'; (0 milliseconds)
14:13:29.653 DEBUG ImxConnection[6] org.logicalcobwebs.proxool.ImxDB - 006418 (00/02/00) - Connection #8 returned (now AVAILABLE)
Ctrl+C
[root@web imx_server]#
总结一下:要想跟踪会更名的日志的话,用tail -F而不是tail -f。
示例四 处理二进制文件
[root@new55 ~]# seq 20 >1.txt
[root@new55 ~]# cat 1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@new55 ~]# hexdump -C 1.txt
00000000 31 0a 32 0a 33 0a 34 0a 35 0a 36 0a 37 0a 38 0a |1.2.3.4.5.6.7.8.|
00000010 39 0a 31 30 0a 31 31 0a 31 32 0a 31 33 0a 31 34 |9.10.11.12.13.14|
00000020 0a 31 35 0a 31 36 0a 31 37 0a 31 38 0a 31 39 0a |.15.16.17.18.19.|
00000030 32 30 0a |20.|
00000033
[root@new55 ~]# tail -c 10 1.txt | hexdump -C
00000000 0a 31 38 0a 31 39 0a 32 30 0a |.18.19.20.|
0000000a
[root@new55 ~]# tail -c -10 1.txt | hexdump -C
00000000 0a 31 38 0a 31 39 0a 32 30 0a |.18.19.20.|
0000000a
[root@new55 ~]# tail -c +10 1.txt | hexdump -C
00000000 0a 36 0a 37 0a 38 0a 39 0a 31 30 0a 31 31 0a 31 |.6.7.8.9.10.11.1|
00000010 32 0a 31 33 0a 31 34 0a 31 35 0a 31 36 0a 31 37 |2.13.14.15.16.17|
00000020 0a 31 38 0a 31 39 0a 32 30 0a |.18.19.20.|
0000002a
[root@new55 ~]#
问题思考
相关资料
【1】Linux宝库 head,tail,sed
【2】Tai的日记 tail -f 和 -F 的用法
【3】CSDN论坛 tail -f run.log 导致 tail: run.log: file truncated
【4】短裤党 tail -f 退出不了?
【5】新课网 linux下tail命令创建自解压tar文件教程
发表评论
-
在Linux用tar归档压缩文件时忽略某些文件和目录
2013-02-01 10:19 17055在Linux下,常用tar对文 ... -
使用nmap扫描服务器端口的一次操作
2012-11-01 17:00 15143使用nmap扫描服务器端口的一次操作 本文来自:http ... -
我使用过的Linux命令之wget - ooo
2011-09-14 13:10 0我使用过的Linux命令之wg ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:53 9151简明 Vim 练级攻略 http://coolshell.c ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:49 1简明 Vim 练级攻略 http://coolshell.c ... -
我使用过的Linux命令之:(冒号) - 啥也不做(除了……)
2011-08-29 13:18 12104我使用过的Linux命令之: ... -
我使用过的Linux命令之date - 显示、修改系统日期时间
2011-08-25 09:21 41987我使用过的Linux命令之da ... -
我使用过的Linux命令之declare - 声明shell变量(不知道没关系、知道了就更好的内建命令)
2011-08-16 09:22 21836我使用过的Linux命令之declare - 声明shell变 ... -
我使用过的Linux命令之alias - 设置命令的别名,让 Linux 命令更简练
2011-08-11 09:31 28831我使用过的Linux命令之alias - 设置命令的别名,让 ... -
我使用过的Linux命令之ar - 创建静态库.a文件
2011-08-08 10:40 51935我使用过的Linux命令之ar - 创建静态库.a文件 本 ... -
我使用过的Linux命令之crontab - 设置例行任务(类似于Windows中的任务计划)
2011-08-04 22:26 9754我使用过的Linux命令之crontab - 设置例行任务(类 ... -
我使用过的Linux命令之chmod - 改变文件/目录的访问权限
2011-08-03 21:33 10709我使用过的Linux命令之chmod - 改变文件/目录的访问 ... -
我使用过的Linux命令之export - 设置或显示环境变量
2011-08-02 19:55 25442我使用过的Linux命令之export - 设置或显示环境变量 ... -
我使用过的Linux命令之wc - 统计文件行数、单词数或字节数
2011-07-26 10:50 29020我使用过的Linux命令之wc - 统计文件行数、单词数或字节 ... -
我使用过的Linux命令之groupdel - 删除群组
2011-07-22 22:13 9695我使用过的Linux命令之gr ... -
我使用过的Linux命令之ifconfig - 网络配置命令
2011-07-21 20:43 60560我使用过的Linux命令之ifconfig - 网络配置命令 ... -
我使用过的Linux命令之ll - 列出文件/目录的详细信息
2011-07-20 21:22 7210我使用过的Linux命令之ll ... -
我使用过的Linux命令之mkdir - 创建目录
2011-07-20 20:58 13690我使用过的Linux命令之mkdir - 创建目录 本文链 ... -
我使用过的Linux命令之perror - 解释错误代码
2011-07-18 20:29 25085我使用过的Linux命令之perror - 解释错误代码 ... -
我使用过的Linux命令之ping - 测试与目标主机的连通性
2011-07-16 10:46 26617我使用过的Linux命令之ping - 测试与目标主机的连通性 ...
相关推荐
`tail`命令在Linux中用于查看文件的尾部内容,它对于实时监控日志文件、追踪程序运行状态等非常有用。`tail2win`就是这样一个工具,它将`tail`命令的功能带到了Windows环境中。 标题"windows下使用tail命令-tail2...
`tail` 是 Linux 系统中一个非常实用的命令,它允许用户查看文件的尾部内容,尤其适用于监控日志文件的实时变化。这个命令对于系统管理员来说是日常工作中不可或缺的工具,因为它可以帮助快速定位问题或跟踪系统的...
`tail`命令的基本原理是通过读取文件的末尾部分并持续监视文件的变化,当文件有新的内容追加时,会立即显示出来。这在处理日志文件、监控系统状态或者调试程序时非常有用。 ### 实时监控日志文件 在Linux环境中,...
这个 bash 脚本监视 url 的变化并将其尾部打印到标准输出中。 它充当“tail -f”linux 命令。 它有助于跟踪可通过 http 访问的日志。 安装 脚本需要安装curl 。 许多 Linux 发行版以及 Mac OS X 已经安装了 curl。 ...
在Windows操作系统中,通常我们使用的命令行工具是...之后,就可以像在Linux中一样,利用`tail`命令查看和监控文件的尾部内容了。这个功能对于开发者、系统管理员和其他需要实时追踪日志输出的用户而言,是非常有用的。
在Linux操作系统中,`tail`命令是一个非常实用的工具,主要用于查看文件的尾部内容,尤其是在处理日志文件时,它的功能尤为重要。`tail`可以帮助我们实时监控文件的变化,及时获取到最新的信息,而无需频繁刷新或...
在Windows操作系统中,"文件查看工具tail"是一个实用程序,类似于在Linux系统中广泛使用的`tail`命令。这个工具主要用于查看文件的尾部内容,尤其是日志文件,它可以帮助用户实时跟踪文件的变化,无需不断刷新整个...
5. 实时监视日志文件:使用`tail -f`命令可以实时查看日志文件的最新内容,如`tail -f note.log`。选项A和B仅显示文件尾部,选项D用于分页查看文件内容。 6. 显示文件内容:`cat`, `more`, `less`命令都可以用来...
- `-f`:监视文件尾部的变化。 #### 三、总结 以上介绍了Linux系统中常用的文件内容查看工具及其使用方法。通过这些工具,用户可以高效地管理和查看文件内容。其中,`cat`适用于快速查看小文件的内容;`more`和`...
- `tail -F file`: 监视日志文件,即使文件被移动也能继续追踪。 - `file`: 检查文件类型。 3. **文件权限管理** - `umask`: 更改文件的默认权限掩码。 - `chattr +i /etc/passwd`: 设置文件不可被修改或删除...
在Linux系统中,有一个非常实用的命令行工具叫做`tail`,它能够实时跟踪和查看日志文件的尾部内容,帮助我们实时监控日志动态。然而,在Windows环境下,原生并不提供这样的工具。但不用担心,标题提到的"Windows下...
Tail命令还支持`-q`选项,在有多个文件参数时不输出文件名,而`-v`选项则在有多个文件参数时总是输出文件名。 Cut命令用于显示行中的指定部分,或删除文件中指定字段。Cut命令的基本语法是`cut [选项] 文件`。通过`...
总之,“Windows Tail”是Windows环境下实现与Unix/Linux系统中`tail`命令相似功能的一种方法,主要通过PowerShell、第三方工具或自定义脚本来完成,主要用于实时查看和监控文本文件的尾部内容。在实际应用中,根据...
`tail` 命令通常用于查看文件的尾部内容,而`-f`选项则使其成为实时监控工具。当日志文件被追加新内容时,`tail -f`会持续显示新增的信息,无需重新运行命令。这对于监视正在运行的服务或进程产生的动态日志非常...
Linux的强大之处在于其丰富的命令行工具,这些工具可以帮助用户高效地完成各种任务,从简单的文件管理到复杂的系统监控与维护。 #### 二、基础命令 1. **ls** - 列出目录内容。通过`ls`命令可以查看当前目录下的...
在Windows操作系统中,虽然不像Linux那样内置了`tail`命令来实时查看文件尾部的内容,但开发者和系统管理员可以通过第三方工具实现类似的功能。标题提到的"windows下的tail工具"就是针对这一需求而设计的,主要目的...
综上所述,"tail_windows.zip" 提供的"tail.exe"是一个可能用于Windows系统的日志文件查看工具,它的功能和用法类似于Unix/Linux中的"tail"命令,允许用户方便地查看和实时监控文件的尾部内容。对于开发者和系统管理...
Linux 命令是 Linux 操作系统的核心组件之一,它们提供了对系统的控制和管理能力。以下是 150 个常用的 Linux 命令汇总,涵盖了文件和目录操作、查看文件及内容处理、文件压缩及解压缩、信息显示、搜索文件、用户...
它在Unix/Linux系统中被广泛使用,用于实时跟踪查看文件的尾部内容,尤其是那些持续增长的日志文件。当`tail`与`-f`选项结合使用时,它会持续监视指定文件的变化,并在内容更新时实时显示新的部分。这对于调试、监控...
在Linux系统中,`tail`命令是一个非常实用的工具,它能够方便地查看文件的尾部内容,特别是对于跟踪日志更新非常有用。然而,在Windows操作系统中,原生并不提供类似的功能。为了弥补这一不足,我们可以借助第三方...