uptime2 /proc/uptime

本文介绍了Linux系统中/proc/uptime文件的内容及其用途。详细解释了如何通过该文件计算系统运行时间和空闲率,并给出了具体的计算公式及实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Linux中,我们常常会使用到uptime命令去看看系统的运行时间,它与一个文件有关,就是/proc/uptime,下面对其进行详细介绍。

View Code BASH
1
2
3
4
master@jay-intel:~$ cat /proc/uptime
6447032.12 48185264.69
master@jay-intel:~$ cat /proc/cpuinfo  | grep processor | wc -l
8

第一列输出的是,系统启动到现在的时间(以秒为单位),这里简记为num1;
第二列输出的是,系统空闲的时间(以秒为单位),这里简记为num2。

注意,很多很多人都知道第二个是系统空闲的时间,但是可能你不知道是,在SMP系统里,系统空闲的时间有时会是系统运行时间的几倍,这是怎么回事呢?
因为系统空闲时间的计算,是把SMP算进去的,就是所你有几个逻辑的CPU(包括超线程)。

系统的空闲率(%) = num2/(num1*N) 其中N是SMP系统中的CPU个数。

从上面我的一台机器上的数据可知,
本机启动到现在的时间长度为:6447032.12 seconds = 74.6 days
空闲率为:48185264.69/(6447032.12*8)=93.4%

系统空闲率越大,说明系统比较闲,可以加重一些负载;而系统空闲率很小,则可能考虑升级本机器硬件或者迁移部分负载到其他机器上。

Some docs from Redhat:
The first number is the total number of seconds the system has been up. The second number is how much of that time the machine has spent idle, in seconds. (Jay’s comments: Please pay attention to SMP system.)

### /proc/uptime 文件内容解释 在 Linux 系统中,`/proc/uptime` 是一个虚拟文件,用于提供关于系统运行时间和空闲时间的信息。该文件的内容由两个浮点数组成,分别表示不同的统计信息。 #### 运行时间 第一个数值是以秒为单位的系统总运行时间。这个值反映了自系统最后一次启动以来所经过的时间长度[^1]。例如,在给定的例子 `6447032.12 48185264.69` 中,第一个数字 `6447032.12` 表示系统已经运行了大约 **6447032.12 秒**。通过简单的转换可以将其转化为更易读的形式: ```bash echo "scale=2; $(awk '{print $1}' /proc/uptime)/60/60/24" | bc ``` 上述脚本能够将秒数转换成天数形式显示系统的运行时间。 #### 空闲时间 第二个数值同样以秒为单位,但它反映的是整个系统中的所有 CPU 核心总的空闲时间之和[^2]。继续以上述例子为例,`48185264.69` 就是所有处理器累计起来未被使用的总时间。如果要计算单个 CPU 的平均空闲时间,则需除以实际存在的 CPU 数量。可以通过如下命令获取当前主机上的逻辑 CPU 总数: ```bash grep -c '^processor' /proc/cpuinfo ``` 因此,对于拥有多个处理单元的情况来说,整体闲置比例可能看起来较高,但实际上每颗核心的工作负载可能是平衡分布的状态之一部分[^4]。 综合来看,这两个数据可以帮助管理员评估服务器性能以及稳定性等方面情况;比如利用它们来推导出CPU利用率公式 `(total uptime - idle time) / total uptime * 100%` 来衡量一段时间内的繁忙程度等指标[^3]。 ```python def calculate_cpu_usage(total_uptime, idle_time, num_cpus): """ 计算CPU使用率 参数: total_uptime (float): 系统总运行时间(来自/proc/uptime的第一个字段) idle_time (float): 所有CPU核总计的空闲时间(来自/proc/uptime的第二个字段) num_cpus (int): 当前机器上可用的CPU数量 返回: float: 百分比形式表达的CPU占用率 """ effective_idle = idle_time / num_cpus cpu_utilization = ((total_uptime - effective_idle) / total_uptime) * 100 return round(cpu_utilization, 2) # 示例调用 num_cpus = int(subprocess.check_output("grep -c '^processor' /proc/cpuinfo", shell=True)) with open('/proc/uptime', 'r') as f: uptime_data = f.read().split() cpu_usage = calculate_cpu_usage(float(uptime_data[0]), float(uptime_data[1]), num_cpus) print(f"CPU Usage Percentage: {cpu_usage}%") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值