安装

1
2
(wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
fetch -o - http://pi.dk/3 ) > install.sh

输入命令

  • 格式

    • parallel command
  • “没有” 输入命令

    • 行为

      • 类似 cat | sh
  • “有” 输入命令

    • 行为

      • 类似 xargs
    • 输入数据处理

      • 后面的 {} 被 转换成 输入数据

输入数据

替换符

  • {}

    • 原样转换替换输入数据
    1
    2
    
      parallel echo {} ::: hello.sh hey.txt
      # output: hello.sh hey.txt
  • {.}

    • “丢掉”输入数据的扩展名
1
2
  parallel echo {} ::: hello.sh hey.txt
  # output: hello hey   --> “没有文件扩展名”
  • -I replace-str

    • 类似 xargs -I R
  • {/} –> basename(input)

    • 只保留输入文件名的 basename, dirname 被丢弃
  • {//} –> dirname(input)

    • 只保留 dirname
  • {/.} –> basename(input) + {.}
  • {#}

    • parallel 任务列表顺序
  • {%}

    • Job slot number
  • {n}

    • 输入第几个数据
  • 制定输入哪个数据
  • {n.}

    • 扩展名
  • {n/}

    • basename
  • {n//}

    • dirname

来源

  1. 标准输入 stdin
  2. -a

    • a –> argmument file, 输入参数文件
    1
    2
    
      parallel [options] [command [arguments]] ( ::: arguments | :::+
      arguments | :::: argfile(s) | ::::+ argfile(s) )
  3. ::: arguments

    • 单个 :::
    1
    2
    3
    4
    
      # 等价
      (echo hello; echo demo) |parallel gzip
    
      parallel gzip ::: hello demo
    • 多个 :::
  • 作用

    • 进行数据组合

      1
      2
      3
      4
      5
      
        parallel echo {1} {2} --link ::: 1 2 3 ::: a b c
        # 接收数据 (1, a) (2, b) (3, c)
      
        parallel echo {1} {2} :: 1 2 :: a b
        # 接收数据 (1, a) (1, b) (2, a) (2, b)
    • –link 作用

      • 让 {1} {2} 变成指定的数据源 序号
  1. :::+ arguments
  2. :::: argfiles

    • 多个输入数据文件
  3. ::::+ argfiles
  4. -a input-file

    • –arg-file
    • 单个输入数据文件

进度

  • –eta

    • 详细
  • –bar

    • 进度条

      • 显示: 完成任务比例 % (完成数量:剩余数量)|| 剩余时间 || 开始 和完成的任务数量
1
30% 3:7=4s 9

-k 保持 输出结果顺序

  • –keep-order
  • 默认行为

    • 先完成的结果被输出,而不是按输入的顺序
  • 作用

    • 输出结果和输入数据顺序保持一致

分配数据

  • -X

    • 自动尽可能多的且平均的给进程分配多个数据

      • 在 shell 允许范围内
    • 比 -m 智能,少错误
  • -m