查看当前系统时间
在日常使用Linux或macOS时,打开终端输入date命令就能看到当前的日期和时间。这个命令默认输出类似这样:
Wed Apr 5 14:23:10 CST 2025这比看屏幕右上角还快,特别适合远程连接服务器时快速确认时间。
格式化输出日期
如果只想显示年月日,或者需要特定格式,可以用+%来定义输出样式。比如:
date +"%Y-%m-%d"会输出:
2025-04-05常见的格式符号有:%Y 表示四位年份,%m 是两位月份,%d 是两位日期,%H 小时(24小时制),%M 分钟,%S 秒。
想生成日志文件名时可以直接用:
filename=access_$(date +%Y%m%d).log这样每次运行脚本都会自动带上当天日期。
获取时间戳
有时候需要把时间转成自1970年以来的秒数,也就是时间戳。用下面这条命令就行:
date +%s输出像这样:
1743834190这在写自动化脚本判断文件过期、计算耗时很实用。比如记录脚本开始时间:
start_time=$(date +%s)
# 执行一些操作
sleep 3
end_time=$(date +%s)
echo "耗时 $((end_time - start_time)) 秒"将时间戳转回可读时间
有了时间戳,也可以反过来变成人类看得懂的时间。比如:
date -d @1743834190就会显示对应的具体日期和时间。在分析日志里的时间字段时特别有用。
设置系统时间(需权限)
普通用户一般不建议修改系统时间,但如果你有root权限,并且确实需要校准时间,可以这样设:
sudo date -s "2025-04-05 15:30:00"不过更推荐用timedatectl配合NTP自动同步,避免手动调整出错。
常用场景举例
备份数据库时加上时间标签:
mysqldump mydb > backup_$(date +%F_%H%M).sql清理7天前的日志文件:
find /var/log -name "*.log" -mtime +7 -delete这里-mtime +7表示修改时间超过7天的文件,结合date能精准控制清理范围。
小技巧:时区处理
如果服务器在国外,但你想看东八区时间,可以临时切换:
TZ='Asia/Shanghai' date这样不用改全局设置也能看到北京时间。
这些关于shell中日期时间的操作,看似简单,但在写脚本、排查问题、管理服务器时天天都能用上。熟练掌握后,效率提升很明显。