我想獲得Linux機器的運行服務。我已經打印了它們,但我只想獲取服務名稱。我的代碼:獲取正在運行的服務(LINUX JAVA):如何僅解析服務名稱?
public void runningservices()
{
try {
String line;
Process p = Runtime.getRuntime().exec("ps -e");
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line); //<-- Parse data here.
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
}
我得到的結果格式爲:
PID TTY TIME CMD
1 ? 00:00:46 init
2 ? 00:00:00 migration/0
3 ? 00:00:00 ksoftirqd/0
4 ? 00:00:00 watchdog/0
5 ? 00:00:00 events/0
6 ? 00:00:00 khelper
7 ? 00:00:00 kthread
9 ? 00:00:00 xenwatch
10 ? 00:00:00 xenbus
12 ? 00:00:05 kblockd/0
13 ? 00:00:00 kacpid
176 ? 00:00:00 cqueue/0
180 ? 00:00:00 khubd
182 ? 00:00:00 kseriod
246 ? 00:00:00 khungtaskd
247 ? 00:00:00 pdflush
248 ? 00:00:01 pdflush
249 ? 00:00:00 kswapd0
250 ? 00:00:00 aio/0
457 ? 00:00:00 kpsmoused
485 ? 00:00:00 mpt_poll_0
486 ? 00:00:00 mpt/0
487 ? 00:00:00 scsi_eh_0
490 ? 00:00:00 ata/0
491 ? 00:00:00 ata_aux
496 ? 00:00:00 kstriped
505 ? 00:00:00 ksnapd
516 ? 00:00:12 kjournald
547 ? 00:00:00 kauditd
580 ? 00:00:03 udevd
1865 ? 00:00:00 kmpathd/0
1866 ? 00:00:00 kmpath_handlerd
1925 ? 00:00:00 kjournald
但我想它是這樣的:
init
migration
ksoftirqd
watchdog
events
khelper
kthread
xenwatch
xenbus
kblockd
kacpid
cqueue
khubd
kseriod
khungtaskd
pdflush
pdflush
kswapd0
aio
kpsmoused
mpt_poll_0
mpt
scsi_eh_0
ata
ata_aux
kstriped
ksnapd
kjournald
kauditd
udevd
kmpathd
kmpath_handlerd
kjournald
我將如何解析呢?提前致謝。
它給了我很多的過程,我認爲幾乎所有他們要麼正在運行或不?而我正在使用的命令給我運行服務 – 2012-03-09 07:46:41
它完全給你你所期望的,而不用改變你的Java代碼。你有沒有嘗試過? – Bevor 2012-03-09 08:05:08
我試過了,但它給了我額外的過程,我沒有從我以前的命令中獲得 – 2012-03-09 09:27:18