6

Я заменил старый жесткий диск моего MacBook конца 2008 года (8 ГБ ОЗУ, OS X 10.7.4) на твердотельный накопитель OCZ Vertex 3. После этого я установил Lion и восстановил свои данные из резервной копии Time Machine.

Все хорошо, за исключением процесса с именем «bash», который постоянно использует около 90% процессора.

Если я убью его с помощью Activity Monitor, все вернется в норму, но, к сожалению, процесс возвращается каждый раз, когда я перезагружаю компьютер.

Я попытался сделать zap PRAM, переустановить 10.7.4 из комбинированного пакета и даже просто подождать более 2 часов, но проблема все еще здесь.

4 ответа4

7

bash - это стандартная оболочка в OS X - это означает, что это стандартная программа для взаимодействия с основами Darwin операционной системы (технически, /bin/sh является стандартной оболочкой, но это была копия /bin/bash со времен OS X 10.3). Это процесс, который запускается при открытии окна Terminal.app - интерактивной оболочки.

bash также может быть запущен без окон терминала - неинтерактивной оболочки - например, для выполнения сценариев оболочки, часто обозначаемых суффиксом файла .sh . Это тот случай, когда bash запускает скрипт /usr/bin/stkLaunchAgent.sh , и что-то в этом скрипте делает вашу систему занятой.

Теперь /usr/bin/stkLaunchAgent.sh не является частью установки OS X - это какое-то стороннее дополнение, и поэтому его нет в моей системе, то есть я могу только догадываться, но я бы сказал:

  • из его названия «LaunchAgent» и того факта, что он начинается с вашей системы, он запускается LaunchAgent - небольшим файлом определения, используемым OS X ' launchd, системным механизмом для запуска сценариев и неинтерактивных программ по расписанию, загрузки или другие события. Эту часть я бы квалифицировал как обоснованное предположение.
  • из-за того, что ваши проблемы начались с установки вашего SSD Vertex, и того факта, что принципиальное различие между твердотельными накопителями и жесткими дисками является первым, не следует любезно относиться к дефрагментации и аналогичным низкоуровневым вмешательствам в их структуру: Рассматриваемый агент может пытаться выполнить какую-либо операцию на диске, который Vertex SSD не принимает, что поддерживает выполнение сценария и занятость bash . Теперь, эта часть - только дикое, дикое предположение, но ...

Как узнать, что делает скрипт:

Откройте окно терминала и open -e /usr/bin/stkLaunchAgent.sh чтобы заглянуть в сценарий оболочки (эта команда откроет его в TextEdit - сначала завершит его в Activity Monitor), что даст вам возможность увидеть что именно работает.

Как от этого избавиться:

Вам придется избавиться от LaunchAgent, если он действительно один. LaunchAgent запуск программ файлы в формате Plist и нашли в

  • ~/Library/LaunchAgents - только для текущей учетной записи пользователя
  • /Library/LaunchAgents - для всех учетных записей пользователей
  • /System/Library/LaunchAgents - агенты системного уровня (не по праву можно найти здесь!)

Они обычно называются в обратной доменной записи (tld.domain.process.plist). В зависимости от того, является ли пользовательская учетная запись вашей запущенной bash вашей или нет, вам следует поискать вероятный список в одном из первых двух мест выше (если у вас установлен XCode, вы можете легко их QuickLook). Правильная процедура, чтобы остановить это - удалить его из списка процессов launchd через

launchctl unload tld.domain.process

который разгрузит и остановит процесс (обратите внимание, что вы опускаете суффикс plist ).

Существует также графический интерфейс для обработки запуска программ файлов, Lingon Питера Борга (убедитесь , чтобы получить «LINGON», а не «Lingon 3», которая является упрощенной вниз версией безопасной для использования ванили), который может быть более удобным , чем укоренение вручную через расположение файлов.

Фон:

4

Я заглянул внутрь файла и узнал его часть приложения Save to Kindle, которое я установил несколько недель назад. Приложение имеет деинсталлятор в /Applications, поэтому я сделал это вместо непосредственного удаления .sh. Работал.

1

Я решил ту же проблему на своем компьютере, используя chown чтобы владеть коммуникационным каналом, присутствующим в /var/spool/stkPrinter/username/stkPipe .

Проблема возникает из-за владения (может быть, разрешения тоже?) трубы меняется после миграции на новый диск. Скрипт /usr/bin/stkLaunchAgent.sh имеет встроенную базовую проверку прав / владения, но, очевидно, недостаточно хорошо. Это заканчивается в то while true цикл пытается получить доступ к каналу, и журналы полностью перегружены сообщениями об ошибках.

Я бы даже не заметил этого, если бы не заметил, что мои резервные копии Time Machine были необъяснимо большими, именно тогда я посмотрел системные журналы и увидел, что миллионы строк жалуются на одно и то же. Файл журнала /var/spool/stkPrinter/username/stkPrint.log был размером 15 ГБ !

1

У меня возникла та же проблема после миграции моей системы на твердотельный накопитель Crucial M4. Я "решил" это, удалив /usr/bin/stkLaunchAgent.sh, так как не было демонов запуска, напрямую связанных с файлом.

Я все еще хотел бы знать, откуда этот файл и почему это произошло ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .