Процеси вбивства мимоволі - це не плавний хід: дані можуть втрачатися, неякісно розроблені програми можуть ламати себе тонкими способами, які неможливо виправити без перевстановлення .. але це повністю залежить від того, що знати, що є, а що не безпечно в дана ситуація. і що було б під загрозою. Користувач повинен мати деяке уявлення про те, що процес, чи повинен бути, який процес і який це обмеження (диск 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
(Не робіть жодного як корінця, якщо ви не хочете бачити, що відбувається на викидній, неважливій ВМ)