python 操作ps_使用Python分离出ps的输出
在
Linux上,ps aux命令為每個stat輸出一列具有多個列的進程.例如
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...
postfix 22611 0.0 0.2 54136 2544 ? S 15:26 0:00 pickup -l -t fifo -u
apache 22920 0.0 1.5 198340 16588 ? S 09:58 0:05 /usr/sbin/httpd
我希望能夠使用Python來讀取它,并分割出每一行,然后分割每一列,以便它們可以用作值.
在大多數(shù)情況下,這不是一個問題:
ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0]
processes = ps.split('\n')
我現(xiàn)在可以循環(huán)遍歷進程以獲取每一行,并通過空格分割出來
sep = re.compile('[\s]+')
for row in processes:
print sep.split(row)
但是,問題是最后一列,命令有時有空格.在上面的例子中可以看到命令
pickup -l -t fifo -u
這將被分解為
['postfix', '22611', '0.0', '0.2', '54136', '2544', '?', 'S', '15:26', '0:00', 'pickup', '-l', '-t', 'fifo', '-u']
但我真的想要它:
['postfix', '22611', '0.0', '0.2', '54136', '2544', '?', 'S', '15:26', '0:00', 'pickup -l -t fifo -u']
所以我的問題是,如何拆分列,但是當(dāng)涉及命令列時,將整個字符串作為一個列表元素,而不是用空格分割?
總結(jié)
以上是生活随笔為你收集整理的python 操作ps_使用Python分离出ps的输出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql操作语句now_【MySQL数
- 下一篇: 剑指offer有python版吗_剑指O