date +%s
输出Unix时间戳(10位秒级),2. 毫秒级时间戳:date +%s%3N
,3. 自定义格式:date +"%Y-%m-%d %H:%M:%S"
输出标准时间格式,4. 文件时间戳:stat -c %y 文件名
查看文件修改时间在Linux系统中,打印时间戳是系统管理、日志记录和脚本开发的常见需求,时间戳(Timestamp)通常指从1970年1月1日00:00:00 UTC(协调世界时) 起经过的秒数或毫秒数(称为Unix时间戳),也包含可读的日期时间格式,以下是几种高效可靠的方法:
命令行工具:date
(最常用)
date
命令是Linux内置的时间管理工具,支持自定义格式输出时间戳:
# 打印当前时间的Unix时间戳(秒级) date +%s # 示例输出:1719392467 # 毫秒级时间戳(需结合其他命令) echo $(date +%s)$(date +%N | cut -b1-3) # 输出:1719392467123 # 自定义可读格式 date +"%Y-%m-%d %H:%M:%S" # 输出:2025-06-26 14:01:07
关键格式参数:
%s
: Unix时间戳(秒)%N
: 纳秒(用于毫秒计算)%Y
/%m
/%d
: 年/月/日%H
/%M
/%S
: 时/分/秒
脚本语言:Bash/Python/Perl
Bash脚本
#!/bin/bash # 直接调用date current_time=$(date +%s) echo "Timestamp: $current_time"
Python
import time # 秒级时间戳 print(time.time()) # 毫秒级时间戳 print(int(time.time() * 1000)) # 格式化时间 print(time.strftime("%Y-%m-%d %H:%M:%S"))
Perl
use strict; use warnings; print time; # 输出秒级时间戳
日志文件自动添加时间戳
在脚本或应用日志中自动嵌入时间戳:
# 每行日志前添加时间戳 echo "Error occurred" | awk '{print strftime("%Y-%m-%d %H:%M:%S"), $0}' # 输出:2025-06-26 14:05:22 Error occurred # 永久添加到脚本(在~/.bashrc中设置) export PROMPT_COMMAND='echo -n "$(date +"%T") "'
系统工具进阶用法
-
高精度时间戳:
# 使用纳秒级工具(需安装`chrony`或`ntp`) date +"%s.%N" # 输出:1719392467.123456789
-
时区控制:
# 指定时区输出 TZ='Asia/Shanghai' date +"%Y-%m-%d %H:%M:%S" # 上海时间
-
文件时间戳:
stat -c %y filename # 查看文件修改时间 touch -d "2025-01-01" newfile # 设置文件时间戳
常见问题解决
-
时区不一致:
通过timedatectl
命令校准:timedatectl set-timezone Asia/Shanghai # 设置为上海时区
-
时间同步失败:
使用NTP服务同步:sudo apt install ntp # Debian/Ubuntu sudo systemctl start ntpd
-
脚本中时间计算:
start=$(date +%s) # 执行任务... end=$(date +%s) echo "耗时:$((end - start))秒"
方法 | 适用场景 | 精度 |
---|---|---|
date +%s |
快速获取秒级时间戳 | 1秒 |
date +%s.%N |
需要纳秒级精度 | 1纳秒 |
Python脚本 | 复杂应用或跨平台脚本 | 1毫秒 |
日志嵌入 | 实时记录脚本输出 | 自定义 |
注意事项:
- 生产环境建议使用UTC时区避免时区混乱。
- 敏感系统务必通过NTP/Chrony保持时间同步。
- 毫秒以上精度依赖硬件和内核支持。
通过上述方法,可灵活应对不同场景的时间戳需求,提升系统管理的规范性和效率。
引用说明: 基于Linux核心工具(如GNU date、bash)的官方文档及开发者社区实践整理,确保方法的通用性和可靠性,具体命令参数可查阅man date
或访问GNU Coreutils手册。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/36785.html