Домой Полезные советы по macOS Как выполнить команды терминала Windows, Linux, macOS на Java и вернуть полный...

Как выполнить команды терминала Windows, Linux, macOS на Java и вернуть полный результат

925
0

Выполнение system command это относительно просто — как только вы увидели это в первый раз.

Он включает в себя использование двух классов Java, класса Runtime и класса Process. В основном вы используете exec method класса Runtime для запуска команды как отдельного процесса.

Вызов метода exec возвращает объект Process для управления подпроцессом. Затем вы используете getInputStream() а также getErrorStream() методы Process объект для чтения нормального вывода команды и вывода ошибки команды. Что вы делаете с выводом выполненной команды, полностью зависит от вас и создаваемого вами приложения.

ProcessBuilder.start() а также Runtime.exec методы создают собственный процесс и возвращают экземпляр подкласса Process это может быть использовано для управления процессом и получения информации о нем.

Класс Process  предоставляет методы для выполнения ввода из процесса, выполнения вывода в процесс, ожидания завершения процесса, проверки состояния выхода из процесса и уничтожения (уничтожения) процесса .

Методы, которые создают процессы, могут не работать для специальных процессов на определенных собственных платформах, таких как собственные процессы управления окнами, процессы- демоны, процессы Win16 / DOS в Microsoft Windows или сценарии оболочки.

По умолчанию созданный подпроцесс не имеет собственного терминала или консоли. Все его стандартные операции ввода-вывода (т.е. stdin, stdout, stderr) будут перенаправлены в родительский процесс, где к ним можно получить доступ через потоки, полученные с помощью методов. getOutputStream() , getInputStream() , а также getErrorStream() ,

Родительский процесс использует эти потоки для подачи входных данных и получения выходных данных из подпроцесса. Поскольку некоторые собственные платформы предоставляют ограниченный размер буфера только для стандартных входных и выходных потоков, невозможность оперативной записи входного потока или чтения выходного потока подпроцесса может привести к блокировке или даже взаимной блокировке подпроцесса.

Ниже приведены два простых примера Java для вашей справки.

Пример-1. Выполните mkdir, ls -ltra и ping в Java

  • Создать файл CrunchifyCommandJava.java
  • казнить mkdir /Users/ashah/Desktop/new-folder
  • казнить ls -ltra /Library
  • казнить ping crunchify.com
CrunchifyCommandJava.java

Джава
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
пакет crunchify. ком . учебные пособия ;
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. IOException ;
Импортировать Java. Ио. InputStream ;
Импортировать Java. Ио. InputStreamReader ;
/ **
* @author Crunchify.com
* Выполнять команды Linux с использованием Java. В этом уроке мы выполняем mkdir, ls -ltra и ping
* /
общественности учебный класс CrunchifyCommandJava {
общественности printOutput getStreamWrapper ( InputStream есть , строка тип ) {
вернуть новый printOutput ( есть , тип ) ;
}
общественности статический недействительным main ( Строка [ ] аргументы ) {
Runtime RT знак равно Продолжительность. getRuntime ( ) ;
CrunchifyCommandJava rte знак равно новый CrunchifyCommandJava ( ) ;
printOutput errorReported , outputMessage ;
пытаться {
Процесс прок знак равно к.т.. exec ( mkdir / Users / ashah / Desktop / new-folder ) ;
errorReported знак равно RTE. getStreamWrapper ( proc . getErrorStream ( ) , «ОШИБКА» ) ;
outputMessage знак равно RTE. getStreamWrapper ( proc . getInputStream ( ) , «ВЫХОД» ) ;
errorReported. начало ( ) ;
выходное сообщение . начало ( ) ;
} ловить ( IOException е ) {
эл . printStackTrace ( ) ;
}
пытаться {
Процесс прок знак равно к.т.. exec ( ls -ltra / Library ) ;
errorReported знак равно RTE. getStreamWrapper ( proc . getErrorStream ( ) , «ОШИБКА» ) ;
outputMessage знак равно RTE. getStreamWrapper ( proc . getInputStream ( ) , «ВЫХОД» ) ;
errorReported. начало ( ) ;
выходное сообщение . начало ( ) ;
} ловить ( IOException е ) {
эл . printStackTrace ( ) ;
}
пытаться {
Процесс прок знак равно к.т.. exec ( ping crunchify.com ) ;
errorReported знак равно RTE. getStreamWrapper ( proc . getErrorStream ( ) , «ОШИБКА» ) ;
outputMessage знак равно RTE. getStreamWrapper ( proc . getInputStream ( ) , «ВЫХОД» ) ;
errorReported. начало ( ) ;
outputMessage . начало ( ) ;
} ловить ( IOException е ) {
эл . printStackTrace ( ) ;
}
}
частный учебный класс printOutput продолжается Нить {
InputStream is знак равно ноль ;
printOutput ( InputStream есть , строка тип ) {
это. является знак равно есть ;
}
общественности недействительным запустить ( ) {
строка s знак равно ноль ;
пытаться {
BufferedReader br знак равно новый BufferedReader (
новый InputStreamReader ( is ) ) ;
в то время как ( ( с знак равно бр . readLine ( ) ) ! знак равно ноль ) {
Система. вне. println ( s ) ;
}
} ловить ( IOException Ioe ) {
все . printStackTrace ( ) ;
}
}
}
}

Обязательно измените путь в указанной выше программе в соответствии с настройками вашей системы.

Выход консоли Eclipse:

Просто запустите вышеуказанную программу как Java-приложение, и вы увидите похожий результат.

результат

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
80
mkdir : / Пользователи / ashah / Рабочий стол / новыйфайлсоздан . TXT : Файл создан
Всего 0
drwxrхтх      3 корневое колесо      96 август 17    2018 Композиции
drwxrхтх @    2 корневое колесо      64 август 17    2018 GPUBundles
drwxrхтх      2 корневое колесо      64 август 17    2018 SystemProfiler
drwxrхтх      2 корневое колесо      64 август 17    2018 ColorPickers
RWRR     1 корневое колесо      0 август 17    2018 , локализованный
drwxrхтх      2 корневое колесо      64 август 17    2018 StartupItems
drwxrхтх      3 корневое колесо      96 август 17    2018 речь
drwxrхтх      4 корневое колесо    128 август 17    2018 Рубин
drwxrхтх @    2 корневое колесо      64 август 17    2018 CoreAnalytics
drwxrхтх      3 корневое колесо      96 август 17    2018 DirectoryServices
drwxrхтх      5 корневое колесо    160 август 17    2018 Веб сервер
drwxrхтх      3 корневое колесо      96 август 17    2018 Perl
drwxrхтх      2 корневое колесо      64 август 17    2018 ScriptingAdditions
drwxrхтх      2 корневое колесо      64 август 17    2018 Клавиатура Раскладка
drwxrхтх      3 корневое колесо      96 август 17    2018 Графика
drwxrхтх      3 корневое колесо      96 август 17    2018 питон
drwxrхтх      8 корневое колесо    256 октябрь 11 16 : 51 Картинки пользователя
drwxrхтх      3 корневое колесо      96 октябрь 11 16 : 51 Хранители экрана
drwxrхтх    51 корневое колесо    1632 октябрь 11 16 : 51 Картинки рабочего стола
drwxrхтх      2 корневое колесо      64 октябрь 18 18 : 51 Элементы контекстного меню
drwxrхтх      2 корневое колесо      64 октябрь 18 18 : 51 Компоненты
drwxrхтх      5 корневое колесо    160 октябрь 21 16: 03 OpenDirectory
drwxrхтх      2 корневое колесо      64 октябрь 23 20 : 43 Методы ввода
drwxrхтх      4 корневое колесо    128 октябрь 29 23 : 49 видео
drwxrхтх      3 корневое колесо      96 ноябрь    5 21 : 20 Сообщения
drwxrхтх @    3 корневое колесо      96 ноябрь 12 22 : 37 MessageTracer
drwxrхтх      3 корневое колесо      96 ноябрь 12 22 : 55 CoreMediaIO
drwxrхтх      3 корневое колесо      96 ноябрь 29 23 : 38 песочница
drwxrхтх      3 корневое колесо      96 ноябрь 29 23 : 38 Файловые
drwxrхтх      8 корневое колесо    256 ноябрь 29 23 : 40 Захват изображения
drwxrхтх      4 корневое колесо    128 ноябрь 29 23 : 41 Джава
drwxrхтх      4 корневое колесо    128 ноябрь 29 23 : 41 QuickTime
drwxrхтх    10 корневое колесо    320 ноябрь 29 23 : 45 Сценарии
drwxrwxrт    182 root admin    5824 ноябрь 29 23 : 47 шрифты
drwxrхтх      4 корневое колесо    128 ноябрь 29 23 : 49 Беглый взгляд
drwxrхтх      4 корневое колесо    128 ноябрь 29 23 : 49 Прожектор
drwxrхтх    37 корневое колесо    1184 ноябрь 29 23 : 50 Скрипты модема
drwxrхтх      4 корневое колесо    128 февраль 11 13: 00 ColorSync
drwxrхтх      4 корневое колесо    128 февраль 11 13: 04 Безопасность
drwxrхтх      8 корневое колесо    256 февраль 11 13: 04 Сервисы PDF
drwxrхтх      3 корневое колесо      96 февраль 11 13 : 05 катакомба
drwxrхтх      9 корневое колесо    288 февраль 11 13 : 05 Каркасы
drwxrхтх      3 корневое колесо      96 февраль 11 13 : 05 Automator
drwxrхтх    10 корневое колесо    320 февраль 11 13 : 05 аудио
drwxrхтх      3 корневое колесо      96 февраль 11 13 : 05 Tanium
drwxrхтх +    68 корневое колесо    2176 февраль 11 13 : 05 ,
drwxrхтх      3 root admin      96 февраль 11 13 : 05 разработчик
drwxrхтх      8 корневое колесо    256 февраль 11 13 : 05 Документация
drwxrхтх      4 корневое колесо    128 февраль 11 13 : 05 DropboxHelperTools
drwxrwxrx    14 root admin    448 февраль 11 13 : 07 поступления
drwxrхтх      4 корневое колесо    128 февраль 11 13 : 07 SystemMigration
drwxrхтх @    4 корневое колесо    128 февраль 11 13 : 10 StagedExtensions
drwxrхтх    14 корневое колесо    448 февраль 11 18 : 26 Виджеты
drwxrхтх    13 корневое колесо    416 февраль 11 18 : 26 расширения
drwxrхтх    29 корневое колесо    928 февраль 11 18 : 35 , ,
drwxrхтх      9 корневое колесо    288 февраль 17 12 : 38 бревна
drwxrwxrwt    11 root admin    352 февраль 22 13 : 29 Тайники
drwxrхтх    11 корневое колесо    352 февраль 22 13 : 36 LaunchAgents
drwxrхтх      2 корневое колесо      64 февраль 22 13 : 36 PreferencePanes
drwxrхтх      9 корневое колесо    288 февраль 22 13 : 36 Интернет PlugIns
drwxrхтт      7 корневое колесо    224 февраль 22 13 : 36 PrivilegedHelperTools
drwxrхтх    18 корневое колесо    576 февраль 22 13 : 36 LaunchDaemons
drwxrхтх    25 администратор root    800 февраль 22 16: 03 Поддержка приложений
докторхрхрх      9 корневое колесо    288 февраль 25 10 : 24 Принтеры
drwxrхтх @    5 корневое колесо    160 февраль 25 10 : 24 Обновления
drwxrхтх    10 корневое колесо    320 февраль 25 14 : 12 Брелки
drwxrхтх    25 корневое колесо    800 февраль 26 08 : 07 Управляемые настройки
drwxrхтх    67 корневое колесо    2144 февраль 26 08 : 07 предпочтения
PING crunchify. ком ( 35.197.114.216 ) : 56 байты данных
64 байты из 35.197.114.216 : icmp_seq = 0 ttl = 54 время = 70.275 Миз
64 байты из 35.197.114.216 : icmp_seq = 1 ttl = 54 время = 73,876 Миз
64 байты из 35.197.114.216 : icmp_seq = 2 ttl = 54 время = 68,134 Миз
64 байты из 35.197.114.216 : icmp_seq = 3 ttl = 54 время = 75,951 Миз
64 байты из 35.197.114.216 : icmp_seq = 4 ttl = 54 время = 70.205 Миз

Пример-2.

  • CrunchifyRunCommand.java
  • Выполнить команду ps -few чтобы получить список всех процессов, запущенных в вашей системе.
CrunchifyRunCommand.java

Джава
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
пакет crunchify. ком . учебные пособия ;
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. IOException ;
Импортировать Java. Ио. InputStreamReader ;
/ **
* @author Crunchify.com
* Выполните команду ps -few в Java, чтобы получить список всех процессов
* /
общественности учебный класс CrunchifyRunCommand {
общественности статический недействительным main ( Строка [ ] аргументы ) {
строка s знак равно ноль ;
пытаться {
// Процесс обеспечивает управление собственными процессами, запущенными ProcessBuilder.start и Runtime.exec.
// getRuntime () возвращает объект времени выполнения, связанный с текущим приложением Java.
Процесс п знак равно Продолжительность. getRuntime ( ) . exec ( ps -few ) ;
BufferedReader stdInput знак равно новый BufferedReader ( новый InputStreamReader ( p . GetInputStream ( ) ) ) ;
BufferedReader stdError знак равно новый BufferedReader ( новый InputStreamReader ( p . GetErrorStream ( ) ) ) ;
// читаем вывод из команды
Система. вне. println ( «Вот стандартный вывод команды: / n» ) ;
в то время как ( ( с знак равно stdInput. readLine ( ) ) ! знак равно ноль ) {
Система. вне. println ( s ) ;
}
// читаем любые ошибки из предпринятой команды
Система. вне. println ( «Вот стандартная ошибка команды (если есть): / n» ) ;
в то время как ( ( с знак равно stdError . readLine ( ) ) ! знак равно ноль ) {
Система. вне. println ( s ) ;
}
Система. выход ( 0 ) ;
} ловить ( IOException е ) {
Система. вне. println ( «произошло исключение — вот что я знаю:» ) ;
эл . printStackTrace ( ) ;
Система. выход (1 ) ;
}
}
}

Выход консоли Eclipse:

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
Вот стандартный вывод команды:
   UID PID PPID    С STIME TTY TIME CMD
     0      1      0    0 Fri09PM ? ?          7 : 14,76 / sbin / launchd
     0      44      1    0 Fri09PM ? ?          0 : 09,67 / usr / sbin / syslogd
     0      45      1    0 Fri09PM ? ?          0 : 12,95 / usr / libexec / UserEventAgent ( Система )
     0      49      1    0 Fri09PM ? ?          0 : 04.41
/ Система / Библиотека / PrivateFrameworks / Удалить . framework / ресурсы / неустановленные
     0      50      1    0 Fri09PM ? ?          0 : 26,75 / usr / libexec / kextd
     0      51      1    0 Fri09PM ? ?          2 : 00,76 / Система / Библиотека / Каркасы / CoreServices . рамки / Версии / A / Каркасы / FSEvents . framework / Версии / A / Поддержка / fseventsd
     0      53      1    0 Fri09PM ? ?          4 : 16.25 / usr / local / jamf / bin / jamf launchDaemon принудительное ограничение monitorNetworkStateChanges
     0      54      1    0 Fri09PM ? ?          0 : 01.29 / Система / Библиотека / PrivateFrameworks / MediaRemote . Framework / Поддержка / Mediaremoted
   55      57      1    0 Fri09PM ? ?          0 : 01.23 / Система / Библиотека / CoreServices / appleeventsd сервер
     0      58      1    0 Fri09PM ? ?          4 : 21,14 / usr / sbin / systemstats демон
     0      60      1    0 Fri09PM ? ?          0 : 41,10 / usr / libexec / configd
     0      61      1    0 Fri09PM ? ?          1 : 03,98 / Система / Библиотека / CoreServices / powerd . связка / питание
     0      62      1    0 Fri09PM ? ?          0 : 00,89 / Библиотека / Поддержка приложений / JAMF / Jamf . Приложение / Содержание / MacOS / JamfDaemon . app / Содержание / MacOS / JamfDaemon
     0      65      1    0 Fri09PM ? ?          0 : 43,84 / USR / libexec / logd
     0      66      1    0 Fri09PM ? ?          0 : 00.02 / usr / libexec / keybagd т 15
     0      73      1    0 Fri09PM ? ?          3 : 26,45 / Система / Библиотека / Каркасы / CoreServices . рамки / Каркасы / Метаданные . Framework / Поддержка / MDS
   240      74      1    0 Fri09PM ? ?          0 : 00.11 / Система / Библиотека / CoreServices / iconservicesd
     0      75      1    0 Fri09PM ? ?          0 : 03,39 / usr / libexec / diskarbitrationd
     0      79      1    0 Fri09PM ? ?          0 : 00,73 / Система / Библиотека / CoreServices / backupd . bundle / Содержание / Ресурсы / backupdпомощник запущен
     0      80      1    0 Fri09PM ? ?          0 : 03,84 / usr / libexec / coreduetd
     0      84      1    0 Fri09PM ? ?          2 : 30,59 / usr / libexec / opendirectoryd
     0      85      1    0 Fri09PM ? ?          0 : 17,45 / Система / Библиотека / PrivateFrameworks / ApplePushService . Framework / APSD
     0      86      1    0 Fri09PM ? ?          0 : 00,67 / Система / Библиотека / PrivateFrameworks / Доска объявлений . framework / Версии / A / Ресурсы / nbstated
     0      87      1    0 Fri09PM ? ?          0 : 16,91 / Система / Библиотека / CoreServices / launchservicesd
   266      88      1    0 Fri09PM ? ?          0 : 06,48 / usr / libexec / timed
     0      89      1    0 Fri09PM ? ?          0 : 25,37 / usr / sbin / securityd я
   213      90      1    0 Fri09PM ? ?          0 : 01.16 / Система / Библиотека / PrivateFrameworks / MobileDevice . framework / Версии / A / Ресурсы / usbmuxd запущен
   205      92      1    0 Fri09PM ? ?          0 : 59,64 / usr / libexec / locationd
     0      94      1    0 Fri09PM ? ?          0: 00,08 autofsd
   244      95      1    0 Fri09PM ? ?          0 : 03.06 / usr / libexec / displaypolicyd к 1
     0      98      1    0 Fri09PM ? ?          0 : 11,56 / usr / libexec / dasd
     0      99      1    0 Fri09PM ? ?          0 : 00,71 / Система / Библиотека / PrivateFrameworks / Heimdal . рамки / помощники / KDC
     0    103      1    0 Fri09PM ? ?          0 : 00,87 / Библиотека / Tanium / TaniumClient / TaniumClient г
110048994    104      1    0 Fri09PM ? ?          0 : 34,02 / Система / Библиотека / CoreServices / loginwindow . приложение / Содержание / MacOS / консоль loginwindow
     0    105      1    0 Fri09PM ? ?          0 : 00,76 / Система / Библиотека / CoreServices / logind
     0    106      1    0 Fri09PM ? ?          0 : 00,66 / Система / Библиотека / PrivateFrameworks / GenerationalStorage . framework / Версии / A / Поддержка / revisiond
     0    107      1    0 Fri09PM ? ?          0 : 00.03 / usr / sbin / KernelEventAgent
     0    109      1    0 Fri09PM ? ?          1 : 58,55 / usr / sbin / bluetoothd
   261    110      1    0 Fri09PM ? ?          13 : 48,55 / usr / libexec / hidd
     0    112      1    0 Fri09PM ? ?          0 : 06,37 / usr / libexec / corebrightnessd запущен
     0    113      1    0 Fri09PM ? ?          0 : 04.23 / usr / libexec / AirPlayXPCHelper
     0    114      1    0 Fri09PM ? ?          1 : 07.01 / usr / sbin / notifyd
   241    116      1    0 Fri09PM ? ?          0 : 11,70 / usr / sbin / distnoted daemon
     0    119      1    0 Fri09PM ? ?          0 : 03.99 / usr / libexec / amfid
     0    123      1    0 Fri09PM ? ?          0 : 09,47 / usr / libexec / syspolicyd
     0    124      1    0 Fri09PM ? ?          0 : 05,81 / Система / Библиотека / Каркасы / Безопасность . рамки / Версия / A / XPCServices / authd. xpc / Содержание / MacOS / authd
     0    142      1    0 Fri09PM ? ?          1 : 31,63 / usr / sbin / cfprefsd daemon
     0    143      1    0 Fri09PM ? ?          0 : 23,54 / Система / Библиотека / CoreServices / coreservicesd
     0    166      1    0 Fri09PM ? ?          0 : 21,34 / Система / Библиотека / PrivateFrameworks / CoreDuetContext . framework / Ресурсы / contextstored

Вот некоторые из процессов, запущенных на моем MacBook Pro . Их довольно много, но наклеено очень мало.

ЧИТАТЬ ТАКЖЕ:  Как сделать резервную копию данных приложения Mac OSX Mail, GMail и GSuite в Dropbox?

Я надеюсь, что это руководство поможет вам выполнить любые команды терминала linux, macOS с помощью простой Java-программы. Дайте мне знать по любым вопросам.

Как выполнить команды терминала Windows, Linux, macOS на Java и вернуть полный результат

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь