Без парсинга journalctl (очень медленно, 300-400 мсек сам вызов)? Интересует uptime без учета сна, т.е. реальное время активности. Может есть какая-то утилита?
Поскольку повседневно (daily driver) пользуюсь pwsh, пока этот баг не исправили, встроенный кмдлет Get-Uptime показывает вместо uptime -p аптайм реального времени (без учета сна).
Вот написал такую функцию:
function Show-Uptime
{
[Alias("up")]
param
(
[Parameter()] [switch] $Since,
[Parameter()] [switch] $Real
)
if ($PSBoundParameters.Count -gt 1) # Удаляю второй параметер, если он есть (у штатного uptime похожее)
{
$key = ([array] $PSBoundParameters.Keys)[1]
[void] $PSBoundParameters.Remove($key)
}
$tspan =
if ($PSBoundParameters.Real) { Get-Uptime }
else { [timespan]::FromSeconds((Get-Content /proc/uptime).Split()[0]) }
if ($PSBoundParameters.Since) { (Get-Date) - $tspan }
else
{
$format = "\u\p"
switch ($tspan)
{
{ $_.Days -gt 0 } { $format += "\ d\d" }
{ $_.Hours -gt 0 } { $format += "\ h\h" }
{ $_.Minutes -gt 0 } { $format += "\ m\m" }
default { $format += "\ m\m" }
}
$tspan.ToString($format)
}
}
Как это выглядит:
$ up # как uptime -p (с другим форматом)
up 1d 5h 37m
$ up -s # как uptime -s (с другим форматом)
понедельник, 27 июля 2026 г. 09:41:07
$ up -r # чистое время без сна (как в хоккее)
up 7h 27m
время выполнения:
$ h -c 3
Id Duration CommandLine
-- -------- -----------
41 0.006 up
42 0.003 up -s
43 0.000 up -r





