Я подключаюсь к своему подключенному телефону через команду adb shell, и я запускаю команду vmstat, чтобы наблюдать за различными системными ресурсами. Есть ли способ перенаправить вывод vmstat в файл. Я пытался:
vmstat > /sdcard/vmstat_output.txt
но он не работает. Он создает файл, но внутри него нет данных.
Есть идеи?
Хорошо, я исправил проблему. Я загружаю источник отсюда, и я добавил одну дополнительную строку:
fflush(stdout);
сразу после команды print_line (строка: 134). Затем я перекрестно скомпилировал vmstat.c с помощью agcc:
agcc vmstat.c -o vmstat
и поместите файл в /sdcard/через adb:
adb push vmstat /sdcard/
Теперь перенаправление работает отлично, так как после каждого вызова print_line данные очищаются от файла. Как отметил Марк Полхаус, проблема заключалась в том, что vmstat является блочно-буферизованной командой, а это значит, что сначала необходимо заполнить данные буфером, а затем эти данные будут сброшены в файл.
Большое спасибо! :)
Я думаю, что вывод из vmstat блочно-буферизируется при перенаправлении в файл. Таким образом, vmstat должен будет написать данные о количестве блоков, прежде чем он будет очищен до файла, и если вы прервите его до того, как он достаточно написал, тогда файл пуст. Если вы подождете достаточно долго, у вас должен быть какой-то результат (работал для меня).
У вас может быть vmstat завершение себя (очистка данных) после написания нескольких строк с флагом "-n", но эта функция, кажется, сломана.
/proc/vmstat,/proc/stat и /proc/meminfo имеют ту же самую информацию, которую я считаю, просто не отформатирован так хорошо, как с vmstat.
Обычно я перенаправляю его непосредственно на свою локальную машину через
adb shell vmstat -r 0 -d 1 > ~/tmp/vmstat.log
с помощью переключателя -s на adb
вы можете выбрать устройство и, таким образом, регистрировать одновременно несколько подключенных устройств для разделения журналов.