Принудительное завершение процессов из командной строки

Существуют две основные команды для просмотра и принудительного завершения процессов из интерфейса командной строки: kill и killall.

Назначение команды kill ясно из ее названия (kill - убивать). Она используется для принудительного завершения процессов. Синтаксис команды: kill, далее идентификатор процесса (PID), который требуется принудительно завершить. Узнать идентификатор процесса можно из приложения Мониторинг системы (Activity Monitor) или с помощью команд top и ps.

В следующем примере Michelle пытается использовать команду kill для принудительного завершения процесса DirectoryService, который имеет идентификатор 11 и всегда является системным процессом. Сначала ей это не удается, так как процесс принадлежит системе, но будучи администратором, она использует команду sudo для выполнения команды kill от имени пользователя root. Michelle использует команду ps -ахс для наблюдения за процессом DirectoryService до и после команды kill. Обратите внимание на то, что после выполнения команды kill, процесс DirectoryService имеет новый PID. Это означает, что он был перезапущен системой. Для этого примера вывод команды рвбыл обрезан.

Команда killall предназначена для принудительного завершения всех экземпляров именованного процесса. Это особенно полезно, когда процесс создает несколько своих копий, как в случае с некоторыми сетевыми службами. В предыдущем примере Michelle вынуждена была найти PID процесса DirectoryService, чтобы принудительно завершить его с помощью команды kill. Она могла бы достичь этой цели с помощью команды killall, даже не зная PID. Однако ей пришлось бы ввести точное название работающего процесса. В данном случае Michelle нужно было бы просто ввести:

LeoClient:- michelleS sudo killall DirectoryService Отчеты о проблемах

Для помощи в диагностике постоянных проблем функция сообщения о проблемах операционной системы Lion вступает в действие всякий раз, когда приложение завершается неожиданным образом (фатальный сбой -crash) или перестает функционировать и пользователь вынужден принудительно завершать его (зависание - hang). Она отображает пользователю диалоговое окно с предупреждением, сообщая о проблеме. Важно то, что эта функция ведет запись в файлы журналов, описывая обстоятельства на момент сбоя или зависания приложения. Если в диалоговом окне с предупреждением щелкнуть на кнопке Отчет (Report), то можно просмотреть отчет о проблеме или автоматом отправить его в компанию Apple через Интернет.

Совет. Отключить автоматическую отправку диагностических отчетов в Apple можно на панели настроек Защита и безопасность (Security & Privacy).

Даже если отчеты в компанию Apple не отправляются, пользователь всегда может обратиться к ним снова, поскольку они всегда сохраняются на системный том. При сбое приложения в папке ~/Library/Logs/Diagnos-ticReports пользователя сохраняется журнал отчета о проблеме с именем приложения и расширением .crash. А при зависании приложения в папке ~/Library/Logs/DiagnosticReports пользователя сохраняется журнал отчета о проблеме с именем приложения, но уже с расширением .hung. Самый простой способ просмотреть эти отчеты - открыть приложение Программы/Утилиты/Консоль (/Applications/Utilities/Console), а затем щелкнуть на кнопке Показать журналы (Show Log List) на панели инструментов. Отчеты о проблемах будут перечислены в хронологическом порядке в разделе Данные диагностики (Diagnostic Information).

Эти отчеты дают техническую информацию, которая большинству пользователей будет непонятна, однако они также содержат ключевые части информации, которые могут помочь пользователю со средним опытом диагностировать проблему. Например, в отчетах диагностики зачастую указывается, какие файлы использовались приложением на момент возникновения проблемы. Один из указанных файлов может быть поврежден и как следствие стать источником проблемы.