Как ни странно, time
мог бы иметь ответ для Вас, но на этот раз это должно быть не shell-built-in time
но автономный вместо этого:
$ /usr/bin/time -v uname
Linux
Command being timed: "uname"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 2%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.12
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 896
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 1
Minor (reclaiming a frame) page faults: 304
Voluntary context switches: 3
Involuntary context switches: 3
Swaps: 0
File system inputs: 56
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Это считает МАКСА RSS, хотя, не VSS, так был бы это быть полезным для Вас или не зависит от Вашей самой задачи в большой степени.
UPD.: Mac OS X' "думает", немного отличается, но тем не менее это time
:
/usr/bin/time -l /Applications/Opera.app/Contents/MacOS/Opera
244.63 real 54.34 user 26.44 sys
284827648 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
711407 page reclaims
1272 page faults
0 swaps
155 block input operations
251 block output operations
98542 messages sent
68330 messages received
16 signals received
699 voluntary context switches
468999 involuntary context switches
Мне не нужно тестировать Debian 6.0.x, но я думаю, что этот способ, вероятно, сработает. Обратите внимание на пример в Arch wiki.
Во-первых, используйте pacmd list-sources
, чтобы найти имя потока монитора вашей звуковой карты. Grep для .monitor
работает довольно хорошо:
$ pacmd list-sources | grep '\.monitor'
name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
name: <alsa_output.usb-stereo-link_stereo-link_1200_USB_DAC-00-DAC.analog-stereo.monitor>
У меня две карты, следовательно, два монитора. Затем отредактируйте ~/.asoundrc
, чтобы настроить для него ALSA-устройство, добавив строки типа (но, конечно, используйте имя Вашего монитора, а не мое):
pcm.pulse_monitor {
type pulse
device alsa_output.usb-stereo-link_stereo-link_1200_USB_DAC-00-DAC.analog-stereo.monitor
}
ctl.pulse_monitor {
type pulse
device alsa_output.usb-stereo-link_stereo-link_1200_USB_DAC-00-DAC.analog-stereo.monitor
}
Затем используйте arecord -f s16_le -t wav -r 44100 -D pulse_monitor /tmp/outfile.wav
, чтобы записать.
Вместо использования эмуляции ALSA можно использовать парекорд
на мониторе, который Вы нашли выше. Делайте так: parecord -d alsa_output.usb-stereo-link_stereo-link_1200_USB_DAC-00-DAC.analog-stereo.monitor outfile.wav
. Это должно работать и с parec
(в примере LAME ниже)
PulseAudio поставляется с утилитой командной строки parecord
, которая может записывать проходящий через нее звук.
Чтобы ее использовать, сначала найдите индекс потока, который вы хотите перехватить. Простой путь из командной строки - это pacmd list-sink-inputs
, который должен дать что-то вроде этого:
1 sink input(s) available.
index: 10720
driver: <protocol-native.c>
⋮
client: 87 <Chromium>
⋮
Я опустил кучу строк; но вы можете увидеть, что это Chromium (где у меня работает музыкальный плеер). Индекс : 10720
бит важен.
Для записи он так же прост, как и парекорд -монитор-поток 10720 outfile.wav
. Вы также можете записать вывод в stdout и использовать его как часть трубы с помощью parec
; например, если у Вас не хватает места на диске, Вы можете напрямую кодировать в MP3:
parec --monitor-stream 10720 --format s16le --channels 2 --rate 44100 \
| lame -r -s 44.1 -b 16 --signed --little-endian --preset medium /dev/stdin outfile.mp3