преобразование BASH в Python (v2.6) [закрыто]

У меня есть этот код в bash и я не знаю как перевести строки с 'ps -C.....' и ' ps -eo....' любая помощь как написать эти строки?

if [ "$SwapUsedActivity" == "true" ]
then 
    echo "WARNING: Potential Swapping happening please check for increasing swap usage"
    echo "INFO: checking kswapd number of process and cputime, check for TIME colume for how busy kswapd was"
    ps -C kswapd0 -C kswapd1 -C kswapd2 -C kswapd3 -C kswapd4  -o pid,ppid,stime,etime,time,pcpu,args
else
    echo "INFO: High swap space usage detected, not a potential issue but check activity"
fi
else
    echo "INFO: Swap usage within the limits"
fi
if [ $AvgAnnonymousMemoryused -gt 20 ]
then 
    echo "INFO: High residential memory usage detected, this may not be an issue, please check top memory consuming processes"
    echo "INFO: Printing top 10 memory consuming processes"
    ps -eo pid,ppid,user,rss,comm --sort=rss | tail -10 
fi
3
задан 14 July 2015 в 17:45

2 ответа

Можно использовать subprocess модуль:

#!/usr/bin/env python2
import subprocess
command_1 = 'ps -eo pid,ppid,user,rss,comm --sort=rss'.split()
command_2 = 'tail -10'.split()
first = subprocess.Popen(command_1, stdout=subprocess.PIPE)
subprocess.call(command_2, stdin=first.stdout)
  • command_1 команда слева от канала, разделенного на пробелах для вхождения в список, который требуется subprocess.Popen класс

  • command_2 команда слева от разделения канала так же к command_1

  • first объект subprocess.Popen класс, subprocess.Popen выполняется command_1 и отправьте его STDOUT в PIPE так, чтобы мы могли использовать его в качестве входа к command_2

  • subprocess.call выполнится command_2 с его STDIN, прибывающим из STDOUT first

Для ps -C kswapd0 -C kswapd1 -C kswapd2 -C kswapd3 -C kswapd4 -o pid,ppid,stime,etime,time,pcpu,args команда можно сделать:

#!/usr/bin/env python2
import subprocess
command = 'ps -C kswapd0 -C kswapd1 -C kswapd2 -C kswapd3 -C kswapd4  -o pid,ppid,stime,etime,time,pcpu,args'.split()
subprocess.call(command)

Прочитайте официальную документацию относительно подпроцесса для получения большей идеи.

5
ответ дан 1 December 2019 в 13:16

Я использовал бы что-то как psutil для захвата данных программно.

Это собирается взять некоторое время для изучения, таким образом, более быстрая, более пестрая альтернатива к , выполняет команды через конструкцию стиля подоболочки из Python.

import commands
exit_code, output = commands.getstatusoutput('ps -eo pid,ppid,user,rss,comm --sort=rss')
print '\n'.join(output.split('\n')[-10:])

я переместился tail в чистый Python туда, только для забавы.

3
ответ дан 1 December 2019 в 13:16

Другие вопросы по тегам:

Похожие вопросы: