Форум русской поддержки ОС Fedora linux
Вот вопрос родился.
В системном мониторе можно процесс
-остановить
-снять (kill ?)
-завершить (end ?)
Какая между этими действиями разница?
В справке написано, что "завершить" — это "по правилам" (normally) — то есть типа корректно завершить, включая дочерние процессы?
А снять (kill) — это прибить "как есть" прямо щас? И если дочерние остануться или файлы несохраненные, то кто не спрятался я не виноват?
А тогда что значит "остановить"?
Неактивен
Рискую навлечь на себя праведный гнев модераторов, но хочется "приподнять" тему в списке.
В гугле долго рылся, но четкого объяснения разницы не нашел.
Прямой эксперимент тоже ничего не показал — пробовал и "снять", и "завершить" некритичные к устойчивлсти системы процессы. Потом перезагружался, — ноль эмоций.
Как будто разницы и нет...
Новедь она есть!
Наверное...
Неактивен
"Завершить" — это посылается системный сигнал "SIGTERM" процессу. Как будто нажали CTRL+C
"Снять" — это уже посылается системный сигнал ядру "SIGKILL". По этому сигналу ядро грохает процесс, освобождая занимаемую им память.
Разница: Если послать сигнал "SIGTERM" (завершить), то приложение сможет обработать этот сигнал, сбросить все буфера, корректно закрыть открытые файлы и выйдет. Если же послать сигнал "SIGKILL" (снять), то приложение этот сигнал даже не получит. Оно будет грохнуто, при этом все данные в буферах ввода-вывода будут утеряны, а открытые им файлы будут закрыты ядром.
"Остановить" — это послать приложению сигнал "SIGSTOP". Приложение перестаёт потреблять процессорное время, ядро на него "не обращает внимания". Но при этом процесс продолжает жить (вернее спать ) до сигнала "SIGCONT".
man 7 signal
там по-русски даже
Неактивен
Чтобы по-русски прочитать надо было знать, что поставить после "man"
Спасибо большущее за развернутый ответ!, — хотя достаточно было бы просто указать, что
"Снять" точно соответствует "KILL", а "завершить" = "terminate"
Я бы ухватил.
Но тем более приятно, что помогли так подробно...
Неактивен