Ошибка фиксации сигнала 13 (SIGPIPE) для поиска и grep-конвейера

У меня есть ситуация, когда я пытаюсь установить программное обеспечение в свою систему.

Я использую подход fakeroot, чтобы установить их в отдельный каталог, где я перечисляю все файлы, каталоги и ссылки, которые они устанавливают, в три файла FILES , DIRS , LINKS .

Затем я использую find для получения хэшей SHA1 всех файлов в файле с именем sha1sums . Мне не нужен хэш файла sha1sums . Поэтому я использовал эту команду

  find . -type f -exec sha1sum {} \; | grep -ve "\./sha1sums$" >sha1sums 

Это отлично работает. Однако при установке kbd-2.0.3 он выдал много строк ошибок,

  find: 'sha1sum' terminated by signal 13 

Я знаю, что сигнал 13 является сигналом SIGPIPE («Broken Pipe»). Но у меня нет двух вещей:

  1. Почему это происходит только с этим пакетом?
  2. Вероятно, это связано с тем, что grep закрывает трубу чтения. Но почему он закрывает его?

  • Получить логическое имя беспроводной сети
  • Переместите все подкаталоги и сделайте что-нибудь в сценарии оболочки Unix.
  • Как выводить файл и игнорировать строки, начинающиеся с «?»?
  • Много элит, есть ли лучший способ?
  • Как запустить скрипт как ограниченный пользователь?
  • Убивать детские задания, длительностью более 20 минут
  • Могу ли я получить код выхода из подклассов, запущенных с помощью $ (команды)?
  • Машиночитаемое количество обновлений? Альтернатива / usr / lib / update-notifier / apt-check?
  • One Solution collect form web for “Ошибка фиксации сигнала 13 (SIGPIPE) для поиска и grep-конвейера”

    Я не могу воспроизвести вашу проблему с версиями GNU всех утилит, которые вы используете, и с моими родными утилитами OpenBSD.

    Однако, вместо того, чтобы sha1sums имя файла sha1sums с помощью sha1sums через grep , вы можете вообще не sha1sums вычисление SHA1 для этого файла:

     find . -type f ! -name sha1sums -exec sha1sum {} + >sha1sums 

    Тест negated -name удалит имя файла из списка имен, переданных в sha1sum .

    Кроме того, утилита будет вызываться с максимально возможным количеством файлов за один раз, а не один раз для каждого имени, благодаря + в конце.

    Поскольку это не использует конвейер, проблема с SIGPIPE не будет.

    Interesting Posts

    Автоматически использовать сочетание клавиш в nano?

    Считайте уникальные связанные значения в awk (или perl)

    Тестирование ИК-приемника

    Gnome 3 сбой при создании нового ключа пароля

    macchanger: Слишком много открытых файлов в системе

    Сбой плагина Java на Ubuntu 16.04 / Firefox ESR 52.2.0

    Хозяева Linux не могут общаться, если они не пинговали друг друга

    Как отсортировать файл по столбцу, представляющему собой сочетание цифр, букв и знаков препинания?

    Что такое современный эквивалент чтения `/ dev / audio`?

    Разберите несколько тысяч строк txt в строки и столбцы

    Создать PKGBUILD из .deb

    Как я могу просмотреть содержимое файла tar.gz (filenames + filesize)

    Запуск статически связанного двоичного файла с другим glibc

    Разрешить доступ к SSH, но ограничивать доступ root к определенному набору IP-адресов

    Сценарий Bash, который автоматически убивает процессы, когда загрузка процессора / памяти становится слишком высокой

    Linux и Unix - лучшая ОС в мире.