shell判断进程时间大于现在系统时间一小时则为真,系统为12小时计数法,且注意隔天时候的错误。多种方法举例说明
时间: 2024-09-20 11:11:55 浏览: 192
在shell脚本中,判断一个进程运行时间是否超过12小时可以使用`ps`, `date` 和 `expr` 或者 `awk` 等命令配合处理。以下是几种方法:
1. 使用`ps` + `expr`:
```sh
# 获取进程PID
pid=$(pgrep -f "your_process_name")
# 使用expr计算运行时间(单位为秒)
runtime=$(( $(ps -p $pid -o etime= | cut -d':' -f1) * 60 + $(ps -p $pid -o etime= | cut -d':' -f2) ))
# 转换成12小时制,并加上一天的总秒数(假设一天有86400秒)
total_hours=$((runtime / 3600 + (24 - expr $(date +%H) : '%h') * 24))
# 判断是否超过12小时
if [ $total_hours -gt 1 ]; then
echo "进程已运行超过12小时"
else
echo "进程未运行超过12小时"
fi
```
2. 使用`awk`:
```sh
pid=$(pgrep -p $pid -o etime= | awk '{print $1*60+$2}' | sed 's/://g')
total_hours=$(expr $runtime / 3600)
if ((total_hours > 1)); then
echo "进程已运行超过12小时"
else
echo "进程未运行超过12小时"
fi
```
请注意,在处理跨天情况时,上述脚本可能会有误差,因为它们假设一天有24小时。如果需要精确到每天的12小时周期,你可能需要结合日志文件或其他方式来确定实际运行时间。
阅读全文
相关推荐









