Я должен занять общее рабочее время системы через день. Это означает, займите время между, включают и завершают работу и также вычитают время системы, были, приостанавливают. Окончательный результат должен быть общим рабочим временем через день. Я попробовал некоторое внешнее программное обеспечение и мои собственные основанные на команде операции, но все отказавший. Как я могу вычислить это. Есть ли какой-либо путь? Я попробовал идею получить результат как это:
Я думаю, что это - огромная задача. U может помочь мне?
Вся необходимая информация находится в journalctl
. Не полный ответ, но этот сценарий является хорошим началом, которое можно настроить:
$ suspendtime
Oct 31 05:55:19 to Oct 31 16:54:26 lasting 39,547 seconds
Oct 31 23:21:21 to Nov 01 04:29:12 lasting 18,471 seconds
Nov 01 05:51:27 to Nov 01 17:08:34 lasting 40,627 seconds
Nov 02 00:01:33 to Nov 02 10:28:46 lasting 37,633 seconds
Nov 02 18:15:59 to Nov 02 19:10:14 lasting 3,255 seconds
Nov 02 21:17:33 to Nov 03 05:31:54 lasting 33,261 seconds
Nov 03 12:06:39 to Nov 03 14:22:50 lasting 8,171 seconds
Nov 03 22:28:12 to Nov 04 04:17:13 lasting 20,941 seconds
Nov 04 05:49:40 to Nov 04 16:48:52 lasting 39,552 seconds
Nov 04 21:45:48 to Nov 05 04:19:26 lasting 23,618 seconds
Nov 05 05:52:05 to Nov 05 16:32:38 lasting 38,433 seconds
Nov 05 21:12:18 to Nov 06 04:16:50 lasting 25,472 seconds
Nov 06 05:50:45 to Nov 06 16:22:54 lasting 37,929 seconds
Linux uptime 574,835 seconds (6 Days 15 Hours 40 Minutes 35 Seconds)
13 Suspends 366,910 seconds (4 Days 5 Hours 55 Minutes 10 Seconds)
Real uptime 207,925 seconds (2 Days 9 Hours 45 Minutes 25 Seconds)
сценарий удара уже делает тяжелый подъем вычисления количества времени, приостанавливаемого каждый день от journalctl
. Изменение сценария для получения начальной загрузки системы и времена завершения работы было бы незначительным улучшением.
Примечание: Это - только частичный ответ, имея дело только с различием между временем работы и приостановленным временем.
Вы могли определить различие между временем работы и приостановили время, используя часть информации, доступной через /proc/timer_list
.
Пример 1:
$ uptime
11:58:46 up 3:43, 2 users, load average: 0.00, 0.01, 0.05
$ cat /proc/timer_list | grep "now at"
now at 12734872068331 nsecs
Так время работы = (3 * 60 + 43) * 60 = 13,3800 секунд. Активное время = 12 735 секунд. Поэтому Приостановленное время = 13,300 - 12,735 = 645 секунд
Или, просто посмотрите на время смещения для каждого ЦП для получения его приостановленного времени непосредственно:
$ cat /proc/timer_list | grep -A 1 "ktime_get_boottime"
.get_time: ktime_get_boottime
.offset: 668016000993 nsecs
--
.get_time: ktime_get_boottime
.offset: 668016000993 nsecs
--
.get_time: ktime_get_boottime
.offset: 668016000993 nsecs
--
.get_time: ktime_get_boottime
.offset: 668016000993 nsecs
--
.get_time: ktime_get_boottime
.offset: 668016000993 nsecs
--
.get_time: ktime_get_boottime
.offset: 668016000993 nsecs
--
.get_time: ktime_get_boottime
.offset: 668016000993 nsecs
--
.get_time: ktime_get_boottime
.offset: 668016000993 nsecs
Или 668 секунд для каждого ЦП.
, Почему эти два метода отличаются на 23 секунды? Поскольку время работы только перечислено к минуте. Так, чтобы ответ был действительно 645 +59 - 0 секунд (или, завися, если время работы округляется, 645 + - 30 секунд.
Так для того, что Вы, кажется, хотите выполненный это во время завершения работы:
$ cat /proc/timer_list | grep "now at"
now at 25561396304263 nsecs
и делят то число на 3.6e12 (т.е. 7,1 часов активное время)