Процеси вбивства мимоволі - це не плавний хід: дані можуть втрачатися, неякісно розроблені програми можуть ламати себе тонкими способами, які неможливо виправити без перевстановлення .. але це повністю залежить від того, що знати, що є, а що не безпечно в дана ситуація. і що було б під загрозою. Користувач повинен мати деяке уявлення про те, що процес, чи повинен бути, який процес і який це обмеження (диск IOPS, rss / swap) і бути в змозі оцінити, скільки часу повинен тривати тривалий процес (скажімо, копія файлу, перекодування mp3, міграція електронної пошти, резервне копіювання, [ваш улюблений посилання тут].)
Крім того, надсилання SIGKILLпіда не є гарантією його вбивства. Якщо він застряг у системному дзвінку або вже зомбізований ( Zв ps), він може продовжувати зомбі. Часто це стосується ^ Z тривалий запущений процес і забуття, bgперш ніж спробувати kill -9його. Простий fgпідключить stdin / stdout і, ймовірно, розблокує процес, як правило, після цього процес закінчується. Якщо він застряг в іншому місці або в іншій формі тупикового ядра, вилучити процес може лише перезавантаження. (Процеси зомбі вже мертві після того SIGKILL, як ядро обробляється (більше не буде запущений код користувача), зазвичай причина ядра (подібно до того, що "заблокована", очікуючи завершення системного виклику), щоб процес не завершився.)
Крім того, якщо ви хочете вбити процес та всіх його дітей, ввійдіть у звичку дзвонити killза допомогою заперечуваного PID, а не лише самого PID . Там немає ніякої гарантії SIGHUP, SIGPIPEабо SIGINTчи інші сигнали очищення після нього, і з купою відрікся процесів в очищенні (пам'ятаєте дворняга?) Дратує.
Бонусне зло: kill -9 -1трохи більше шкодить, ніж kill -9 1(Не робіть жодного як корінця, якщо ви не хочете бачити, що відбувається на викидній, неважливій ВМ)