/proc/uptime: время работы и суммарный простой CPU
Разберите два числа uptime, объясните большой суммарный idle на многоядерной системе и не перепутайте время ядра со временем работы службы.
Почему второе число больше первого
Вы открыли uptime и получили странный на первый взгляд результат: время простоя больше времени работы. Не спешите объявлять счётчик повреждённым. Нужно сначала проверить, какое время суммируется и к какому объекту оно относится.
В учебном разборе сравниваем два числа из одного чтения, а затем повторяем его через короткую паузу. Задача не в вычислении точной загрузки CPU, а в устранении неверной интерпретации единиц и масштаба.
Две величины с разным способом накопления
Первое число в /proc/uptime показывает время работы системы в секундах, включая приостановку suspend. Второе отражает время idle. На многопроцессорной системе суммарный простой CPU может превышать прошедшее календарное время.
Эти значения не являются временем работы конкретного сервиса. Перезапуск программы не перезапускает ядро. У контейнеров и пространств времени есть собственные особенности видимости; перед сравнением двух машин отметьте, в каком окружении выполнено чтение.
Прочитайте пару значений дважды
Выполните команды в Linux. Подписи показывают порядок снимков; sleep не является точным измерительным прибором, а только разносит чтения во времени.
printf "Первый снимок: "
cat /proc/uptime
sleep 1
printf "Второй снимок: "
cat /proc/uptimeПроверьте размерность вывода
Возьмём придуманный пример: uptime равен 100 секундам, idle — 250 секундам на системе с четырьмя логическими CPU. Суммирование простоя нескольких CPU делает такой порядок величин возможным. Деление второго числа на первое без учёта числа CPU не даёт обычный процент загрузки одного процессора.
Если вам нужно время работы приложения, ищите момент запуска выбранного процесса или данные менеджера службы. Запишите это отдельной строкой отчёта. Общесистемный uptime полезен как контекст: он помогает отличить недавнюю загрузку системы от отдельного перезапуска программы.
Проверьте своё рассуждение
Задача: приложение было перезапущено минуту назад, а /proc/uptime показывает несколько суток. Есть ли противоречие?
Нет. Наблюдения относятся к разным жизненным циклам. Для проверки перезапуска приложения выберите его текущий экземпляр; значение uptime описывает видимое время ядра, а не длительность жизни этой программы.
Для загрузки CPU нужен отдельный расчёт
Не стройте точный мониторинг нагрузки на одном делении idle на uptime. Нужны сопоставимые интервалы и правила учёта CPU, suspend и виртуализации. Для разбора состояний процессора переходите к /proc/stat и заранее определяйте, что включено в ваш показатель.
Технические источники
Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.
- Linux man-pages — proc_uptime(5)
- Linux man-pages — proc_stat(5)
- Linux man-pages — time_namespaces(7)
Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.
Нужны собственная Linux-система, смонтированный procfs и Bash. Доступность полей зависит от ядра, его конфигурации, прав и пространств имён. Примеры только читают диагностические интерфейсы; браузерный симулятор их не реализует.
От материала к практике
Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.