shell中获得指定时间的前一小时的方法

   使用date命令,比如取2010-01-11 13:24:59的前一小时,命令如下:

 

date -d "1 hours ago 2010-01-11 13:24:59"
 
Shell脚本,我们可以使用`date`命令和一些条件运算符来判断一个进程运行的时间是否超过一小时。这里有几种常见的方式: 1. **bash** (Bourne Again SHell) 的简单方法: ```sh #!/bin/bash pid_to_check=34149 # 替换为你要检查的实际进程ID start_time=$(ps -p $pid_to_check -o lstart | awk '{print $1}' | sed 's/\(..\)T\(.\+\):\(..\+\)/\1:\2:/') # 获取进程启动时间,格式化为"HH:MM" current_time=$(date "+%H:%M") # 当时间 if [ $(($current_time + 60*60)) -gt "$start_time" ]; then # 超过一小时 echo "进程运行时间已超过一小时" else echo "进程运行时间未达一小时" fi ``` 这里假设`ps`命令返回的是类似`Mon Jan 01 00:00:00 2000`这样的格式,`awk`和`sed`用于提取小时和分钟,然后计算差值。 2. **zsh**(Z shell)或其他支持`$(...)`语法的Shell: ```sh #!/usr/bin/zsh pid_to_check=34149 # 替换为实际进程ID start_time=$([[ $(ps -p $pid_to_check -o lstart) =~ ^(\d{2}):(\d{2})$ ]] && echo "${BASH_REMATCH[1]}:${BASH_REMATCH[2]};") # 同样获取并格式化启动时间 current_time=$(( $(date +%H):$(date +%M) )) if (( $(($current_time + 60*60)) > ${start_time//;/} )); then # zsh时间比较 echo "进程运行时间已超过一小时" else echo "进程运行时间未达一小时" fi ``` 3. **Python脚本调用shell命令** (如果允许的话): ```sh #!/bin/bash pid_to_check=34149 start_time=$(ps -o lstart | cut -d ' ' -f 1) current_time=$(date +%H:%M) python -c "import datetime; print(datetime.datetime.now().strftime('%H:%M') > ($start_time + '1:00'))" ``` 这会将时间转换成字符串再进行比较,Python脚本内的时间处理更为精确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值