Збір діагностики в macOS за допомогою командного рядка

sbor diagnostiki v macos s pomoshhyu komandnojj stroki26 Збір діагностики в macOS за допомогою командного рядка

Сьогодні поговоримо про збір діагностики в macOS

Зміст

  • Інформація про комп’ютері і програмах
  • Служба каталогів
  • Кеші Directory Services і список користувачів
  • Читаємо і (не) скидаємо значення в NVRAM
  • Статистика оперативної пам’яті
  • Скидання дискового кеша в пам’яті
  • Відстеження звернень до файлової системи
  • Інформація про комп’ютері і програмах

    Якщо в меню «Яблуко» вибрати пункт «Про це Mac», а потім натиснути на кнопку «Системний звіт», то ви побачите купу всякої інформації про комп’ютер. Так от, утиліта system_profiler — це те ж саме, але в сто разів більше.

    Якщо викликати system_profiler без параметрів, то інформація буде виведена цілком, що в моєму випадку означає 3,8 Мбайт тексту. Так що рекомендую відразу писати що-небудь на зразок system_profiler > ~/Desktop/profile.txt або використовувати grep для пошуку потрібного рядка.

    sbor diagnostiki v macos s pomoshhyu komandnojj stroki27 Збір діагностики в macOS за допомогою командного рядкаДіагностика 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.

    sbor diagnostiki v macos s pomoshhyu komandnojj stroki28 Збір діагностики в macOS за допомогою командного рядкаДіагностика MAC

    Що до dscacheutil, то її зручно використовувати, щоб виводити список користувачів: dscacheutil -q user. На відміну від того, що видає dscl, результат сприймати набагато легше.

    Читаємо і (не) скидаємо значення в NVRAM

    У кожного «маку» є енергонезалежна пам’ять, у якій зберігаються важливі для роботи комп’ютера змінні. Що саме там лежить? Дізнатися допоможе команда nvram: напишіть nvram -xp, і все побачите.

    Тут є як нешкідливі речі на зразок рівня звуку і останньої розкладки клавіатури, так і більш цікаві зразок ключа Find My Mac і зовсім вже загадкові параметри EFI.

    Всі вони представлені в двійковому вигляді, і єдиний уривок опису, який мені вдалося знайти, міститься в утекшем і викладеному на WikiLeaks документі ЦРУ.

    sbor diagnostiki v macos s pomoshhyu komandnojj stroki29 Збір діагностики в macOS за допомогою командного рядка

    Параметри можна задавати командою nvram <змінна>=<значення>, видаляти командою nvram -d <змінна> або завантажувати з файлу за допомогою nvram -f <файл>.

    Скинути все можна, набравши nvram -c. Але зазвичай параметри NVRAM скидають, тільки якщо щось пішло не так і комп’ютер не завантажується. Для цього потрібно натиснути Alt-Cmd-P-R відразу після включення і тримати 20 с.

    Зверніть увагу: якщо змінюєте параметри утилітою nvram, то вони запишуться в енергонезалежну пам’ять не моментально, а лише при вимиканні комп’ютера в штатному режимі.

    Статистика оперативної пам’яті

    Існує маса способів подивитися, наскільки завантажена оперативна пам’ять. Мабуть, найпростіший — це відкрити розділ «Пам’ять» в «Моніторинг системи»: там в наочному вигляді представлені найбільш корисні параметри. З командного рядка краще всього використовувати top.

    Якщо ж вам потрібна самая докладна інформація, то ви можеш звернутися до vm_stat. Недолік цієї утиліти в тому, що всі значення наводяться в сторінках, рівних 4 Кбайт. Однак перерахувати не так складно, і в інтернеті є маса скриптів — наприклад, ось цей однострочник на Perl перераховує всі мегабайти.

    sbor diagnostiki v macos s pomoshhyu komandnojj stroki30 Збір діагностики в macOS за допомогою командного рядка

    Ще з допомогою vm_stat можна відстежувати зміну завантаження пам’яті з часом. Для цього введіть vm_stat -c <число> <секунди>, де перший параметр — кількість замірів, а другий — інтервал між ними.

    Скидання дискового кеша в пам’яті

    Тимчасово отримати пару зайвих гігабайтів оперативної пам’яті допомагає команда purge. Вона викликається від рута, не має ніяких параметрів і обнуляє дисковий кеш, приводячи його в той стан, в якому він був після завантаження ОС. Але зазвичай менеджеру пам’яті така допомога не потрібна — він сам поступово вивантажить зайве, якщо оперативка буде закінчуватися.

    В довідці кажуть, що purge взагалі потрібен в основному для тестування, але хто знає, як повернеться життя?

    Відстеження звернень до файлової системи

    Команда fs_usage, запущена без параметрів від рута, виводить запис про кожному зверненні до файлової системи. Потрібно це в тих випадках, коли якась програма падає при запуску або видає загадкові повідомлення про помилки. Якщо проблема в тому, що один з файлів пошкоджений, то ви зможете відшукати його з fs_usage.

    Щоб довелося менше ритися у видачі, обмеж повідомлення одним процесом, написавши його назву після fs_usage. Якщо знаєте ID, введіть sudo fs_usage pid .

    Інший корисний параметр — це -f, після нього можна задати фільтр за операціями з мережею (-f network), з файлами (-f pathname додасть колонку з шляхом) і так далі. Якщо текст не влазить в рядок, додайте -w.

    sbor diagnostiki v macos s pomoshhyu komandnojj stroki31 Збір діагностики в macOS за допомогою командного рядка

    Подробиці можна подивитися, наприклад, у статті The Mac Observer або в статті moxit.

    Сподобалася стаття? Поділитися з друзями:
    Всезнайко - Корисні поради