Як вбити процес, який просто не завершиться (ім'я користувача killall -u включено)


1

Я дурився з деякими програмами в своєму mac (заходжу в вміст і намагаюся змінити деякі файли, значення тощо)

Звичайно, іноді отримую збої, але зазвичай я просто вбиваю процес і все добре.

Цього разу, проте, я міг побачити значок програми в документі (без білої смуги під ним), але силова відмова зовсім не допомогла.

Перехід до моніторингу додатків не допоміг, оскільки додаток там не вказано (не так, як це ім'я, як би там не було). Отже, я перейшов до піктограми яблука вгорі - ліворуч, натисніть Force Quit, і справді додаток було вказано (з її піктограма), але тепер назва отримала "JavaApplicationStub".

Вийти звідти теж не допомогло.

Я запустив термінал і перевірив увесь процес (ps -ax), але ні додаток, ні "JavaApplicationStub" не були вказані (навіть імена поруч не були).

Я спробував вийти (а потім вимкнути mac), але це не було корисним, оскільки додаток не дозволяв закрити систему (до речі, це завадило мені запустити будь-який інший додаток, оскільки воно автоматично закриється (система намагалася вимкнути все-таки). На щастя, через пару хвилин OS X визнала, що не може закритись і дала мені можливість знову використовувати систему)

Тому я не зміг визначити, який процес вбивства.

В крайньому випадку, я зробив це, killall -u myusernameі це перевело мене на сірий екран, звідки я нічого не міг зробити. Але натискання клавіші Cmd + Alt + Esc (екран виходу з сили) підтвердило, що єдине, що працює, - це "JavaApplicationStub".

(це означає, що або "JavaApplicationStub" не був моїм процесом, або система просто не змогла цього закрити.)

Це все одно заважатиме мені закриватися, очевидно.

Не знаючи, як я можу звідти знову запустити звичайні програми (Finder, Dock тощо). Мені довелося утримувати кнопку живлення протягом 10 секунд, поки нарешті Mac не вимкнувся, і я міг його знову ввімкнути.

питання 1

Тепер, який був правильний спосіб вирішити цю ситуацію?

Питання 2

Я зробив щось дуже просте, я просто видалив файл (невинно виглядає один) у папці app.contents. Чи справді так легко запобігти закриттю програми? Чи можна це потенційно використовувати?

Відповіді:


1

З терміналу

killall -9 process_name

ви можете отримати всі сигнали (частина -9) від

man signal 

Мені доведеться попросити вас це детальніше розробити. Що означає -9, як це допомагає, чому ви вказуєте користувача, якщо вже існує ім'я_процесу, і як отримати ім'я_процесу (це JavaApplicationStub? Тому що це не відображалось у "Моніторингу програм"). дуже тобі дякую! :-)
Мурашка

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

1
Ім'я процесу можна знайти за допомогою top / ps / htop / pgrep [ви також можете використовувати pID]
Джонатан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.