Как отправить Sigint на несколько процессов

Используйте флаг -L для перехода по символическим ссылкам.

Следовать символическим ссылкам. Когда find исследует или печатает информацию о файлах, используемая информация должна быть взята из свойств файла, на который указывает ссылка, а не из самой ссылки самой ссылки (если только она не является битой символической ссылкой или find не может исследовать файл, на который указывает ссылка). Использование этой опции подразумевает -noleaf. Если вы позже используете опцию -P, опция -noleaf будет по-прежнему будет действовать. Если действует опция -L и find обнаруживает символическую ссылку на подкаталог во время поиска, то будет искаться подкаталог, на который указывает на который указывает символическая ссылка, будет произведен поиск.

Когда действует опция -L, предикат -type всегда будет соответствовать с типом файла, на который указывает символическая ссылка, а не а не самой ссылки (если только символическая ссылка не нарушена). Использование опции -L приводит к тому, что предикаты -lname и -ilname всегда возвращают false.

0
14.09.2018, 22:03
3 ответа

Да, это верно. Страница руководства подтверждает это. Бег man killговорит:

SYNOPSIS
   kill [options] <pid> [...]

...

OPTIONS
   <pid> [...]
          Send signal to every <pid> listed.

Возможно, ваша оболочка предоставляет собственную внутреннюю версию kill, которая будет иметь приоритет, но она должна быть совместима с описанным интерфейсом. Вы можете найти дополнительную информацию, запустив help kill.

Я бы использовал kill -INTвместо kill -2, так как отображение имени -в число -может различаться в разных вариантах UNIX.

3
28.01.2020, 02:18

Это легко проверить с помощью программы, которая генерирует множество копий самой себя, реагирует на сигнал и ждет сигнала:

% perl -E '$SIG{INT}=sub {say "ouch"};fork();fork();say $$;sleep 999'
17344
17346
17345
17347
ouch
ouch
ouch
ouch

Куросава подошла к другому терминалу, где

% kill -2 17344 17346 17345 17347

явно был запущен.

2
28.01.2020, 02:18

Как насчет:

for i in <pid1> <pid2> <pid3>; do kill -2 $i; done

или:

for i in {17344..17347}; do kill -2 $i; done
1
28.01.2020, 02:18

Теги

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