Содержание
Что такое uptime в линуксе? Иногда вам нужно получить средние значения загрузки из результата безотказной работы через Java-программу для выполнения определенных операций. Как nuke, перезапустите приложение и т. Д. В зависимости от средней загрузки.
Я говорю о линуксе uptime Командный результат. В классе RuntimeMXBean доступно несколько API-интерфейсов управления Java, но все возможности мы обсудим позже. Существует пример того, как получить время безотказной работы с помощью RuntimeMXBean, который я опубликовал некоторое время назад, если вы хотите проверить. Здесь нужно отметить одну вещь: результат времени безотказной работы может варьироваться в зависимости от платформы, т.е. различаться для Mac , Linux, Unix и т. Д.
Давайте сосредоточимся только на результатах работы Linux . У вас могут быть следующие вопросы:
- Как разобрать вывод «uptime» с помощью bash
- Linux: получение даты и времени запуска системы с использованием uptime
- Правильно grep и отображение времени безотказной работы, средняя загрузка
- uptime — Linux: получение даты и времени запуска системы
- Результат разбора Linux Uptime
Вот пример результата uptime команда:
|
1
2
|
sh — 4.1 # время работы
10 : 28 : 21 вверх 189 дни , 19: 00, 1 пользователь , средняя нагрузка : 0,07 , 0,13 , 0,16
|
Теперь в этом примере Java мы будем следовать следующим шагам:
- Создать класс
CrunchifyGetUptimeResultAndParse.java - Выполнить команду uptime через
ProcessBuilderJava API - Получить результат в
uptimeCmdResultпеременная - Применить операцию Java Regex (сопоставление с образцом) к переменной
uptimeCmdResultчтобы получить 1 мин, 5 мин, 15 мин нагрузки в среднем
Вот образец :
|
1
|
^. * / / s + нагрузка / / s + среднее : / / s + ( [ / / d / / . ] + ) , / / s + ( [ / / d / / . ] + ) , / / s + ( [ / / d / / . ] + ) $
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
пакет ком . crunchify. учебник ;
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. InputStream ;
Импортировать Java. Ио. InputStreamReader ;
Импортировать Java. Ио. Читатель ;
Импортировать Java. Ио. StringWriter ;
Импортировать Java. Ио. Писатель ;
Импортировать Java. Util. регулярное выражение. Matcher ;
Импортировать Java. Util. регулярное выражение. Образец ;
/ **
* @author Crunchify.com
*
* /
общественности учебный класс CrunchifyGetUptimeResultAndParse {
общественности статический окончательный Шаблон crunchifyUptimePattern знак равно Шаблон
, компилировать ( ^. * // s + load // s + средний: // s + ([// d //.] +), // s + ([// d //.] +), // s + ([//d//.]+)$ ) ;
общественности статический недействительным main ( Строка [ ] аргументы ) {
строка uptimeCmd знак равно «uptime» ;
строка uptimeCmdResult знак равно runUptimeCommand ( uptimeCmd , правда ) ;
Система. вне. println ( uptimeCmdResult ) ;
crunchifyParseUptimeResult ( uptimeCmdResult ) ;
}
общественности статический недействительным crunchifyParseUptimeResult ( String uptimeCmdResult ) {
Сличитель м знак равно crunchifyUptimePattern . согласовани (uptimeCmdResult);
если ( м . совпадений ( ) ) {
двойной oneMinuteLoadAvg знак равно Двойной . parseDouble ( m . group ( 1 ) ) ;
двойной fiveMinuteloadAvg знак равно Двойной . parseDouble ( m . group ( 2 ) ) ;
двойной fifteenMinuteLoadAvg знак равно Двойной . parseDouble ( m . group ( 3 ) ) ;
Система. вне. println ( Среднее время загрузки 1: + oneMinuteLoadAvg ) ;
Система. вне. println ( Среднее время загрузки 5 минут: + fiveMinuteloadAvg ) ;
Система. вне. println ( 15 мин. Средняя загрузка: + fifteenMinuteLoadAvg ) ;
} еще {
Система. вне. println ( «Исключение при разборе результата работы Uptime:» ) ;
}
}
общественности статический строка runUptimeCommand ( String crunchifyCmd , логический waitForResult ) {
Система. вне. println ( «Выполнение команды Uptime» ) ;
ProcessBuilder crunchifyProcessBuilder знак равно ноль ;
crunchifyProcessBuilder знак равно новый ProcessBuilder ( / bin / bash , -c , crunchifyCmd ) ;
crunchifyProcessBuilder . redirectErrorStream ( true ) ;
Писатель crunchifyWriter знак равно ноль ;
пытаться {
Процесс процесс знак равно crunchifyProcessBuilder . начало ( ) ;
если ( waitForResult ) {
InputStream crunchifyStream знак равно процесс . getInputStream ( ) ;
если ( crunchifyStream ! знак равно ноль ) {
crunchifyWriter знак равно новый StringWriter ( ) ;
символ [ ] crunchifyBuffer знак равно новый символ [ 2048 ] ;
пытаться {
Читатель crunchifyReader знак равно новый BufferedReader ( новый InputStreamReader ( crunchifyStream , UTF-8 ) ) ;
ИНТ считать ;
в то время как ( ( считать знак равно crunchifyReader . читать ( crunchifyBuffer ) ) ! знак равно — 1 ) {
crunchifyWriter . написать ( crunchifyBuffer , 0 , считать ) ;
}
} в конце концов {
crunchifyStream . закрыть ( ) ;
}
crunchifyWriter . toString ( ) ;
crunchifyStream . закрыть ( ) ;
}
}
} ловить ( Исключение е ) {
Система. вне. println ( «Ошибка выполнения команды tcpdump» + е ) ;
}
вернуть crunchifyWriter . toString ( ) ;
}
}
|
Результат:
|
1
2
3
4
5
6
|
Выполнение команды Uptime
12: 30 вверх 46 мин , 2 пользователи , средние нагрузки : 1,57 1,53 1,45
1 Минимальная средняя нагрузка : 1,57
5 Минимальная средняя нагрузка : 1,53
15 Минимальная средняя нагрузка : 1,45
|
Бонусные операции регулярного выражения для результата безотказной работы в Mac :
Просто возвращает количество пользователей:
|
1
2
3
4
5
|
Баш — 3,2 $ Провел
12 : 36 вверх 51 мин , 2 пользователи , средние нагрузки : 1,39 1,52 1,47
Баш — 3,2 $ Провел | тр | резать — f6 — 8 — д
2 пользователи
|
Просто возвращает мин
|
1
2
3
4
5
|
Баш — 3,2 $ Провел
12 : 36 вверх 51 мин , 2 пользователи , средние нагрузки : 1,39 1,52 1,47
Баш — 3,2 $ Провел | СЕПГ 's /.* up / ( [ ^ , ] * / ) ,. * // 1 /'
51 мин
|
0.00 (0%) 0 votes







