Скажем, у меня есть программа, которая пишет в кучу мест в файловой системе. Он запускается из одного исполняемого файла. Я хочу определить, в любой момент его запуска (он выполняется в течение длительного времени), сколько байтов он записал на диск.
Большинству людей, похоже, нравятся такие инструменты, как pv
для этой задачи, но в моем случае это не сработает, потому что рассматриваемый исполняемый файл записывает в разные места файловой системы, если бы я написал my_exec | pv <whatever> | cat
или что-то в этом роде , my_exec
просто записывает большой блок данных, не разбирая его по папкам, как следует.
Точно так же, такие вещи, как iotop
, не то, что мне нужно, поскольку я хотел бы иметь возможность прикрепить / отсоединить "наблюдателя" к моему тяжелому процессу ввода-вывода.
Я знаю, что вопрос кажется запутанным, возможно, пример поможет. То, что я хотел бы сделать, это что-то вроде этого.
my_exec &
local exec_pid = $?
mystery_command ${exec_pid} # continuously writes out the number of bytes
# written to disk by my_exec since the invocation
# of mystery_command
Или, альтернативно, что-то, что оборачивает / смотрит другую произвольную команду, например так:
{ my_exec } | mystery_command # my_exec will still write to folders as it
# should, but mystery_command will continuously
# output the number of bytes written to disk by
# the attached {} group.