2013-09-05 48 views
1

我製作了一個服務器監控腳本,主要監控網絡驅動器使用情況和集羣的作業狀態。它非常基本,主要使用unix命令,如top,status,df等。unix shell腳本中的子進程性能不佳

我依賴使用子流程,它工作得很好,但是在繁重的工作負載下,它開始變得非常慢並且使用大量的CPU容量。最慢的部分是我從grep用戶狀態-a,他們有成千上萬的作業運行。

腳本在無盡的while循環中運行。

picture which might give you an idea what I'm doing

所以我在尋找更有效的解決方案,以做到這一點,任何幫助或提示將不勝感激。我正在使用Python 2.7

+1

即使看不到它們,也無法對腳本的性能說些什麼。 – Denis

+0

嘗試['psutil'模塊](https://code.google.com/p/psutil/)而不是解析'top','''df'等輸出。看看['glances'](https://github.com/nicolargo/glances)如何使用它。 – jfs

回答

2

我建議你看看iotop,尤其是python中的源代碼。

背後的全球哲學是不使用unix工具(top,df ...),但解析其信息來源是/proc

打開一個文件(特別是在像procfs這樣的內存文件系統中)比分叉進程啓動一個unix命令要快得多。