2017-04-01 88 views
2
top -o %MEM -b > file.txt 

的file.txt的是這樣的:如何以XML格式保存top命令的輸出?

top - 15:49:36 up 32 min, 2 users, load average: 1.56, 1.40, 1.01 
Tasks: 83 total, 2 running, 79 sleeping, 2 stopped, 0 zombie 
%Cpu(s): 24.4 us, 8.1 sy, 0.0 ni, 55.0 id, 0.0 wa, 0.0 hi, 12.5 si, 0.0 st 
KiB Mem: 195252 total, 191568 used,  3684 free,  3200 buffers 
KiB Swap: 901116 total,  44 used, 901072 free. 66940 cached Mem 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM  TIME+ COMMAND 
    485 root  20 0 68160 61420 4552 R 58.7 31.5 5:06.10 python3 
    712 www-data 20 0 230940 4436 2044 S 26.1 2.3 3:54.04 apache2 
    819 root  20 0 8488 4400 3856 S 6.5 2.3 1:06.85 tcpdump 
    713 www-data 20 0 230780 4344 2044 S 13.0 2.2 2:34.97 apache2 
    868 root  20 0 6352 3976 2720 S 0.0 2.0 0:00.07 bash 
    785 root  20 0 6340 3876 2636 S 0.0 2.0 0:00.06 bash 
    707 root  20 0 6056 3704 2580 S 0.0 1.9 0:00.59 apache2 
    137 root  20 0 8284 3256 2996 S 0.0 1.7 0:00.34 systemd-journal 
    1 root  20 0 5476 3112 2072 S 0.0 1.6 0:01.04 systemd 
    456 ntp  20 0 5820 3012 2576 S 0.0 1.5 0:00.71 ntpd 
    865 root  20 0 4008 2792 2360 S 0.0 1.4 0:00.04 login 
    938 nobody 20 0 5244 2756 2404 S 0.0 1.4 0:00.04 vsftpd 
    941 nobody 20 0 5244 2756 2404 S 0.0 1.4 0:00.03 vsftpd 
    457 root  20 0 31220 2740 2080 S 0.0 1.4 0:00.01 rsyslogd 
    484 root  20 0 4008 2692 2268 S 0.0 1.4 0:00.05 login 
    944 root  20 0 5076 2620 2352 R 0.0 1.3 0:00.00 top 
    903 root  20 0 5080 2580 2236 T 0.0 1.3 0:00.00 top 
    908 root  20 0 5052 2560 2288 T 0.0 1.3 0:00.08 top 
    425 root  20 0 5416 2420 2100 S 0.0 1.2 0:00.00 cron 
    406 root  20 0 5012 2348 2120 S 0.0 1.2 0:00.00 cron 
    148 root  20 0 12272 2320 1856 S 0.0 1.2 0:00.09 systemd-udevd 
    414 message+ 20 0 5244 2268 1960 S 0.0 1.2 0:00.00 dbus-daemon 
    390 statd  20 0 4576 2264 1764 S 0.0 1.2 0:00.00 rpc.statd 

我應該保存的信息以XML格式而不是txt文件!怎麼做?

我想讀取file.txt並將其轉換爲XML。

我想我可以使用Python,但我不知道如何:

#coding:utf-8 

from xml.dom.minidom import Document 

doc = Document() 
root = doc.createElement('InfoMemoria') 
+0

如果您要求我們編寫Python代碼爲你將'top'程序的輸出轉換成XML,那麼你的請求對於這個站點來說太嚴格了。嘗試自己做,並用[mcve]更新您的問題,以顯示卡住的位置。 – kjhughes

回答

3

top命令沒有選項爲XML輸出,所以你有很多分析要做的(並且這樣的請求對於本站來說太廣泛了)。

然而,sysstat自帶sadf具有-x選項,可能會滿足您的需求。在download page上有DTDXSD文件。

+0

和Python代碼?關於什麼? –

+0

太寬泛。請參閱[**我的評論在您的問題**下面](http://stackoverflow.com/questions/43158524/how-to-save-the-output-of-top-command-in-xml-format/43158678?noredirect = 1#comment73392739_43158524)。 – kjhughes

+0

是否有可能執行sysstat每2分鐘收集所有信息並將其保存爲XML格式? –

2

@kjhughes是對的,沒有集成的輸出方案。你也是對的,你可以使用python。你可以在這裏看到關於xml和minidom的一些信息: https://docs.python.org/2/library/xml.dom.minidom.html

但是,XML是一個模型文件。這意味着你用它來描述一個結構,而不是一組原始數據。

這裏你可以看到一個例子網站: https://pubs.vmware.com/vfabric52/index.jsp?topic=/com.vmware.vfabric.tc-server.2.8/getting-started/tutwebapp-web-xml-file.html

或者在這裏看到的Maven文件編譯Java程序(第4代碼塊): https://spring.io/guides/gs/maven/

所以,你可以決定做你的結論是什麼,但你必須自己決定,因爲關於最高結果沒有標準。因此,我們想出了這個問題......爲什麼要選擇這種格式?

作爲DIREKT回答你的問題: 如何添加節點,的childNodes,以及對的childNodes ...的childNodes你可以在這裏找到: https://wiki.python.org/moin/MiniDom

+1

我想我應該使用XML來交換數據! –

+0

嗨,但仍... XML <=>結構....不是數據....因此,你應該知道結構(你希望把最高結果)看起來像..你必須有一些規則.. 。或者你想把它作爲Web-XML嗎?在HTML網站上呈現它? – Marcus

+0

:我希望每個「PID用戶PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND」作爲標籤,並將這些值作爲屬性! –