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