ubuntu20.04 使用shell脚本ps过滤进程判断进程时间比当前系统时间早一小时为真,系统时间为12小时制,考虑跨天
时间: 2024-09-20 21:12:28 浏览: 58
在Ubuntu 20.04上,你可以使用bash shell脚本来通过`ps`命令检查进程运行时间。首先,你需要获取进程启动时间和当前系统时间(假设是12小时制)。这里是一个基本的示例脚本:
```bash
#!/bin/bash
# 获取当前时间(12小时制)
current_hour=$(date +'%I%p')
# 使用ps -eo args,etimes获取进程启动时间(%b %d %H:%M:%S format)
# awk分割并解析时间部分,计算相差的小时数
processes=$(ps -eo args,etimes | awk -F ' ' '{print $2}' | while read -r time; do
start_time=$(echo "$time" | awk '{split($0,a," "); print a[1] " " a[2]}')
difference=$(( $(date -d "$start_time" +%H) - $(date -d "$current_hour" +%H) ))
# 如果进程启动时间小于当前时间减去一小时,则视为满足条件
if (( difference < -1 )); then
echo "Process '$time' started more than an hour ago."
fi
done)
# 输出结果
echo "Current system time is $current_hour."
echo "$processes"
```
这个脚本会列出所有符合条件的进程,即那些启动时间在一小时前的进程。注意,`date -d`用于比较日期和时间。
**相关问题--:**
1. 脚本如何处理跨越天的时间差异?
2. 如果想要只显示启动超过一整天的进程怎么做?
3. 如何优化脚本性能以处理大量进程信息?
阅读全文