Як програмово вбити процес CCLibrary за допомогою PID?


4

Мені потрібно знати, як написати команду або скрипт, щоб вбити процеси CCLibrary і CCXProcess. Вони є частиною Creative Cloud від Adobe, і з моменту їхнього попереднього оновлення вони продовжують відновлювати і запускати мій процесор на 100%.

До тих пір, поки не вийде виправлення, я хотів би швидкий спосіб його вбити, не переходячи через монітор активності.

Коли я намагаюся

sudo killall CCLibrary

Я отримую повідомлення "Не знайдено відповідних процесів".

Я можу використовувати ps -ef, щоб знайти номер PID (наприклад, 9548) Я можу це зробити, наприклад,

ps -ef | grep CCLibrary.app

яка повертає дві дії, CCLibrary і саму grep.

$ ps -ef|grep CCLibrary 
501 9621 1 0 12:18pm ?? 51:51.71 /Applications/Utilities/Adobe Creative Cloud/CCLibrary/CCLibrary.app/Contents/MacOS/../libs/node /Applications/Utilities/Adobe Creative Cloud/CCLibrary/CCLibrary.app/Contents/MacOS/../js/server.js 
501 9818 9407 0 1:10pm ttys001 0:00.00 grep CCLibrary 

Потім я можу "вбити" на основі PID-номера

Але як я можу написати сценарій, щоб знайти цей PID як змінну, а потім вбити його?


Коментарі не для розширеного обговорення; Ця розмова була переміщено до чату .
bmike

Я б заохочував співпрацювати у просторі відповідей, оскільки робота над відповіддю буде корисною. Чат теж працює :).
bmike

Відповіді:


5

Замість того, щоб постійно вбивати процеси, є спосіб видалити менеджер програм Adobe Creative Cloud, згаданих у цій темі .

  1. Завантажте Creative Cloud Cleaner від Adobe: http://download.macromedia.com/SupportTools/Cleaner/mac/AdobeCreativeCloudCleanerTool.dmg

  2. Потім виберіть ТІЛЬКИ Creative Cloud

  3. Потім "видалити вибраний" і перезавантажити

І ваші вболівальники нарешті замовкнуть. Інші програми все ще працюють.


Це не тільки допомогло мені усунути процес OP, але й Adobe Creative Desktop. Привітання.
chb

3

Я збережу "чому це погана ідея після відповіді", але ось деякі трюки, які ви можете використовувати. Оскільки не всі зможуть протестувати з CC, давайте підберемо Safari для цього прикладу:

ps -ef | grep "Safari "

По-перше, після імені програми додаю пробіл, щоб переконатися, що він не є частиною шляху. Далі, використовуйте квадратні дужки навколо одного символу імені процесу, що утримує grep від самого себе. (можливо, це є більш елегантний спосіб, але цей хак для мене працює нормально)

ps -ef | grep "[S]afari "

Це призводить до того, що команда grep не відповідає Safari - дужки дозволять вам шукати [SZ]afari і відповідати Safari або Zafari наприклад. Ми просто хочемо зіпсувати grep та не знайдіть альтернативні символи для позиції 1.

ps -ef | grep "[S]afari " | awk '{print $2}'

Витягніть друге слово, відокремлене пробілом, щоб отримати PID. Ось як все виглядає в одному сеансі для налагодження команд, які ми використовуємо:

mac:~ me$ ps -ef | grep Safari
  501   300     1   0 Wed06PM ??        45:03.88 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_40970
  501   520     1   0 Wed06PM ??         1:08.95 /usr/libexec/SafariCloudHistoryPushAgent
  501   590     1   0 Wed06PM ??         1:39.35 /System/Library/PrivateFrameworks/SafariSafeBrowsing.framework/com.apple.Safari.SafeBrowsing.Service
  501   608     1   0 Wed06PM ??         0:10.31 /System/Library/PrivateFrameworks/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.SearchHelper.xpc/Contents/MacOS/com.apple.Safari.SearchHelper
  501  2476     1   0 Wed06PM ??         0:01.56 /System/Library/PrivateFrameworks/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.ImageDecoder.xpc/Contents/MacOS/com.apple.Safari.ImageDecoder
  501 38802     1   0 Thu01PM ??         0:02.41 /usr/libexec/SafariNotificationAgent
  501 92847 90892   0  7:27AM ttys013    0:00.00 grep Safari
mac:~ me$ ps -ef | grep "Safari "
  501   300     1   0 Wed06PM ??        45:04.31 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_40970
  501 92875 90892   0  7:27AM ttys013    0:00.01 grep Safari 
mac:~ me$ ps -ef | grep "[S]afari "
  501   300     1   0 Wed06PM ??        45:04.57 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_40970
mac:~ me$ ps -ef | grep "[S]afari " | awk '{ print $2 }'
300
mac:~ me$ echo kill `ps -ef | grep "[S]afari " | awk '{ print $2 }'`
kill 300

Зверніть увагу, що я використав echo щоб просто передати синтаксис команди - якщо я не лунав, то команда kill фактично запустила б і вбив програму Safari, яку я використовую, щоб написати цю відповідь.

¯\_(ツ)_/¯

Отже, тепер ви повинні бути впевнені в написанні одного рядкового сценарію, щоб вбити один процес (сподіваюся), і ми прийшли до поганої ідеї частини відповіді. Краще використовувати killall server.js якщо ви ніколи не очікуєте запуску інших серверів, які ви не хочете вбити.

  • Що робити, якщо хтось зробить іншу програму або скрипт з тим же ім'ям, тепер ви теж вбиваєте або вбиваєте, хто знає що awk Команда вирішує прицілитися?
  • Крім того, ми навіть не зрозуміли, як розписати сценарій. Ви запускаєте його кожні 5 хвилин, раз на годину, і гірше, скільки шкоди це робить для будь-якої роботи, яку він нібито робить на процесорі прямо зараз.

Привіт, спасибі за пропозицію ... Приймаючи ваші кроки по одному: Коли я запускаю ps -ef | grep "Safari" Я отримую: 501 10184 9407 0 2:17 вечора ttys001 0: 00.00 grep Safari, тобто тільки команда grep .. (Safari працює на процесі 10165). Я використовую Yosemite - можливо, це має значення?
tomh

@tomh Це може бути так. Safari є поганим прикладом, оскільки існує так багато матчів. Я вибрав його, оскільки кожен раз, коли я робив це в минулому, я шкодував про тролінг ps щоб потім вжити заходів. Я досі робив це з нагоди, але я logged все до syslog та почистив безлад як тільки міг. Напишіть мене Запитайте різні чати і ми можемо взяти інший удар.
bmike
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.