От FreeBSD tee
страница справочника:
DESCRIPTION
The tee utility copies standard input to standard output, making a copy
in zero or more files. The output is unbuffered.
освободивший буфер сигнал, Bash (или Ваша оболочка) перенаправление вывода (> p
) вероятно, буферизуется, таким образом вызывая другое поведение.
(Я сожалею, что не могу быть более уверен с этим, но я беру +1 на комментарии как индикаторы для этого являющегося правильной дорожкой...),
Существует несколько аспектов к этому вопросу, которые были обращены частично через другие инструменты, но, кажется, нет единственного инструмента, который обеспечивает все функции, которые Вы ищете.
Это оснащает шоу, какие процессы используют большую часть ввода-вывода. Но это испытывает недостаток в опциях показать определенные имена файлов.
$ sudo iotop
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u:0]
6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
По умолчанию это делает что регулярный top
делает для процессов, соперничающих в течение времени ЦП, за исключением диска ввод-вывод. Можно подключить его коаксиальным кабелем для предоставления Вам 30 000-футового мнения при помощи -a
переключитесь так, чтобы это показало накопление процессом, со временем.
$ sudo iotop -a
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
258 be/3 root 0.00 B 896.00 K 0.00 % 0.46 % [jbd2/dm-0-8]
22698 be/4 emma 0.00 B 72.00 K 0.00 % 0.00 % chrome
22712 be/4 emma 0.00 B 172.00 K 0.00 % 0.00 % chrome
1177 be/4 root 0.00 B 36.00 K 0.00 % 0.00 % cupsd -F
22711 be/4 emma 0.00 B 120.00 K 0.00 % 0.00 % chrome
22703 be/4 emma 0.00 B 32.00 K 0.00 % 0.00 % chrome
22722 be/4 emma 0.00 B 12.00 K 0.00 % 0.00 % chrome
Эти инструменты обеспечивают доступ к событиям доступа к файлу, однако они должны быть конкретно предназначены к определенным каталогам или файлам. Таким образом, они не настолько полезны при попытке проследить вниз доступ к файлу жулика неизвестным процессом при отладке проблем производительности.
Также inotify
платформа не обеспечивает подробных сведений о получаемых доступ файлах. Только тип доступа, таким образом, никакая информация о двигаемом вперед-назад объеме данных не доступна, с помощью этих инструментов.
Выставочная общая производительность (чтения и записи) на основе доступа к данному устройству (жесткий диск) или раздел. Но не обеспечивает понимания, какие файлы генерируют эти доступы.
$ iostat -htx 1 1
Linux 3.5.0-19-generic (manny) 08/18/2013 _x86_64_ (3 CPU)
08/18/2013 10:15:38 PM
avg-cpu: %user %nice %system %iowait %steal %idle
18.41 0.00 1.98 0.11 0.00 79.49
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda
0.01 0.67 0.09 0.87 1.45 16.27 37.06 0.01 10.92 11.86 10.82 5.02 0.48
dm-0
0.00 0.00 0.09 1.42 1.42 16.21 23.41 0.01 9.95 12.22 9.81 3.19 0.48
dm-1
0.00 0.00 0.00 0.02 0.01 0.06 8.00 0.00 175.77 24.68 204.11 1.43 0.00
Эта опция является слишком низким уровнем. Это испытывает недостаток в видимости, относительно которой к файлам и/или inodes получают доступ, просто необработанные номера блока.
$ sudo blktrace -d /dev/sda -o - | blkparse -i -
8,5 0 1 0.000000000 258 A WBS 0 + 0 <- (252,0) 0
8,0 0 2 0.000001644 258 Q WBS [(null)]
8,0 0 3 0.000007636 258 G WBS [(null)]
8,0 0 4 0.000011344 258 I WBS [(null)]
8,5 2 1 1266874889.709032673 258 A WS 852117920 + 8 <- (252,0) 852115872
8,0 2 2 1266874889.709033751 258 A WS 852619680 + 8 <- (8,5) 852117920
8,0 2 3 1266874889.709034966 258 Q WS 852619680 + 8 [jbd2/dm-0-8]
8,0 2 4 1266874889.709043188 258 G WS 852619680 + 8 [jbd2/dm-0-8]
8,0 2 5 1266874889.709045444 258 P N [jbd2/dm-0-8]
8,0 2 6 1266874889.709051409 258 I WS 852619680 + 8 [jbd2/dm-0-8]
8,0 2 7 1266874889.709053080 258 U N [jbd2/dm-0-8] 1
8,0 2 8 1266874889.709056385 258 D WS 852619680 + 8 [jbd2/dm-0-8]
8,5 2 9 1266874889.709111456 258 A WS 482763752 + 8 <- (252,0) 482761704
...
^C
...
Total (8,0):
Reads Queued: 0, 0KiB Writes Queued: 7, 24KiB
Read Dispatches: 0, 0KiB Write Dispatches: 3, 24KiB
Reads Requeued: 0 Writes Requeued: 0
Reads Completed: 0, 0KiB Writes Completed: 5, 24KiB
Read Merges: 0, 0KiB Write Merges: 3, 12KiB
IO unplugs: 2 Timer unplugs: 0
Throughput (R/W): 0KiB/s / 510KiB/s
Events (8,0): 43 entries
Skips: 0 forward (0 - 0.0%)
Это - новое дополнение к Ядру Linux и встречаемому с одобрением, таким образом, это находится только в более новых дистрибутивах, таких как Ubuntu 12.10. Моя система Fedora 14 испытывала недостаток в нем 8-).
Это обеспечивает тот же доступ, через который можно пройти inotify
не имея необходимость предназначаться для конкретного каталога и/или файлов.
$ sudo fatrace
pickup(4910): O /var/spool/postfix/maildrop
pickup(4910): C /var/spool/postfix/maildrop
sshd(4927): CO /etc/group
sshd(4927): CO /etc/passwd
sshd(4927): RCO /var/log/lastlog
sshd(4927): CWO /var/log/wtmp
sshd(4927): CWO /var/log/lastlog
sshd(6808): RO /bin/dash
sshd(6808): RO /lib/x86_64-linux-gnu/ld-2.15.so
sh(6808): R /lib/x86_64-linux-gnu/ld-2.15.so
sh(6808): O /etc/ld.so.cache
sh(6808): O /lib/x86_64-linux-gnu/libc-2.15.so
Вышеупомянутые шоу Вы идентификатор процесса, это делает доступ файла и к какому файлу он получает доступ, но он не дает Вам полного использования пропускной способности, таким образом, каждый доступ неразличим к любому другому доступу.
fatrace
опция показывает большую часть обещания для того, чтобы НАКОНЕЦ обеспечить инструмент, который может показать Вам совокупное использование диска ввод-вывод на основе файлов, получаемых доступ, а не процессы, делающие доступ.
Я еще не получил ответ, но я действительно писал этот сценарий (в конце), и это, кажется, делает то, что я хочу. Я не протестировал его в других системах, и это является определенным для Linux.
В основном это просто повторяется strace
в течение 30 секунд, фильтрующих для связанных с файлом системных вызовов и, прилагает усилие для разделения имени файла. Это считает количество случаев того файла в strace
и представляет нумеровавшую страницы сводку пользователю. Это не прекрасно, но количество системных вызовов конкретного файла может иметь некоторую слабую корреляцию к тому, сколько ввода-вывода это выполняет.
Я не протестировал его полностью, но если это не работает из поля, это должно дать людям место для запуска с. Если это больше излагается в деталях, может быть желательно переписать это на высокоуровневый язык как Python.
Если я не получу ответ в течение недели после меньшего количества homebrewed способа сделать это (даже если это будет другой инструмент, который просто считает ввод-вывод конкретного процесса), то я приму это как свой ответ для потомства.
Сценарий:
#!/bin/bash
####
# Creates files underneath /tmp
# Requires commands: timeout strace stty
####
#
# All commands are GNU unless otherwise stated
#
##########################################################
####
## Initialization
####
outputFile=/tmp/out.$RANDOM.$$
uniqueLinesFile=/tmp/unique.$RANDOM.$$
finalResults=/tmp/finalOutput.txt.$$
if [ $# -ne 1 ]; then
echo "USAGE: traceIO [PID]" >&2
exit 2
fi
if ! [[ "$1" =~ ^[0-9]+$ ]]; then
echo "USAGE: traceIO [PID]" >&2
echo -e "\nGiven Process ID is not a number." >&2
exit 2
fi
if [ ! -e /proc/$1 ]; then
echo "USAGE: traceIO [PID]" >&2
echo -e "\nThere is no process with $1 as the PID." >&2
exit 2
fi
if [[ "x$PAGER" == "x" ]]; then
for currentNeedle in less more cat; do
which $currentNeedle >/dev/null 2>&1
if [ $? -eq 0 ]; then
PAGER=$currentNeedle
break;
fi
done
if [[ "x$PAGER" == "x" ]]; then
echo "Please set \$PAGER appropriately and re-run" >&2
exit 1
fi
fi
####
## Tracing
####
echo "Tracing command for 30 seconds..."
timeout 30 strace -e trace=file -fvv -p $1 2>&1 | egrep -v -e "detached$" -e "interrupt to quit$" | cut -f2 -d \" > $outputFile
if [ $? -ne 0 ]; then
echo -e "\nError performing Trace. Exiting"
rm -f $outputFile 2>/dev/null
exit 1
fi
echo "Trace complete. Preparing Results..."
####
## Processing
####
sort $outputFile | uniq > $uniqueLinesFile
echo -e "\n-------- RESULTS --------\n\n #\t Path " > $finalResults
echo -e " ---\t-------" >> $finalResults
while IFS= read -r currentLine; do
echo -n $(grep -c "$currentLine" "$outputFile")
echo -e "\t$currentLine"
done < "$uniqueLinesFile" | sort -rn >> $finalResults
####
## Presentation
####
resultSize=$(wc -l $finalResults | awk '{print $1}')
currentWindowSize=$(stty size | awk '{print $1}')
# We put five literal lines in the file so if we don't have more than that, there were no results
if [ $resultSize -eq 5 ]; then
echo -e "\n\n No Results found!"
elif [ $resultSize -ge $currentWindowSize ] ; then
$PAGER $finalResults
else
cat $finalResults
fi
# Cleanup
rm -f $uniqueLinesFile $outputFile $finalResults
Можно использовать iwatch Используя iWatch
iWatch очень прост в использовании, предположите, что Вы хотите наблюдать изменение в / и т.д. файловая система, просто необходимо выполнить его в консоли
$ iwatch /etc
и iwatch скажет Вам, если что-то изменится в этом каталоге. И если Вы хотите быть уведомленными на электронную почту:
$ iwatch -m admin@smsgw.local /etc
В этом случае администратор получит уведомление по электронной почте (возможно, можно использовать учетную запись шлюза SMS, таким образом, Вы будете сразу предупреждены в любое время и где угодно). И если Вы хотите контролировать много каталогов различия, можно использовать конфигурационный файл. Этот конфигурационный файл является XML-файлом с легкой понятной структурой.
inotify
это корректно? Я не решился использовать что-либо на основе inotify
так как необходимо дать ему пути (который является по существу, что я ищу), и я волновался в сколько наверху было бы то, если бы я просто сделал все внизу /
Это может отфильтровать PID? Я смог терпеть временное замедление, если будет достаточно легким извлечь, какая программа делает его. Веб-сайт также не имеет никакого вывода команды в качестве примера.
– Bratchley
15.08.2013, 17:40
fatrace
и не разработанное это очень передало это. Я действительно ценю, как Вы прикладываете дополнительные усилия, чтобы удостовериться, что люди понимают полное изображение и жаль, что я не мог сделать больше, чем просто upvote и дать щедрость. – Bratchley 19.08.2013, 08:22yum
вытянутый в библиотеках python3 по некоторым причинам. Я сделал afile
на нем и похоже, что это - исполняемый файл ELF.ldd
не показывает ссылок наpython
и ни один не сделалstrings
. Какая-либо идея, почему это беспокоилось python3? – Bratchley 19.08.2013, 08:26iotop
иiostat
вызовы. Кроме того, я выяснил вещь Python, она похожа (на Fedora 18, по крайней мере) существует "отчет энергопотребления"python
сценарий такyum
просто отвечал на факт этоpython
находится в зависимостях об/мин. Так, чтобы конкретная тайна была решена. – Bratchley 19.08.2013, 08:50