Linux怎样获取时间戳
- Linux
- 2025-06-23
- 8
在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") "'
系统工具进阶用法
-
高精度时间戳:
-
时区控制:

# 指定时区输出 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))秒" - 生产环境建议使用UTC时区避免时区混乱。
- 敏感系统务必通过NTP/Chrony保持时间同步。
- 毫秒以上精度依赖硬件和内核支持。
常见问题解决
| 方法 | 适用场景 | 精度 |
|---|---|---|
| date +%s | 快速获取秒级时间戳 | 1秒 |
| date +%s.%N | 需要纳秒级精度 | 1纳秒 |
| Python脚本 | 复杂应用或跨平台脚本 | 1毫秒 |
| 日志嵌入 | 实时记录脚本输出 | 自定义 |
注意事项:
通过上述方法,可灵活应对不同场景的时间戳需求,提升系统管理的规范性和效率。
引用说明: 基于Linux核心工具(如GNU date、bash)的官方文档及开发者社区实践整理,确保方法的通用性和可靠性,具体命令参数可查阅man date或访问GNU Coreutils手册。
