Разница между "убитыми" и "завершенными"

Я просто тестировал флаги с отключенным коммутатором со спящим процессом.

Сначала я попытался убить его с помощью -15

 [email protected]:~/Desktop/expermiments$ ps cax | grep 10005
 10005 pts/2    S+     0:00 sh
 [email protected]:~/Desktop/expermiments$ kill -15 10005

И процесс завершился

 [email protected]:~/Desktop/expermiments$ sh testscript.sh
 This is a script which sleeps for few seconds ..
 Terminated

Затем я убил его - 9

 [email protected]:~/Desktop/expermiments$ ps -ef | grep testscript.sh
 xtechkid 10059  9852  0 13:48 pts/2    00:00:00 sh testscript.sh
 xtechkid 10064 10007  0 13:48 pts/4    00:00:00 grep --color=auto testscript.sh
 [email protected]:~/Desktop/expermiments$ kill -9 10059

И процесс был убит

 [email protected]:~/Desktop/expermiments$ sh testscript.sh
 This is a script which sleeps for few seconds ..
 Killed

В чем разница?

Ответ 1

Сигнал 'terminate', SIGTERM, является сигналом, который может быть перехвачен в программе. Часто процессы, которые предназначены для работы в фоновом режиме, поймают этот сигнал и начнут процесс выключения, что приведет к чистому выходу. Сигнал 'kill', SIGKILL, не может быть перехвачен. Когда это отправляется процессу, это приведет к резкому завершению этой программы.

Когда вы завершаете или перезагружаете свой компьютер, например, SIGTERM отправляется на запущенные процессы, сначала позволяя им выйти чистым способом, если они его поддерживают. Затем через несколько секунд SIGKILL отправляется в процессы, которые все еще запущены, так что используемые ресурсы принудительно освобождаются (например, используемые файлы), и последовательность выключения может продолжаться (например, отключение файловых систем).

Ответ 2

Завершить: он сохранит все ваши данные перед выключением (запись данных с ОЗУ на диск, журналы и т.д.)

Убить: это больше похоже на нажатие питания ПК и кнопку reset. Он не сохранит никаких журналов или других данных.