Linux查看系统启动时间,uptime命令详解
前言
排查服务器"为什么重启了"、评估系统稳定性时,需要知道系统上次启动时间和连续运行时长。uptime 是最直接的命令,一行同时给出当前时间、运行时长、在线用户数和平均负载。本篇拆解它的输出含义,并补充查看精确开机时间的其他方法。
一、uptime 基本用法
uptime
# 输出示例:
# 07:35:12 up 18:22, 2 users, load average: 0.12, 0.08, 0.05
二、输出字段逐项解读
07:35:12:系统当前时间;up 18:22:系统已连续运行 18 小时 22 分钟;如果跨天较长会显示days,例如up 3 days, 04:10;2 users:当前登录的会话数(包含 ssh、终端、图形会话,重复登录会重复计数,不等于在线人数);load average: 0.12, 0.08, 0.05:系统平均负载,分别对应最近 1 分钟、5 分钟、15 分钟 的平均活跃进程数(含运行、等待 CPU、等待 IO 的进程)。
三、平均负载怎么判断是否偏高
平均负载要看 CPU 核心数才有意义:
# 查看 CPU 核心数
nproc
# 或
cat /proc/cpuinfo | grep "processor" | wc -l
经验判断:
- 负载值 < CPU 核数:CPU 处理得过来;
- 负载 ≈ 核数:接近饱和;
- 负载 > 核数持续几分钟:进程在排队,需要结合
top、vmstat排查是 CPU 密集还是 IO 密集; - 1 分钟高、5/15 分钟低:短时高峰;三分钟趋势接近且都偏高:持续压力。
四、uptime 常用参数
# 简洁模式,只显示运行时长
uptime -s
# 显示上次开机时间(精确到时分秒)
# 输出示例:2026-10-21 13:12:49
uptime -p
# 漂亮格式:up 18 hours, 22 minutes
五、其他查看开机时间的方法
# 1. who -b 查看上次启动时间
who -b
# 2. last reboot 列出历次重启记录(查谁重启、何时重启)
last reboot | head
# 3. 读取 /proc/uptime(第一个值为秒数,第二个为空闲秒数)
cat /proc/uptime
# 4. systemd 系统用 systemd-analyze 看启动耗时
systemd-analyze
六、常见坑
up后面格式看错:18:22是小时:分钟,不是当天时间;跨天会出现days;- users 当成真实人数:它统计会话数,一条 ssh 断线未退出也会占一个会话;用
w或who看具体登录人; - 负载和 CPU 占用混淆:高负载可能是磁盘 IO 等待导致,CPU 使用率反而不高,要结合
top中%wa判断; - 不结合核数看负载:4 核机器负载 2.0 很轻松,1 核机器负载 2.0 已经排队;
uptime -s拿到的是开机时间,不是进程启动时间:查某个服务何时启动用ps -o lstart -p PID。
七、排查组合命令
# 一次看:运行时长、负载、CPU 核数、当前登录人
uptime
nproc
w
服务异常时先看 uptime:若运行时长很短,说明机器刚重启,先确认是计划重启、断电还是崩溃重启,再结合 last reboot 和 /var/log/messages 定位原因。
总结
uptime 一行给出当前时间、已运行时长、登录会话数和 1/5/15 分钟负载;判断负载要除以 CPU 核数;精确开机时间用 uptime -s、who -b、last reboot;重启类故障先确认运行时长和重启记录,再往下查系统日志。
遇到问题加QQ23979811 协助处理
Docker停止删除容器
Docker停止删除容器
引言
容器用多了会堆积一堆停止状态的旧实例,占磁盘、干扰排查。停止和删除是两步:先停再删,生产环境删容器前要确认数据已持久化,否则删除即丢失。
停止单个容器
docker stop 容器名或ID
发送SIGTERM优雅停止,等待默认10秒,超时再发SIGKILL强杀。
强制停止
docker kill 容器名或ID
直接SIGKILL,不给进程清理机会,只用于卡死不响应的容器。
删除已停止容器
docker rm 容器名或ID
只能删停止状态的容器,运行中需先stop或加-f。
强制删除运行中容器
docker rm -f 容器名或ID
一步停止并删除,慎用,等价于kill后rm。
批量清理
# 删除所有已停止容器
docker container prune
# 删除全部容器(含运行中,危险)
docker rm -f $(docker ps -aq)
prune只清停止的,相对安全;ps -aq配合rm -f会删光,生产禁止随手执行。
启动与重启
docker start 容器名
docker restart 容器名
停止的容器start可再次拉起,文件系统内改动仍在,只有删容器才清除。
注意事项
- 删除容器前确认挂载卷和数据,容器内非挂载目录删除即丢;
- 数据库容器先备份再删,别以为能找回来;
- -f强制删除跳过优雅停止,可能丢未刷盘数据;
- 批量命令先docker ps -aq列出确认,再删;
- 加了--rm的容器退出自动删除,不留残骸;
- 清理容器不影响镜像,镜像还在可随时重建。
总结
docker stop优雅停止,docker kill强杀,docker rm删已停容器,-f强制删运行中容器,container prune批量清停止实例。核心原则是先确认数据挂载和备份再删,生产慎用rm -f全量清理,执行批量命令前先列出ID核对,理解容器删除会清空非挂载层数据。
Docker查看运行容器
Docker查看运行容器
引言
部署多个服务后,先要看清哪些容器在跑、状态如何、映射了哪些端口、跑了多久。docker ps系列命令是日常运维入口,配合格式化和过滤快速定位目标容器。
只看运行中容器
docker ps
输出容器ID、镜像、命令、创建时间、状态、端口映射、名称,默认只列正在运行的。
查看全部容器(含已停止)
docker ps -a
把Exited状态的容器也列出来,排查退出残留时用。
只看容器ID
docker ps -q
输出纯ID,配合批量停止删除。
自定义输出列
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
只保留关心的列,脚本采集更清晰。
按镜像过滤
docker ps --filter ancestor=nginx:latest
列出指定镜像启动的容器。
查看容器资源占用
docker stats
实时看每个容器CPU、内存、网络IO,Ctrl+C退出。
注意事项
- ps默认不含已停止容器,找退出容器用-a;
- STATUS显示Up时长或Exited码,退出码非0要查日志;
- PORTS列看清宿主端口到容器端口的映射;
- 容器名重复会冲突,--name要唯一;
- 配合docker inspect看单个容器完整配置;
- 批量操作前先用-q列出ID确认范围。
总结
docker ps看运行中容器,-a含已停止,-q取ID批量处理,--format自定义列,--filter按镜像过滤,docker stats看实时资源。运维先列清单确认状态和端口,再决定停止、重启或排查,避免凭印象操作容器。
Docker查看本地镜像
Docker查看本地镜像
引言
用Docker跑服务前先确认本地有哪些镜像、大小多少、标签是什么,避免重复拉取或用错版本。docker images系列命令能列出镜像仓库名、标签、ID、大小和创建时间。
列出全部本地镜像
docker images
# 等价
docker image ls
输出REPOSITORY、TAG、IMAGE ID、CREATED、SIZE五列。
只看镜像ID
docker images -q
只输出短ID,配合批量删除使用。
按名称过滤
docker images nginx
docker images | grep php
列出指定仓库名或关键词的镜像。
查看镜像详细信息
docker inspect nginx:latest
JSON输出架构、环境变量、挂载点、默认启动命令等。
查看镜像历史层
docker history nginx:latest
看每层做了什么改动、每层大小,理解镜像分层结构。
过滤和格式化
docker images --format "{{.Repository}}:{{.Tag}} {{.Size}}"
自定义输出列,脚本里取数更方便。
注意事项
- 同一个镜像不同TAG可能共用层,SIZE不重复累加;
- 悬空镜像
是旧版本残留,用prune清理; - 镜像大小是解压后占用,下载压缩包更小;
- 看磁盘占用用docker system df;
- 未被任何容器引用的镜像可安全删除;
- 拉取前先docker images判断是否已存在。
总结
docker images列出本地镜像,-q取ID、按仓库名过滤、inspect看详情、history看分层、--format自定义输出。日常先列镜像确认版本和大小,再决定拉取或删除,配合system df掌握磁盘占用。