日志文件自动切割(tomcat-daemon.out)

目录

1 背景

2 正文

2.1 准备条件

2.2 日志切割脚本


1 背景

Tomcat 在使用 jsvc 以守护进程的方式启动时(daemon.sh ),tomcat自身将会生成另外一个日志文件(catalina-daemon.out),而不是之前的catalina.out,而且catalina-daemon.out日志不会自动切割,会无限增大。

本文就是说明如何定时每天切割日志,将日志文件可以分成多份保存,这样既可以减少单个日志文件的大小,管理起来也比较方便。

本文主要使用系统脚本的方式定时切割日志,适用于任何不会自动切割且会无限增大的文件(不仅限于catalina-daemon.out文件)。

 

2 正文

2.1 准备条件

服务器:Debian 9

服务:以守护进程运行的tomcat(daemon.sh)

服务根目录:/usr/tomcat-8080

 

2.2 日志切割脚本

(1)一般系统定时任务的脚本都放在 /etc/cron* 目录下,故可以创建一个脚本文件 /etc/cron.daily/tomcat-8080-log

vim /etc/cron.daily/tomcat-8080-log

#!/bin/bash
# 切割文件的日期 yyyy-MM-dd
thedate=`date --rfc-3339=date`
# 7天前的日志文件日期
predate=`date +%Y-%m-%d --date="-7 day"`

rmfile="/usr/tomcat-8080/logs/catalina-daemon.${predate}.out"
outfile="/usr/tomcat-8080/logs/catalina-daemon.out"

# 删除X天前的日志文件
if [ -f ${rmfile} ];then
   rm -f ${rmfile}
fi

# 切割文件,将原来文件copy到对应日期的文件,清空原来文件
if [ -f ${outfile} ];then
   cp ${outfile} /usr/tomcat-8080/logs/catalina-daemon.${thedate}.out
   echo "" > ${outfile}
fi

exit 0

命令说明:

date --rfc-3339

3339格式是我们常用的格式,也就是date用"-"分隔,time用":"分隔的形式,分为三种取值精度

date --rfc-3339=ns
2019-09-24 15:14:43.351923327+08:00

date --rfc-3339=seconds
2019-09-24 15:21:29+08:00

date --rfc-3339=date
2019-09-24

 

然后还得将文件 /etc/cron.daily/tomcat-8080-log 设置为可执行

chmod +x /etc/cron.daily/tomcat-8080-log

 

(2)设置系统定时任务,每天23点59分时进行日志文件切割

vim /etc/crontab

# 在尾部加上此行
59 23 * * *    root    /etc/cron.daily/tomcat-8080-log

基本格式 :

m h dom mon dow    user    command
分 时 日 月 周    执行用户     执行的命令
分(m):0~59
时(h):0~23
日(dom):1~31
月(mon):1~12
周(dow):0~6(0表示星期天)

(3)重启定时器,令配置生效

# 重启定时器
/etc/init.d/cron restart
# 启动定时器
/etc/init.d/cron start
# 停止定时器
/etc/init.d/cron stop

# 查看定时器是否在运行
ps -aux|grep cron

 

### 回答1: hadoop-daemon.sh start namenode 的意思是启动 Hadoop 的 NameNode 守护进程。这个命令会在 Hadoop 集群中启动 NameNode,让它开始监听来自其他节点的请求,并管理 HDFS 中的文件系统元数据。在启动 NameNode 之前,需要确保 Hadoop 集群的配置文件已经正确配置,并且所有节点都已经启动。 ### 回答2: hadoop-daemon.sh start namenode命令用于启动Hadoop集群中的NameNode服务。NameNode是Hadoop分布式文件系统(HDFS)的主节点,负责管理文件系统的命名空间和数据块的映射。 当我们执行hadoop-daemon.sh start namenode命令时,它会在集群中找到配置好的NameNode节点,并开始运行NameNode服务。运行该命令后,NameNode会开始进行一系列的初始化操作,包括检查配置文件、建立文件系统元数据、加载存储的文件系统状态等。 在启动过程中,NameNode会读取Hadoop配置文件中的相关参数,如文件系统的副本数、块大小等。这些参数将决定集群中数据的冗余备份和数据块的大小。它还会创建一个日志文件,记录集群的状态和操作信息,以便故障恢复和监控。 一旦NameNode服务成功启动,它将开始监听来自客户端和其他节点的请求,并进行相应的处理,如创建文件、删除文件、移动文件等。NameNode还负责管理集群中各个数据块的位置信息,以便客户端能够有效地读取和写入数据。 总之,hadoop-daemon.sh start namenode命令的执行将启动Hadoop集群中的NameNode服务,使得用户能够在分布式文件系统中进行文件管理和数据处理操作。 ### 回答3: 当我们在使用Hadoop时,要启动Namenode守护进程,可以使用"hadoop-daemon.sh start namenode"命令。 首先,这个命令会调用hadoop-daemon.sh脚本,然后指定"start"参数以表明我们要启动一个守护进程。接下来,我们指定"namenode"参数以告诉脚本我们要启动的是Namenode守护进程。 Namenode是Hadoop中的一个核心组件,主要负责管理和存储文件系统的元数据,例如文件和目录的层次结构,文件的访问权限等。启动Namenode守护进程后,我们可以使用Hadoop系统进行大规模数据处理和分析。 当我们执行"hadoop-daemon.sh start namenode"命令时,脚本会启动Namenode守护进程,并将其设置为在后台运行。脚本会根据Hadoop配置文件中的设置来启动守护进程,并将日志输出到指定的日志文件中。 通过启动Namenode守护进程,我们可以通过web界面或命令行工具来监视和管理Hadoop集群中的文件系统。在启动Namenode守护进程之前,我们需要确保Hadoop集群的配置正确,并且所有必要的服务和资源已经启动和可用。 总的来说,"hadoop-daemon.sh start namenode"命令是启动Hadoop集群中Namenode守护进程的关键步骤之一,它使得我们能够使用Hadoop系统进行大规模数据处理和管理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值