gpt4 book ai didi

linux - shell 错误 xargs : terminated by signal 11

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:35 25 4
gpt4 key购买 nike

我在图像压缩工具 jpeg-recompress 上使用带目录排除的 FIND 命令,并使用 xargs 来加速该过程。

命令行是:

find /path/dir -type f -name '*.jpg' -not -path '*/imdb/*' | xargs -P 50 -I {} jpeg-recompress --quality high --min 60 --method smallfry --strip \{} \{} \;

几分钟后发生错误:

xargs: jpeg-recompress: terminated by signal 11

只有在处理由数十万张图像组成的大目录时才会发生这种情况。我已经搜索了与段错误相关的信号 11,但我不太了解它们。我唯一知道的是,大概我正在尝试访问一些我不应该访问的内存。

请帮忙,我不太理解代码,也不明白我做错了什么。

感谢您的帮助。

最佳答案

错误来自jpeg-recompress不是来自 xargs : jpeg-recompress死于 SIGSEGV。段错误通常仅在程序中存在错误时才会发生 - 通常是错误的指针。

我确信这是由于 jpeg-recompress 中的错误所致它由单个轻微损坏的 jpeg 文件触发(或者恰好具有 jpeg-recompress 不期望的格式)。

这也解释了为什么您只能在包含数十万张图片的大目录中看到它:其中一张略有损坏。

识别文件的一种方法是使用 GNU Parallel 的 --joblog--halt :

find /path/dir -type f -name '*.jpg' -not -path '*/imdb/*' |
parallel --joblog my.log --halt now,fail=1 jpeg-recompress --quality high --min 60 --method smallfry --strip \{} \{}

然后你应该在my.log的最后一行找到损坏文件的名称。 .

如果您认为可能有更多损坏的文件:

find /path/dir -type f -name '*.jpg' -not -path '*/imdb/*' |
parallel --joblog my.log jpeg-recompress --quality high --min 60 --method smallfry --strip \{} \{}
grep -P '\t11\t' my.log

关于linux - shell 错误 xargs : terminated by signal 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51510777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com