iotop делает большую часть работы. Однако я нашел следующий скрипт python более полезным:
(он показывает только активные процессы)
#!/usr/bin/python
from glob import *
from time import *
from os.path import *
import sys, os
memory = {}
sleep_time = 5;
unit = 1024.0;
unit_name = "KiB"
for argument in sys.argv:
if argument.find( "=" ) >= 0:
field, value = argument.split( "=" );
if field == "s":
sleep_time = int( value );
if argument == "KB": #fake Kilobyte
unit = 1000.0;
unit_name = "KB"
if argument == "KiB": #real Kilobyte
unit = float(2**10)
unit_name = "KiB"
if argument == "MB": #fake Megabyte
unit = 1e6;
unit_name = "MB"
if argument == "MiB": #real Megabyte
unit = float(2**20)
unit_name = "MiB"
if argument == "GB": #fake Gigabyte
unit = 1e9;
unit_name = "GB"
if argument == "GiB": #real Gigabyte
unit = float(2**30)
unit_name = "GiB"
while True:
os.system( "clear" );
table = [];
for item in memory.items():
item[1]["to_delete"] = 1;
process_list = glob( "/proc/*/status" );
for process in process_list:
name = ""
pid = ""
rb = 0
wb = 0
try:
f = open( process, "r" );
for line in f:
field, value = line.split( ":" );
if field == "Name":
name = value.strip();
if field == "Pid":
pid = value.strip();
break;
f.close();
io_file = dirname( process ) + "/io"
f = open( io_file, "r" )
for line in f:
field, value = line.split( ":" );
if field == "read_bytes":
rb = int(value);
if field == "write_bytes":
wb = int(value);
break;
f.close();
except:
pass
item = memory.get( pid, { "PID":pid, "NAME":name, "READ":rb, "WRITE":wb } );
item["to_delete"] = 0;
if ( rb - item["READ"] > 0 or wb - item["WRITE"] > 0 ):
table += [[ pid, name, rb - item["READ"], wb - item["WRITE"] ]]
item["READ"] = rb;
item["WRITE"] = wb;
memory[pid] = item;
for item in memory.items():
if item[1]["to_delete"]:
memory.pop( item[0] )
print "PID".rjust(7) + " " + "PROCESS".ljust(30)+"READ".rjust(20) + "WRITE".rjust(20)
for row in table:
print row[0].rjust(7) + " " + str(row[1]).ljust(30) + ("%5.2f"%(row[2]/(sleep_time*unit)) + unit_name+"/s").rjust(20) \
+ ("%5.2f"%( row[3]/(sleep_time*unit) ) + unit_name+"/s").rjust(20)
print "\n* ", unit_name, "=", int(unit), "Bytes"
sleep( sleep_time );
Вам, вероятно, понадобится пакет плагинов fluendo.
Он не является бесплатным и имеет цену в 24,95 доллара.
Этот продукт содержит плагины, которые позволяют воспроизводить определенные собственные аудио и видео форматы. Эти плагины не включены в дистрибутив Ubuntu по умолчанию, поскольку они не являются свободным программным обеспечением. Ubuntu руководствуется сильной поддержкой принципов бесплатного программного обеспечения с открытым исходным кодом, и эти принципы управляют тем, что мы можем и будем включать в Ubuntu. Однако мы признаем общую потребность в таких плагинах, как эти, и предлагаем их здесь, чтобы обеспечить безопасный и законный способ для наших пользователей воспроизводить видео и аудио в желаемых форматах. Эти плагины автоматически интегрируются с GStreamer, мультимедийной инфраструктурой, которую Ubuntu использует для видео и звуковых приложений. Fluendo Windows Media Pack предоставляет плагины для всех распространенных форматов Windows Media. Этот пакет включает в себя: Windows Media Audio Decoder (Windows Media 7, 8, 9, 10, Pro, Lossless и Speech) Windows Media Video Decoder (Windows Media 7, 8, 9 и VC1) Windows Media MMS Поддержка протокола Windows Media ASF Demuxer MP3 Аудио декодер LPCM Аудио декодер