bash - GNU 并行不生成作业

标签 bash perl debian piping gnu-parallel

升级到 Debian 8.6 Jessie 后,GNU 并行脚本突然停止使用 --pipe 和 -L 选项并行处理超过 2 个作业。

升级前命令:

cat file_with_1064_lines.txt |并行-L10 -j5 -k -v --pipe "wc -l"

生成了 5 个进程,输出如下:

wc -l
10
wc -l
10
...

升级后相同的命令:

wc -l
1060
wc -l
4

(以上两个值根据 -L 选项值而变化——第一个是 L*floor(1064/L),第二个是 1064 mod L,但始终只有两个进程输出。)

独立于并行版本(测试了最新版本和 2013 年的版本)也观察到了同样的情况。

附言。

$ uname -a

Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux

$ parallel --version

GNU parallel 20161222

最佳答案

-L 是记录大小。 bug在20130122左右修复,你想要的是读取1条10行的记录:

parallel -L10 -N1 -j5 -k -v --pipe wc -l

或 1 行的 10 条记录:

parallel -L1 -N10 -j5 -k -v --pipe wc -l

关于bash - GNU 并行不生成作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41612726/

相关文章:

linux - 计算日志中最前面的重复行

php - 在远程机器 php 上运行 bash 脚本

linux - Linux 启动时守护进程 perl 脚本

使用 Apache 在树莓派 (Debian) 上运行 PHP

php - LINUX php服务重启不起作用

linux - 有没有办法在不转义的情况下将带引号的字符串分配给 var?

ruby - 一次统计目录中的文件

perl - 无法遵循 Perl 中的 opendir 语法

Linux 根据文件名提示更改文件内的内容

jenkins - Jenkins:控制台输出字符