Как перенаправить вывод vmstat в файл в ОС Android?

1

Я подключаюсь к своему подключенному телефону через команду adb shell, и я запускаю команду vmstat, чтобы наблюдать за различными системными ресурсами. Есть ли способ перенаправить вывод vmstat в файл. Я пытался:

vmstat > /sdcard/vmstat_output.txt

но он не работает. Он создает файл, но внутри него нет данных.

Есть идеи?

Теги:
redirect
android-ndk
adb

3 ответа

1
Лучший ответ

Хорошо, я исправил проблему. Я загружаю источник отсюда, и я добавил одну дополнительную строку:

fflush(stdout);

сразу после команды print_line (строка: 134). Затем я перекрестно скомпилировал vmstat.c с помощью agcc:

agcc vmstat.c -o vmstat

и поместите файл в /sdcard/через adb:

adb push vmstat /sdcard/

Теперь перенаправление работает отлично, так как после каждого вызова print_line данные очищаются от файла. Как отметил Марк Полхаус, проблема заключалась в том, что vmstat является блочно-буферизованной командой, а это значит, что сначала необходимо заполнить данные буфером, а затем эти данные будут сброшены в файл.

Большое спасибо! :)

3

Я думаю, что вывод из vmstat блочно-буферизируется при перенаправлении в файл. Таким образом, vmstat должен будет написать данные о количестве блоков, прежде чем он будет очищен до файла, и если вы прервите его до того, как он достаточно написал, тогда файл пуст. Если вы подождете достаточно долго, у вас должен быть какой-то результат (работал для меня).

У вас может быть vmstat завершение себя (очистка данных) после написания нескольких строк с флагом "-n", но эта функция, кажется, сломана.

/proc/vmstat,/proc/stat и /proc/meminfo имеют ту же самую информацию, которую я считаю, просто не отформатирован так хорошо, как с vmstat.

  • 0
    Спасибо! Кажется, это имеет смысл. Можно ли изменить блоки данных, которые должны быть заполнены до сброса? например, через файл конфигурации или, альтернативно, через изменение и кросс-компиляцию исходного кода vmstat? Другой способ, которым я могу воспользоваться, - принудительно перенаправить стандартный вывод в файл для всех запущенных процессов, например, через log.redirect-stdio, ссылку здесь .
  • 0
    Подана ссылка на отчет об ошибке для неработающего флага vmstat -n.
Показать ещё 5 комментариев
1

Обычно я перенаправляю его непосредственно на свою локальную машину через

adb shell vmstat -r 0 -d 1 > ~/tmp/vmstat.log

с помощью переключателя -s на adb вы можете выбрать устройство и, таким образом, регистрировать одновременно несколько подключенных устройств для разделения журналов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню