Получить URL-адреса из текста

Ядро отправляет сигнал SIGSEGVпроцессу, вызвавшему недопустимую ссылку на виртуальную память (ошибку сегментации ).

Один из способов отправки SIGSEGVможет быть более «опасным», если вы завершите процесс из файловой системы, в которой мало места. Действие по умолчанию, когда процесс получает SIGSEGV, состоит в том, чтобы сбросить ядро ​​в файл, а затем завершить работу. Основной файл может быть довольно большим, в зависимости от процесса, и может заполнить файловую систему.

Как уже упоминал @Janka, вы можете написать код, чтобы указать вашей программе, как вы хотите, чтобы она обрабатывала сигнал SIGSEGV. Вы не можете поймать SIGKILLили SIGSTOP. Я бы предложил использовать SIGKILLили SIGSTOP, когда вы хотите только завершить процесс. Использование SIGSEGVобычно не будет иметь плохих последствий, но возможно, что процесс, который вы хотите завершить, может обработать SIGSEGVне так, как вы ожидаете.

-3
27.05.2021, 11:27
1 ответ

Вывод из 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://и заканчивается перед одинарной кавычкой. Затем он заменяет всю строку этой подстрокой и печатает измененную строку. Строки, не соответствующие -, отбрасываются.

0
28.07.2021, 11:28

Теги

Похожие вопросы