Ядро отправляет сигнал SIGSEGV
процессу, вызвавшему недопустимую ссылку на виртуальную память (ошибку сегментации ).
Один из способов отправки SIGSEGV
может быть более «опасным», если вы завершите процесс из файловой системы, в которой мало места. Действие по умолчанию, когда процесс получает SIGSEGV
, состоит в том, чтобы сбросить ядро в файл, а затем завершить работу. Основной файл может быть довольно большим, в зависимости от процесса, и может заполнить файловую систему.
Как уже упоминал @Janka, вы можете написать код, чтобы указать вашей программе, как вы хотите, чтобы она обрабатывала сигнал SIGSEGV
. Вы не можете поймать SIGKILL
или SIGSTOP
. Я бы предложил использовать SIGKILL
или SIGSTOP
, когда вы хотите только завершить процесс. Использование SIGSEGV
обычно не будет иметь плохих последствий, но возможно, что процесс, который вы хотите завершить, может обработать SIGSEGV
не так, как вы ожидаете.
Вывод из apt-get --print-uris dist-upgrade
может выглядеть примерно так:
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
The following packages will be upgraded:
evolution-data-server evolution-data-server-common gir1.2-goa-1.0
gnome-online-accounts libcamel-1.2-62 libebackend-1.2-10 libebook-1.2-20
libebook-contacts-1.2-3 libecal-2.0-1 libedata-book-1.2-26
libedata-cal-2.0-1 libedataserver-1.2-24 libedataserverui-1.2-2
libgoa-1.0-0b libgoa-1.0-common libgoa-backend-1.0-1 libyelp0 linux-libc-dev
python-apt-common python3-apt yelp
21 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,358 kB of archives.
After this operation, 16.4 kB of additional disk space will be used.
'http://se.archive.ubuntu.com/ubuntu/pool/main/p/python-apt/python-apt-common_2.0.0ubuntu0.20.04.5_all.deb' python-apt-common_2.0.0ubuntu0.20.04.5_all.deb 17052 MD5Sum:a9e11f5f8671c5069f5edaef32e2f620
'http://se.archive.ubuntu.com/ubuntu/pool/main/p/python-apt/python3-apt_2.0.0ubuntu0.20.04.5_amd64.deb' python3-apt_2.0.0ubuntu0.20.04.5_amd64.deb 154164 MD5Sum:8590dd473b444f2756e5c7498e00e7ec
'http://se.archive.ubuntu.com/ubuntu/pool/main/g/gnome-online-accounts/libgoa-1.0-common_3.36.1-0ubuntu1_all.deb' libgoa-1.0-common_3.36.1-0ubuntu1_all.deb 3752 MD5Sum:9252da969452bdf88527829a752ac175
(этот вывод усекается)
Предполагая, что вы хотите разобрать «чистые» URI из приведенного выше, следующая команда sed
удалит все строки, начиная с первой и заканчивая строкой, начинающейся со строкиAfter
(включительно ). Из оставшихся строк он удалит все после пробела, а затем удалит первый и последний символы из измененной строки (, это удалит одинарные кавычки, окружающие URI ).
sed '1,/^After/d; s/.*//; s/.//; s/.$//'
Использование этого в моем коротком примере вывода выше:
$ sed '1,/^After/d; s/.*//; s/.//; s/.$//' file
http://se.archive.ubuntu.com/ubuntu/pool/main/p/python-apt/python-apt-common_2.0.0ubuntu0.20.04.5_all.deb
http://se.archive.ubuntu.com/ubuntu/pool/main/p/python-apt/python3-apt_2.0.0ubuntu0.20.04.5_amd64.deb
http://se.archive.ubuntu.com/ubuntu/pool/main/g/gnome-online-accounts/libgoa-1.0-common_3.36.1-0ubuntu1_all.deb
При тех же входных данных команда
sed -n "s,.*\(http://[^']*\).*,\1,p" file
также будет работать. Это пытается сопоставить любую подстроку, которая начинается с http://
и заканчивается перед одинарной кавычкой. Затем он заменяет всю строку этой подстрокой и печатает измененную строку. Строки, не соответствующие -, отбрасываются.