Сьогодні поговоримо про збір діагностики в macOS
Зміст
Інформація про комп’ютері і програмах
Якщо в меню «Яблуко» вибрати пункт «Про це Mac», а потім натиснути на кнопку «Системний звіт», то ви побачите купу всякої інформації про комп’ютер. Так от, утиліта system_profiler — це те ж саме, але в сто разів більше.
Якщо викликати system_profiler без параметрів, то інформація буде виведена цілком, що в моєму випадку означає 3,8 Мбайт тексту. Так що рекомендую відразу писати що-небудь на зразок system_profiler > ~/Desktop/profile.txt або використовувати grep для пошуку потрібного рядка.
Діагностика MAC
Серед того, що виплюне system_profiler, ви знайдете інформацію не тільки про систему і пристроях, але і про всі програми, драйвера, плагіни, бібліотеках і шрифтах. Заодно будуть виведені частини системних і ще купа всякої лабуди.
Якщо все це вас не цікавить, пишіть system_profiler -detailLevel mini, і тоді отримаєте тільки відомості про комп’ютер.
Ще можна додати параметр -xml, щоб було зручніше обробляти отриману інформацію в скрипті.
Служба каталогів
За спілкування зі службою каталогів відповідає утиліта dscl — Directory Services Command Line, вона свого часу прийшла на зміну netinfo. Повіяло сисадминскими штучками? Так і є, і докладно зупинятися на них ми не будемо.
Для затравки пара команд: dscl . -list /Users виведе список всіх користувачів, а dscl . -read /Users/<ім’я користувача> — інформацію про користувача у вигляді XML. Всередині закодований навіть файл з аватарки!
До речі, якщо запустити dscl без параметрів, то вона увійде в інтерактивний режим, де ви зможете використовувати звичні команди cd і ls для навігації, а дивитися вміст гілок — командою read.
Кеші Directory Services і список користувачів
До dscl додається ще одна утилітка — dscacheutil, вона відповідає за роботу з кешами служби каталогів. Швидше за все, вона відома вам набагато краще, ніж dscl, оскільки тривалий час саме її потрібно було запускати для скидання кеша DNS.
До речі, в останніх версіях macOS це не працює, і замість dscacheutil -flushcache тепер потрібно писати killall -HUP mDNSResponder.
Діагностика MAC
Що до dscacheutil, то її зручно використовувати, щоб виводити список користувачів: dscacheutil -q user. На відміну від того, що видає dscl, результат сприймати набагато легше.
Читаємо і (не) скидаємо значення в NVRAM
У кожного «маку» є енергонезалежна пам’ять, у якій зберігаються важливі для роботи комп’ютера змінні. Що саме там лежить? Дізнатися допоможе команда nvram: напишіть nvram -xp, і все побачите.
Тут є як нешкідливі речі на зразок рівня звуку і останньої розкладки клавіатури, так і більш цікаві зразок ключа Find My Mac і зовсім вже загадкові параметри EFI.
Всі вони представлені в двійковому вигляді, і єдиний уривок опису, який мені вдалося знайти, міститься в утекшем і викладеному на WikiLeaks документі ЦРУ.
Параметри можна задавати командою nvram <змінна>=<значення>, видаляти командою nvram -d <змінна> або завантажувати з файлу за допомогою nvram -f <файл>.
Скинути все можна, набравши nvram -c. Але зазвичай параметри NVRAM скидають, тільки якщо щось пішло не так і комп’ютер не завантажується. Для цього потрібно натиснути Alt-Cmd-P-R відразу після включення і тримати 20 с.
Зверніть увагу: якщо змінюєте параметри утилітою nvram, то вони запишуться в енергонезалежну пам’ять не моментально, а лише при вимиканні комп’ютера в штатному режимі.
Статистика оперативної пам’яті
Існує маса способів подивитися, наскільки завантажена оперативна пам’ять. Мабуть, найпростіший — це відкрити розділ «Пам’ять» в «Моніторинг системи»: там в наочному вигляді представлені найбільш корисні параметри. З командного рядка краще всього використовувати top.
Якщо ж вам потрібна самая докладна інформація, то ви можеш звернутися до vm_stat. Недолік цієї утиліти в тому, що всі значення наводяться в сторінках, рівних 4 Кбайт. Однак перерахувати не так складно, і в інтернеті є маса скриптів — наприклад, ось цей однострочник на Perl перераховує всі мегабайти.
Ще з допомогою vm_stat можна відстежувати зміну завантаження пам’яті з часом. Для цього введіть vm_stat -c <число> <секунди>, де перший параметр — кількість замірів, а другий — інтервал між ними.
Скидання дискового кеша в пам’яті
Тимчасово отримати пару зайвих гігабайтів оперативної пам’яті допомагає команда purge. Вона викликається від рута, не має ніяких параметрів і обнуляє дисковий кеш, приводячи його в той стан, в якому він був після завантаження ОС. Але зазвичай менеджеру пам’яті така допомога не потрібна — він сам поступово вивантажить зайве, якщо оперативка буде закінчуватися.
В довідці кажуть, що purge взагалі потрібен в основному для тестування, але хто знає, як повернеться життя?
Відстеження звернень до файлової системи
Команда fs_usage, запущена без параметрів від рута, виводить запис про кожному зверненні до файлової системи. Потрібно це в тих випадках, коли якась програма падає при запуску або видає загадкові повідомлення про помилки. Якщо проблема в тому, що один з файлів пошкоджений, то ви зможете відшукати його з fs_usage.
Щоб довелося менше ритися у видачі, обмеж повідомлення одним процесом, написавши його назву після fs_usage. Якщо знаєте ID, введіть sudo fs_usage pid .
Інший корисний параметр — це -f, після нього можна задати фільтр за операціями з мережею (-f network), з файлами (-f pathname додасть колонку з шляхом) і так далі. Якщо текст не влазить в рядок, додайте -w.
Подробиці можна подивитися, наприклад, у статті The Mac Observer або в статті moxit.