Я уверен, что есть хороший и чистый способ сделать это.Наверное, через D-шину. К сожалению, я не знаю, что это такое, поэтому вот более хитрый подход. Вы можете использовать lsof
для печати файлов, открытых запущенным процессом. Соответствующая опция здесь (из man lsof
):
-c c selects the listing of files for processes executing the
command that begins with the characters of c. Multiple commands
may be specified, using multiple -c options. They are joined in
a single ORed set before participating in AND option selection.
Итак, lsof -c vlc
перечислит все файлы, открытые процессами, чьи имена начинаются с vlc
. Это, однако, перечислит все виды вещей, включая различные библиотеки и другие вещи, которые нам не нужны. Четвертое поле вывода lsof
(по крайней мере, на моем Arch) - это файловый дескриптор файла (для обычных файлов), за которым следует одна буква, описывающая режим, в котором файл был открыт ( r
для чтения, в данном случае). Пятое поле - это тип файла, и здесь мы хотим, чтобы он был REG
для обычного. Собирая все это вместе, мы получаем ( -w
подавляет предупреждения):
$ lsof -wc vlc | awk '$4~"[0-9]r" && $5=="REG"'
vlc 16532 terdon 16r REG 8,19 131338 69731703 /path/to/foo.avi
Чтобы получить только имя файла, вы можете использовать GNU grep
:
$ lsof -wc vlc | awk '$4~"[0-9]r" && $5=="REG"' | grep -o '/.*'
/path/to/foo.avi
И чтобы получить файл только имя:
$ lsof -wc vlc | awk '$4~"[0-9]r" && $5=="REG"' | grep -o '[^/]*$'
foo.avi
Неясно, что именно означает буква М в mpstat
. ПРИМЕЧАНИЕ.:mpstat
является частью пакета sysstat, а также частью семейства *инструментов статистики :
$ rpm -ql sysstat | grep /bin/
/usr/bin/cifsiostat
/usr/bin/iostat
/usr/bin/mpstat
/usr/bin/nfsiostat-sysstat
/usr/bin/pidstat
/usr/bin/sadf
/usr/bin/sar
/usr/bin/tapestat
Скорее всего, буква М означает одно из следующих:
Учитывая, что начало исходного кодаmpstat.c
описывает его как:
- mpstat: per-processor statistics
Я склоняюсь к кратному. Кажется, что это согласуется с исходным кодом, если вы просматриваете его, учитывая, что он изо всех сил старается работать как с одним (UP ), так и с несколькими процессорами (SMP ).
Пример комментариев из кода:
- Structures used to save CPU and NUMA nodes CPU stats
- Compute CPU "all" as sum of all individual CPU (on SMP machines and look for offline CPU.
- Read total number of interrupts received among all CPU.
- What is the highest processor number on this machine?
ПРИМЕЧАНИЕ.:Одна вещь, которую я нахожу любопытной в этом инструменте, заключается в том, что если M предназначено для представления множественного *, это слово никогда не появляется в исходном коде, mpstat.c
.
mpstat
относится к первым многопроцессорным усовершенствованиям из SunOS-4.x
.
Нет намека на multi processor
ни в исходном коде, ни на справочной странице, поэтому здесь это можно рассматривать только как очевидное объяснение.