时间命令date,你真的会用了吗?

简介: 时间命令date,你真的会用了吗?

在linux操作系统中,时间命令 date 是用得比较频繁,例如在收集日志,同步服务器集群,包括在大数据开发领域,对于date命令的使用都是很常见的。下面我们就来简单看一下该命令的语法规则。

语法

格式化

  • 使用%Y进行格式化
  • 使用%m进行格式化
  • 使用%d进行格式化
  • 小时
  • 使用%H进行格式化
  • 分钟
  • 使用%M进行格式化
  • 使用%S进行格式化
  • 星期
  • 使用%A进行格式化

-d实现日期的加减

-d选项允许你指定一个日期,然后进行加减操作。可以使用类似"tomorrow"、"next week"、"2 days ago"等相对描述,也可以指定具体的日期。

同时,指定日期的支持的加减操作支持连续加减。-1 month +1 day这样的形式,执行顺序为从左到右依次执行。

使用$()嵌套执行date命令

可以嵌套执行date命令,因为有一些时间无法直接由当前的时间一次执行完成,就需要使用$()执行嵌套版的date命令。

应用实例

首先我们定义一个shell,用于测试我们的应用实例,下面是定义的初始shell

#!/bin/sh
# 输入一个日期参数
if [ $# -lt 1 ];then
        echo "retCode:-1"
        echo "未输入日期参数"
        exit 1
fi
current_day=$1 
ans=`占位命令`
echo ${ans}

获取当前日期上一年的最后一天

date -d "${current_day} -1 year" "+%Y1231"

给日期加上横线

date -d "${current_day}" "+%Y-%m-%d"

获取当前月份

date -d "${current_day}" "+%Y%m"

获取上月的第一天

date -d "${current_day} -1 month" "+%Y%m01"

获取当前年

date -d "${current_day}" "+%Y"

可以发现,活动这些日期主要都是通过改变我们输出的格式,即%Y%m%d和参数-d来实现的,其中,参数-d后面可以跟加减号,从而得到对应的日期。让我们接着练习。

获取下个月的第一天

date -d "${current_day} +1 month" "+%Y%m01"

获取本月的最后一天

last_month_first_day=`date -d "${current_day} +1 month" "+%Y%m01"`
this_month_last_day=`date -d "${last_month_first_day} -1 day" "+%Y%m%d"`

也可以缩写为:

date -d "$(date -d "${current_day} +1 month" "+%Y%m01") -1 day" "+%Y%m%d"

获取上个月的最后一天

date -d "$(date -d "${current_day}" "+%Y%m01") -1 day" "+%Y%m%d"

获取本年的最后一天

date -d "$(date -d "${current_day} +1 year" "+%Y0101") -1 day" "+%Y%m%d"

或者

date -d "${current_day}" "+%Y1231"

结果一样,这说明,每一种时间其实都有多种表示方式,就拿本年的最后一天为例,它既可以是下一年第一天的上一天也可以直接用当前年截断格式化后加上1231。我们需要找到简便一些的方法,减少维护的成本。

date命令的应用场景

以下是一些常见的用途:

  1. 日志记录和时间戳: 在大数据处理中,日志记录是非常重要的。date命令可以用来生成时间戳,将其添加到日志文件中,以便在分析和调试时了解事件发生的时间。
# 生成当前日期和时间的时间戳
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
echo "Event occurred at $timestamp" >> logfile.txt

2.调度任务: 在大数据处理中,任务调度是一个常见的操作。date命令可用于生成定时器,以便在特定的日期和时间执行任务。例如,使用Cron作业调度系统。

# 每天凌晨执行数据处理任务
0 0 * * * /path/to/data_processing_script.sh

3.备份和归档: 在运维中,定期备份是确保系统可靠性和数据完整性的关键操作。date命令可用于创建备份文件名,以确保每个备份都有一个唯一的标识符。

# 创建带有日期的备份文件
backup_filename="backup_$(date +"%Y%m%d").tar.gz"
tar -czf $backup_filename /path/to/data

性能分析: 在运维中,对系统性能进行分析和调优是常见的任务。date命令可用于测量脚本或命令的执行时间,以便确定性能瓶颈。

# 测量命令执行时间
start_time=$(date +%s)
# 执行一些操作
end_time=$(date +%s)
execution_time=$((end_time - start_time))
echo "Script executed in $execution_time seconds."
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
人工智能 安全 Apache
QwenPaw:你的私人 AI 助理 —— 数据归你、记忆进化、多端触达的开源个人智能体
QwenPaw 是一款开源、本地优先的AI个人智能体(Apache 2.0),数据归属用户、记忆自主进化、支持钉钉/飞书/微信等多端触达。3行命令即可部署,内置Coding IDE、Persona人格、定时任务、MCP工具生态与多Agent协作,真正属于你的私有AI助理。
QwenPaw:你的私人 AI 助理 —— 数据归你、记忆进化、多端触达的开源个人智能体
|
Linux
Linux系统之date命令的基本使用
Linux系统之date命令的基本使用
492 3
|
人工智能 运维 监控
智能运维在现代数据中心的应用与挑战
随着云计算和大数据技术的迅猛发展,现代数据中心的运维管理面临着前所未有的挑战。本文探讨了智能运维技术在数据中心中的应用,包括自动化监控、故障预测与诊断、资源优化等方面,并分析了当前面临的主要挑战,如数据安全、系统集成复杂性等。通过实际案例分析,展示了智能运维如何帮助数据中心提高效率、降低成本,并提出了未来发展趋势和建议。
|
Java 编译器 程序员
"语法糖"
【10月更文挑战第17天】
在Linux中,如何查看当前日期和时间?
在Linux中,如何查看当前日期和时间?
|
测试技术 PyTorch 算法框架/工具
魔搭开源推理引擎 DashInfer,助力CPU服务器解锁大模型超强推理
ModelScope推出了预训练大语言模型(LLM)推理引擎DashInfer,采用C++ Runtime编写,提供C++和Python语言接口,具有生产级别的高性能表现,适用于多种CPU架构,包括x86和ARMv9。DashInfer支持连续批处理(Continuous Batching)和多NUMA推理(NUMA-Aware),能够充分利用服务器级CPU的算力,为推理14B及以下的LLM模型提供更多的硬件选择。该项工作已开源。
在Linux中,如何在Linux中使用xargs命令?
在Linux中,如何在Linux中使用xargs命令?
|
存储 开发工具 git
【Git】Git提示Another git process seems to be running in this repository, e.g. an editor opened by ..错误
【Git】Git提示Another git process seems to be running in this repository, e.g. an editor opened by ..错误
1307 0
|
存储 固态存储 文件存储