You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在未安装Docker的容器内部查看容器运行时长?

如何在未安装Docker的容器内查看容器运行时长?

无效方法说明

  • 使用uptime命令:返回的是宿主机的运行时长,无法获取容器自身的运行时间
  • 使用last reboot命令:会尝试读取/var/log/wtmp文件,但容器内通常无该文件或无有效输出
  • 使用docker ps命令:需要容器内安装Docker环境,不符合当前场景

可行方法

方法1:通过proc文件系统计算容器运行时长

容器的生命周期与内部PID为1的进程绑定,可通过该进程的启动时间推导容器运行时长,执行以下命令直接输出易读结果:

awk '{printf "容器已运行 %.2f 秒\n", ($1*100 - $2)/100}' <(cat /proc/uptime) <(cat /proc/1/stat | awk '{print $22}')

原理:/proc/uptime第一个值是宿主机运行秒数,乘以100得到时钟滴答数;/proc/1/stat第22个值是PID1启动时的时钟滴答数,两者差值除以100即为容器运行秒数。

方法2:查看容器启动时间并计算时长

通过转换PID1进程的启动时间为可读格式,再计算与当前时间的差值:

# 获取容器启动的UNIX时间戳
start_time=$(($(date +%s) - $(($(cut -d' ' -f22 /proc/1/stat) / $(getconf CLK_TCK)))))
# 输出启动时间和运行时长
echo "容器启动时间: $(date -d @$start_time)"
echo "已运行时长: $(printf '%dh%dm%ds' $(($(date +%s) - $start_time)/3600) $(($((date +%s) - $start_time)%3600/60)) $(($((date +%s) - $start_time)%60)))"

方法3:用ps命令查看PID1启动时间(若容器内有ps)

如果容器内安装了ps工具,可直接查看PID1的启动时间并计算时长:

# 获取PID1的启动时间字符串
start_str=$(ps -o lstart= -p 1)
# 转换为时间戳并计算时长
start_ts=$(date -d "$start_str" +%s)
now_ts=$(date +%s)
duration=$((now_ts - start_ts))
echo "容器启动时间: $start_str"
echo "已运行时长: $(printf '%d天%dh%dm%ds' $((duration/86400)) $((duration%86400/3600)) $((duration%3600/60)) $((duration%60)))"

内容的提问来源于stack exchange,提问作者WurmD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:38:18