linux system

uptime

Время работы системы, количество пользователей и средняя нагрузка (load average)

Описание

uptime — утилита, показывающая как долго система работает без перезагрузки, сколько пользователей сейчас в системе и значения load average за последние 1, 5 и 15 минут. Без флагов выводит всё это в одну строку: текущее время, время работы (в формате «X days, H:MM»), число пользователей и три значения нагрузки.

Команда используется в bash-скриптах для мониторинга состояния сервера. В уроке 24 uptime применяется в скрипте системного отчёта: uptime -p выводит читаемое время работы, а через awk извлекается нагрузка на процессор.

Load average — среднее число процессов в очереди на выполнение за 1, 5 и 15 минут. Значение, равное числу CPU-ядер, означает полную загрузку. Превышение числа ядер — система перегружена. Смотреть через nproc или cat /proc/cpuinfo | grep processor | wc -l.

Синтаксис

uptime [OPTIONS] # Полная строка (по умолчанию) uptime # Читаемый формат времени работы uptime -p # Время и дата последней загрузки uptime -s

Флаги и опции

ФлагОписание
(без флага)Полная строка: время суток, время работы, число пользователей, load average 1/5/15 мин
-p, --pretty«Pretty» формат: только время работы в читаемом виде, например up 2 hours, 15 minutes
-s, --sinceДата и время последней загрузки системы в формате YYYY-MM-DD HH:MM:SS
-h, --helpВывести краткую справку и выйти
-V, --versionВывести версию утилиты и выйти

Паттерны использования

Основные вызовы

# Полная строка (как в терминале)
uptime
# Пример вывода:
#  14:23:10 up 2 days, 5:47, 3 users, load average: 0.15, 0.22, 0.18

# Только время работы (читаемо)
uptime -p
# up 2 days, 5 hours, 47 minutes

# Когда загрузилась система
uptime -s
# 2025-06-10 08:35:45

Из урока 24: системный отчёт

#!/usr/bin/env bash
# system_report.sh

# Красивое время работы
echo "Uptime: $(uptime -p)"

# Извлечь load average через awk
# (из строки вида "... load average: 0.15, 0.22, 0.18")
load=$(uptime | awk -F'[a-z]:' '{ print $2 }')
echo "Load average: $load"

Мониторинг нагрузки в скрипте

#!/usr/bin/env bash
# Получить load average за 1 минуту
load1=$(uptime | awk '{print $NF-2}')
# Или через /proc/loadavg (надёжнее в скриптах)
load1=$(cat /proc/loadavg | awk '{print $1}')

# Сравнить с порогом
threshold=2.0
if (( $(echo "$load1 > $threshold" | bc -l) )); then
  echo "WARNING: load average $load1 > $threshold"
fi

Комбинирование с другими командами

# Добавить uptime в отчёт
echo "=== System Report ===" >> report.txt
echo "Generated: $(date)" >> report.txt
echo "Uptime: $(uptime -p)" >> report.txt
echo "Since: $(uptime -s)" >> report.txt

# Показать uptime вместе с памятью
echo "--- Uptime ---"; uptime
echo "--- Memory ---"; free -h

Советы и предупреждения

Совет: /proc/loadavg для скриптов
В скриптах надёжнее читать нагрузку напрямую из /proc/loadavg, а не парсить вывод uptime: read load1 load5 load15 < /proc/loadavg. Формат фиксированный и не зависит от локали системы. Три первых поля — средняя нагрузка за 1, 5 и 15 минут.
Совет: load average и число ядер
Load average нужно интерпретировать относительно числа CPU-ядер. На 4-ядерной машине load average 3.5 — нормально (75% загрузка). Load average 6.0 на 4 ядрах — перегрузка. Узнать число ядер: nproc.
Внимание: uptime -p и системная локаль
Формат вывода uptime -p (например, up 2 hours, 15 minutes) зависит от версии procps-ng и может отличаться в разных дистрибутивах. Для парсинга в скриптах используйте /proc/uptime: первое число — секунды работы системы.