CentOS7如何修改日志的时间戳格式(包括24小时格式)

本文详细介绍了如何在Linux系统中修改日志时间戳的显示格式,从传统的格式更改为更易读的ISO 8601标准格式。通过编辑rsyslog配置文件并重启服务,用户可以实现这一更改,同时提供了使用sed命令按特定时间范围过滤日志记录的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 默认的日志时间戳显示为如下形式:
  • /var/log/secure
Jul 18 22:58:22 node0 su: pam_unix(su-l:session): session opened for user root by user(uid=1001)
Jul 18 23:03:31 node0 su: pam_unix(su-l:session): session closed for user root
  • /var/log/messages
Jul 14 09:22:07 node0 NetworkManager[701]: <info>  [1563067327.3908] dhcp4 (ens33):   address 192.168.74.129
Jul 14 09:22:07 node0 NetworkManager[701]: <info>  [1563067327.3914] dhcp4 (ens33):   plen 24 (255.255.255.0)
2. 做如下修改
vim /etc/rsyslog.conf

# Use default timestamp format
# 下一行是原来的配置,将它注释
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 添加下面两行
$template CustomFormat,"%$NOW% %TIMESTAMP:8:15% %HOSTNAME% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate CustomFormat

然后重启 rsyslog 服务
systemctl restart rsyslog.service

再看看结果:

  • /var/log/secure
2019-07-19 01:35:56 node0 polkitd[670]: Loading rules from directory /etc/polkit-1/rules.d
2019-07-19 01:35:56 node0 polkitd[670]: Loading rules from directory /usr/share/polkit-1/rules.d
  • /var/log/messages
2019-07-19 01:47:29 node0 NetworkManager[701]: <info>  [1563472049.7353] dhcp4 (ens33):   nameserver '192.168.74.2'
2019-07-19 01:47:29 node0 NetworkManager[701]: <info>  [1563472049.7353] dhcp4 (ens33):   domain name 'localdomain'
3. 在/etc/profile中设置环境变量
export TIME_STYLE='+%Y/%m/%d %H:%M:%S'

只能修改ls命令的输出日期格式。

4. 现在可以使用sed提取日志记录了
sed -n '/2018-11-08 10:15:00/, /2018-11-11 10:15:00/p' logfile

注意:日期字符串必须在logfile中存在。如果“2018-11-08 10:15:00”或者“2018-11-11 10:15:00”在logfile中没有,那么sed是不会输出任何结果的。

当然如下形式也可以按时间顺序过滤日志

sed -n '/Jul 18 22:09:53/,/Jul 18 22:56:03/p' logfile
sed -n '/Jul 18 22:09:53/,$p' logfile  这里$表示文件结尾

同样要求日期字符串必须在logfile中存在

5. 修改时间为24小时制

终端输入命令:

tzselect

根据提示选择:
5→9→1→1→Yes 5 \rightarrow 9 \rightarrow 1 \rightarrow 1 \rightarrow Yes 5911Yes

rm /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
<think>好的,用户之前已经询问过关于date命令的基本使用,现在他们问的是在CentOS中使用date命令。首先,我需要确认CentOS和其他Linux发行版中的date命令有没有差异。基本上,date命令在大多数Linux系统上都是相似的,但可能会有一些特定的选项或版本差异。用户可能已经了解了一些基本用法,现在可能需要更深入的CentOS相关的内容,或者实际应用案例。 接下来,用户可能是在CentOS服务器上进行系统管理,所以可能需要设置时间、同步时间、生成日志文件名等实际应用。比如,他们可能想知道如何修改时区,或者使用timedatectl命令,这在CentOS 7及以上版本中常用。需要提到date和timedatectl的区别,比如timedatectl可以更直观地管理时区和时间同步。 另外,用户可能遇到权限问题,比如设置时间需要sudo权限,需要提醒他们注意。同时,生成时间戳用于日志文件是常见需求,可以举例说明如何结合date命令在脚本中使用,比如备份文件时添加日期后缀。 还需要考虑用户可能的进阶需求,比如计算过去或未来的时间,这在计划任务或脚本中很有用。例如,使用--date参数来获取昨天或明天的日期,或者进行时间加减运算。 另外,硬件时钟和系统时钟的区别也很重要,特别是在设置时间时,可能需要同步硬件时钟。这时候可以用hwclock命令,提醒用户在修改系统时间后更新硬件时钟。 还要检查是否有常见问题,比如时间不同步导致的服务异常,建议使用NTP服务来同步时间,比如安装chrony或ntpd,并启用服务保持时间准确。 最后,确保回答结构清晰,分点说明,包括基本用法、设置时间、时区调整、时间计算、硬件时钟同步和实际案例,这样用户能快速找到所需信息。同时,相关问题部分可以引导用户进一步学习,比如日志管理、时区设置和计划任务中的动态日期应用。</think>在 CentOS 系统中,`date` 命令是管理时间和日期的核心工具,支持显示、设置系统时间以及格式化输出,以下是具体用法及实际场景示例: --- ### **一、基本操作** #### 1. 显示当前时间 ```bash # 默认输出完整时间(含时区) $ date Thu Oct 19 14:25:03 CST 2023 # 自定义格式(推荐日志场景) $ date "+%Y-%m-%d %H:%M:%S" 2023-10-19 14:25:03 ``` #### 2. 常用格式符号 | 符号 | 说明 | 示例 | |------|----------------------|-----------| | `%Y` | 年份(四位数) | 2023 | | `%m` | 月份(01-12) | 10 | | `%d` | 日期(01-31) | 19 | | `%H` | 小时24小时制) | 14 | | `%M` | 分钟 | 25 | | `%S` | 秒 | 03 | | `%F` | 等价于 `%Y-%m-%d` | 2023-10-19| | `%T` | 等价于 `%H:%M:%S` | 14:25:03 | --- ### **二、设置系统时间** #### 1. 手动设置时间(需 `root` 权限) ```bash # 语法:date MMDDhhmm[[CC]YY][.ss] sudo date 10191430.45 # 设为 10月19日14点30分45秒 ``` #### 2. 同步网络时间(NTP) CentOS 7+ 建议使用 `chrony` 或 `ntpd` 同步: ```bash # 安装 chrony sudo yum install chrony -y # 启动并启用服务 sudo systemctl start chronyd sudo systemctl enable chronyd # 强制同步时间 sudo chronyc -a makestep ``` --- ### **三、时区管理** #### 1. 查看当前时区 ```bash $ date +"%Z %z" CST +0800 # 中国标准时间(东八区) ``` #### 2. 修改时区(非 root 用户需 `sudo`) ```bash # 交互式选择时区 sudo timedatectl set-timezone Asia/Shanghai # 直接指定时区文件 sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ``` --- ### **四、时间计算与扩展** #### 1. 计算过去/未来的时间 ```bash # 显示明天的日期 $ date -d "tomorrow" +%F # 显示 3 天前的日期 $ date -d "3 days ago" +%F # 计算 2 小时后的时间 $ date -d "+2 hours" +%T ``` #### 2. 时间戳转换 ```bash # 获取当前时间戳(秒级) $ date +%s 1697724303 # 将时间戳转为可读格式 $ date -d @1697724303 +"%F %T" 2023-10-19 14:25:03 ``` --- ### **五、实际应用案例** #### 1. 日志文件按日期命名 ```bash # 脚本中动态生成日志文件名 logfile="/var/log/app_$(date +%Y%m%d).log" echo "Error occurred" >> $logfile ``` #### 2. 定时备份文件 ```bash # 每天备份文件,添加日期后缀 tar -czf backup_$(date +%F).tar.gz /path/to/data ``` --- ### **六、注意事项** 1. **权限问题**:修改系统时间需 `root` 权限,普通用户只能查看。 2. **硬件时钟同步**:修改系统时间后,建议同步到硬件时钟: ```bash sudo hwclock --systohc ``` 3. **服务依赖**:修改时间可能导致数据库、计划任务(`cron`)异常,建议在维护窗口操作。 --- ### **相关问题** 1. **如何让系统时间自动同步网络时间?** ➔ 使用 `chronyd` 或 `ntpd` 服务实现持续同步。 2. **如何查看硬件时钟(BIOS时间)?** ```bash sudo hwclock
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值