mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-24 15:07:55 +00:00
parallel: $PARALLEL_ARGHOSTGROUPS and {agrp} implemented.
This commit is contained in:
parent
ff7f7c918b
commit
de8f083ba4
|
@ -1,5 +1,9 @@
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
|
Every time I install @ubuntu, one of the first tools I install is
|
||||||
|
@gnuparallel. I love it.
|
||||||
|
-- Necati Demir @ndemir
|
||||||
|
|
||||||
Today I'm grateful for GNU parallel, especially with the --colsep and
|
Today I'm grateful for GNU parallel, especially with the --colsep and
|
||||||
--jobs parameters #GiveThanks
|
--jobs parameters #GiveThanks
|
||||||
-- Erin Young @ErinYoun
|
-- Erin Young @ErinYoun
|
||||||
|
|
|
@ -35,6 +35,8 @@ gpl v3
|
||||||
|
|
||||||
[Save]
|
[Save]
|
||||||
|
|
||||||
|
|
||||||
|
10.5281/zenodo.4381888
|
||||||
DOINO=3956817
|
DOINO=3956817
|
||||||
TAG='PrivacyShield'
|
TAG='PrivacyShield'
|
||||||
|
|
||||||
|
@ -190,16 +192,15 @@ from:tange@gnu.org
|
||||||
to:parallel@gnu.org, bug-parallel@gnu.org
|
to:parallel@gnu.org, bug-parallel@gnu.org
|
||||||
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
||||||
|
|
||||||
Subject: GNU Parallel 20201222 ('Vaccine/Maradona/Yeager/Le Carre') released <<[stable]>>
|
Subject: GNU Parallel 20210122 ('') released <<[stable]>>
|
||||||
|
|
||||||
GNU Parallel 20201222 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
|
GNU Parallel 20210122 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
|
||||||
|
|
||||||
<<No new functionality was introduced so this is a good candidate for a stable release.>>
|
<<No new functionality was introduced so this is a good candidate for a stable release.>>
|
||||||
|
|
||||||
Please help spreading GNU Parallel by making a testimonial video like Juan Sierra Pons: http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4
|
Please help spreading GNU Parallel by making a testimonial video like Juan Sierra Pons: http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4
|
||||||
|
|
||||||
It does not have to be as detailed as Juan's. It is perfectly fine if
|
It does not have to be as detailed as Juan's. It is perfectly fine if you just say your name, and what field you are using GNU Parallel for.
|
||||||
you just say your name, and what field you are using GNU Parallel for.
|
|
||||||
|
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
<<>>
|
<<>>
|
||||||
|
@ -212,17 +213,13 @@ New in this release:
|
||||||
|
|
||||||
News about GNU Parallel:
|
News about GNU Parallel:
|
||||||
|
|
||||||
* Best practices for accelerating data migrations using AWS Snowball Edge https://aws.amazon.com/blogs/storage/best-practices-for-accelerating-data-migrations-using-aws-snowball-edge/
|
<<>>
|
||||||
|
|
||||||
* Pass the Output of a Command as an Argument for Another https://www.baeldung.com/linux/pass-cmd-output-as-an-argument
|
|
||||||
|
|
||||||
* Warwick RSE Drop-in - Workflow Management Part 2 - GNU Parallel https://www.youtube.com/watch?v=t_v2Otgt87g
|
|
||||||
|
|
||||||
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html
|
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html
|
||||||
|
|
||||||
GNU Parallel - For people who live life in the parallel lane.
|
GNU Parallel - For people who live life in the parallel lane.
|
||||||
|
|
||||||
If you like GNU Parallel record a video testimonial: Say who you are, what you use GNU Parallel for, how it helps you, and what you like most about it. Include command that uses GNU Parallel if you feel like it.
|
If you like GNU Parallel record a video testimonial: Say who you are, what you use GNU Parallel for, how it helps you, and what you like most about it. Include a command that uses GNU Parallel if you feel like it.
|
||||||
|
|
||||||
|
|
||||||
= About GNU Parallel =
|
= About GNU Parallel =
|
||||||
|
@ -242,7 +239,6 @@ Or you can generate big, medium, and small thumbnails of all jpeg files in sub d
|
||||||
find . -name '*.jpg' |
|
find . -name '*.jpg' |
|
||||||
parallel convert -geometry {2} {1} {1//}/thumb{2}_{1/} :::: - ::: 50 100 200
|
parallel convert -geometry {2} {1} {1//}/thumb{2}_{1/} :::: - ::: 50 100 200
|
||||||
|
|
||||||
|
|
||||||
You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/
|
You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/
|
||||||
|
|
||||||
You can install GNU Parallel in just 10 seconds with:
|
You can install GNU Parallel in just 10 seconds with:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -382,8 +382,8 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
echo "This is free software: you are free to change and redistribute it."
|
echo "This is free software: you are free to change and redistribute it."
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -384,8 +384,8 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
echo "This is free software: you are free to change and redistribute it."
|
echo "This is free software: you are free to change and redistribute it."
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -382,8 +382,8 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
echo "This is free software: you are free to change and redistribute it."
|
echo "This is free software: you are free to change and redistribute it."
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -365,8 +365,8 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
echo "This is free software: you are free to change and redistribute it."
|
echo "This is free software: you are free to change and redistribute it."
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -368,8 +368,8 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
echo "This is free software: you are free to change and redistribute it."
|
echo "This is free software: you are free to change and redistribute it."
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -803,7 +803,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
|
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2010-2020 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -382,8 +382,8 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
echo "This is free software: you are free to change and redistribute it."
|
echo "This is free software: you are free to change and redistribute it."
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# after which 'env_parallel' works
|
# after which 'env_parallel' works
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -359,8 +359,8 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
echo "This is free software: you are free to change and redistribute it."
|
echo "This is free software: you are free to change and redistribute it."
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# Copyright (C) 2004-2010 Ole Tange, http://ole.tange.dk
|
# Copyright (C) 2004-2010 Ole Tange, http://ole.tange.dk
|
||||||
#
|
#
|
||||||
# Copyright (C) 2010-2020 Ole Tange, http://ole.tange.dk and
|
# Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and
|
||||||
# Free Software Foundation, Inc.
|
# Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
$Global::progname="niceload";
|
$Global::progname="niceload";
|
||||||
$Global::version = 20201222;
|
$Global::version = 20201223;
|
||||||
Getopt::Long::Configure("bundling","require_order");
|
Getopt::Long::Configure("bundling","require_order");
|
||||||
get_options_from_array(\@ARGV) || die_usage();
|
get_options_from_array(\@ARGV) || die_usage();
|
||||||
if($opt::version) {
|
if($opt::version) {
|
||||||
|
|
|
@ -305,7 +305,7 @@ Copyright (C) 2004-11-19 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2005-2010 Ole Tange, http://ole.tange.dk
|
Copyright (C) 2005-2010 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2010-2020 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
=head1 LICENSE
|
=head1 LICENSE
|
||||||
|
|
51
src/parallel
51
src/parallel
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -2144,7 +2144,7 @@ sub check_invalid_option_combinations() {
|
||||||
|
|
||||||
sub init_globals() {
|
sub init_globals() {
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20201222;
|
$Global::version = 20201223;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$::name = "GNU Parallel";
|
$::name = "GNU Parallel";
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
|
@ -2212,8 +2212,10 @@ sub init_globals() {
|
||||||
'{host}' => '1 $_="\${PARALLEL_SSHHOST}";uq()',
|
'{host}' => '1 $_="\${PARALLEL_SSHHOST}";uq()',
|
||||||
# {sshlogin} = sshlogin
|
# {sshlogin} = sshlogin
|
||||||
'{sshlogin}' => '1 $_="\${PARALLEL_SSHLOGIN}";uq()',
|
'{sshlogin}' => '1 $_="\${PARALLEL_SSHLOGIN}";uq()',
|
||||||
# {hgrp} = hostgroups
|
# {hgrp} = hostgroups of the host
|
||||||
'{hgrp}' => '1 $_="\${PARALLEL_HOSTGROUPS}";uq()',
|
'{hgrp}' => '1 $_="\${PARALLEL_HOSTGROUPS}";uq()',
|
||||||
|
# {agrp} = hostgroups of the argument
|
||||||
|
'{agrp}' => '1 $_="\${PARALLEL_ARGHOSTGROUPS}";uq()',
|
||||||
);
|
);
|
||||||
# Modifiable copy of %Global::replace
|
# Modifiable copy of %Global::replace
|
||||||
%Global::rpl = %Global::replace;
|
%Global::rpl = %Global::replace;
|
||||||
|
@ -2252,6 +2254,10 @@ sub init_globals() {
|
||||||
# Use first dir as config dir
|
# Use first dir as config dir
|
||||||
$Global::config_dir = $Global::config_dirs[0] ||
|
$Global::config_dir = $Global::config_dirs[0] ||
|
||||||
$ENV{'HOME'} . "/.parallel";
|
$ENV{'HOME'} . "/.parallel";
|
||||||
|
if($ENV{'PARALLEL_HOME'} =~ /./ and not -d $ENV{'PARALLEL_HOME'}) {
|
||||||
|
::warning("\$PARALLEL_HOME ($ENV{'PARALLEL_HOME'}) does not exist.");
|
||||||
|
::warning("Using $Global::config_dir");
|
||||||
|
}
|
||||||
# cache_dirs = $PARALLEL_HOME, $XDG_CACHE_HOME/parallel,
|
# cache_dirs = $PARALLEL_HOME, $XDG_CACHE_HOME/parallel,
|
||||||
# Keep only dirs that exist
|
# Keep only dirs that exist
|
||||||
@Global::cache_dirs =
|
@Global::cache_dirs =
|
||||||
|
@ -5028,7 +5034,7 @@ sub version() {
|
||||||
print join
|
print join
|
||||||
("\n",
|
("\n",
|
||||||
"GNU $Global::progname $Global::version",
|
"GNU $Global::progname $Global::version",
|
||||||
"Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software",
|
"Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software",
|
||||||
"Foundation, Inc.",
|
"Foundation, Inc.",
|
||||||
"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>",
|
"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>",
|
||||||
"This is free software: you are free to change and redistribute it.",
|
"This is free software: you are free to change and redistribute it.",
|
||||||
|
@ -5161,7 +5167,7 @@ sub embed() {
|
||||||
}
|
}
|
||||||
print "#!$Global::shell
|
print "#!$Global::shell
|
||||||
|
|
||||||
# Copyright (C) 2007-2020 $user, Ole Tange, http://ole.tange.dk
|
# Copyright (C) 2007-2021 $user, Ole Tange, http://ole.tange.dk
|
||||||
# and Free Software Foundation, Inc.
|
# and Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -7049,23 +7055,26 @@ sub compute_number_of_processes($) {
|
||||||
if($system_limit < $wanted_processes) {
|
if($system_limit < $wanted_processes) {
|
||||||
# The system_limit is less than the wanted_processes
|
# The system_limit is less than the wanted_processes
|
||||||
if($system_limit < 1 and not $Global::JobQueue->empty()) {
|
if($system_limit < 1 and not $Global::JobQueue->empty()) {
|
||||||
::warning("Cannot spawn any jobs. ".
|
::warning("Cannot spawn any jobs.",
|
||||||
"Raising ulimit -u or 'nproc' in /etc/security/limits.conf",
|
"Try increasing 'ulimit -u' (try: ulimit -u `ulimit -Hu`)",
|
||||||
"or /proc/sys/kernel/pid_max may help.");
|
"or increasing 'nproc' in /etc/security/limits.conf",
|
||||||
|
"or increasing /proc/sys/kernel/pid_max");
|
||||||
::wait_and_exit(255);
|
::wait_and_exit(255);
|
||||||
}
|
}
|
||||||
if(not $more_filehandles) {
|
if(not $more_filehandles) {
|
||||||
::warning("Only enough file handles to run ".
|
::warning("Only enough file handles to run ".
|
||||||
$system_limit. " jobs in parallel.",
|
$system_limit. " jobs in parallel.",
|
||||||
"Running 'parallel -j0 -N $system_limit --pipe parallel -j0' or",
|
"Try running 'parallel -j0 -N $system_limit --pipe parallel -j0'",
|
||||||
"raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf",
|
"or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`)",
|
||||||
"or /proc/sys/fs/file-max may help.");
|
"or increasing 'nofile' in /etc/security/limits.conf",
|
||||||
|
"or increasing /proc/sys/fs/file-max");
|
||||||
}
|
}
|
||||||
if($max_system_proc_reached) {
|
if($max_system_proc_reached) {
|
||||||
::warning("Only enough available processes to run ".
|
::warning("Only enough available processes to run ".
|
||||||
$system_limit. " jobs in parallel.",
|
$system_limit. " jobs in parallel.",
|
||||||
"Raising ulimit -u or /etc/security/limits.conf ",
|
"Try increasing 'ulimit -u' (try: ulimit -u `ulimit -Hu`)",
|
||||||
"or /proc/sys/kernel/pid_max may help.");
|
"or increasing 'nproc' in /etc/security/limits.conf",
|
||||||
|
"or increasing /proc/sys/kernel/pid_max");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($] == 5.008008 and $system_limit > 1000) {
|
if($] == 5.008008 and $system_limit > 1000) {
|
||||||
|
@ -9183,9 +9192,10 @@ sub sshlogin_wrap($) {
|
||||||
# So --env myfunc should look for BASH_FUNC_myfunc() and BASH_FUNC_myfunc%%
|
# So --env myfunc should look for BASH_FUNC_myfunc() and BASH_FUNC_myfunc%%
|
||||||
|
|
||||||
push(@vars, "PARALLEL_PID", "PARALLEL_SEQ",
|
push(@vars, "PARALLEL_PID", "PARALLEL_SEQ",
|
||||||
"PARALLEL_SSHLOGIN", "PARALLEL_SSHHOST", "PARALLEL_HOSTGROUPS",
|
"PARALLEL_SSHLOGIN", "PARALLEL_SSHHOST",
|
||||||
"PARALLEL_JOBSLOT",
|
"PARALLEL_HOSTGROUPS", "PARALLEL_ARGHOSTGROUPS",
|
||||||
map { ("BASH_FUNC_$_()", "BASH_FUNC_$_%%") } @vars);
|
"PARALLEL_JOBSLOT", map { ("BASH_FUNC_$_()",
|
||||||
|
"BASH_FUNC_$_%%") } @vars);
|
||||||
# Keep only defined variables
|
# Keep only defined variables
|
||||||
return grep { defined($ENV{$_}) } @vars;
|
return grep { defined($ENV{$_}) } @vars;
|
||||||
}
|
}
|
||||||
|
@ -9247,8 +9257,8 @@ sub sshlogin_wrap($) {
|
||||||
$ENV{'PARALLEL_SSHLOGIN'} = $sshlogin->string();
|
$ENV{'PARALLEL_SSHLOGIN'} = $sshlogin->string();
|
||||||
$ENV{'PARALLEL_SSHHOST'} = $sshlogin->serverlogin();
|
$ENV{'PARALLEL_SSHHOST'} = $sshlogin->serverlogin();
|
||||||
if ($opt::hostgroups) {
|
if ($opt::hostgroups) {
|
||||||
$ENV{'PARALLEL_HOSTGROUPS'} =
|
$ENV{'PARALLEL_HOSTGROUPS'} = join '+', $sshlogin->hostgroups();
|
||||||
join',',$sshlogin->in_hostgroups($self->hostgroups());
|
$ENV{'PARALLEL_ARGHOSTGROUPS'} = join '+', $self->hostgroups();
|
||||||
}
|
}
|
||||||
$ENV{'PARALLEL_PID'} = $$;
|
$ENV{'PARALLEL_PID'} = $$;
|
||||||
if($serverlogin eq ":") {
|
if($serverlogin eq ":") {
|
||||||
|
@ -11712,9 +11722,10 @@ sub max_length($) {
|
||||||
my $len_cache = $Global::cache_dir . "/tmp/sshlogin/" . ::hostname() .
|
my $len_cache = $Global::cache_dir . "/tmp/sshlogin/" . ::hostname() .
|
||||||
"/linelen";
|
"/linelen";
|
||||||
my $cached_limit;
|
my $cached_limit;
|
||||||
if(-e $len_cache) {
|
|
||||||
open(my $fh, "<", $len_cache) || ::die_bug("Cannot read $len_cache");
|
if(open(my $fh, "<", $len_cache)) {
|
||||||
$cached_limit = <$fh>;
|
$cached_limit = <$fh>;
|
||||||
|
$cached_limit || ::die_bug("Cannot read $len_cache");
|
||||||
close $fh;
|
close $fh;
|
||||||
}
|
}
|
||||||
if(not $cached_limit) {
|
if(not $cached_limit) {
|
||||||
|
|
|
@ -711,7 +711,7 @@ Even quoted newlines are parsed correctly:
|
||||||
When used with B<--pipe> only pass full CSV-records.
|
When used with B<--pipe> only pass full CSV-records.
|
||||||
|
|
||||||
|
|
||||||
=item B<--delay> I<mytime> (alpha testing)
|
=item B<--delay> I<mytime> (beta testing)
|
||||||
|
|
||||||
Delay starting next job by I<mytime>. GNU B<parallel> will pause
|
Delay starting next job by I<mytime>. GNU B<parallel> will pause
|
||||||
I<mytime> after starting each job. I<mytime> is normally in seconds,
|
I<mytime> after starting each job. I<mytime> is normally in seconds,
|
||||||
|
@ -883,7 +883,7 @@ B<--group> is the default. Can be reversed with B<-u>.
|
||||||
See also: B<--line-buffer> B<--ungroup>
|
See also: B<--line-buffer> B<--ungroup>
|
||||||
|
|
||||||
|
|
||||||
=item B<--group-by> I<val> (alpha testing)
|
=item B<--group-by> I<val> (beta testing)
|
||||||
|
|
||||||
Group input by value. Combined with B<--pipe>/B<--pipepart>
|
Group input by value. Combined with B<--pipe>/B<--pipepart>
|
||||||
B<--group-by> groups lines with the same value into a record.
|
B<--group-by> groups lines with the same value into a record.
|
||||||
|
@ -1093,7 +1093,7 @@ B<my_grp1_arg> may be run on either B<myserver1> or B<myserver2>,
|
||||||
B<third> may be run on either B<myserver1> or B<myserver3>,
|
B<third> may be run on either B<myserver1> or B<myserver3>,
|
||||||
but B<arg_for_grp2> will only be run on B<myserver2>.
|
but B<arg_for_grp2> will only be run on B<myserver2>.
|
||||||
|
|
||||||
See also: B<--sshlogin>, B<$PARALLEL_HOSTGROUPS>.
|
See also: B<--sshlogin>, B<$PARALLEL_HOSTGROUPS>, B<$PARALLEL_ARGHOSTGROUPS>.
|
||||||
|
|
||||||
|
|
||||||
=item B<-I> I<replace-str>
|
=item B<-I> I<replace-str>
|
||||||
|
@ -1494,9 +1494,9 @@ of each job is saved in a file and the filename is then printed.
|
||||||
See also: B<--results>
|
See also: B<--results>
|
||||||
|
|
||||||
|
|
||||||
=item B<--pipe> (alpha testing)
|
=item B<--pipe> (beta testing)
|
||||||
|
|
||||||
=item B<--spreadstdin> (alpha testing)
|
=item B<--spreadstdin> (beta testing)
|
||||||
|
|
||||||
Spread input to jobs on stdin (standard input). Read a block of data
|
Spread input to jobs on stdin (standard input). Read a block of data
|
||||||
from stdin (standard input) and give one block of data as input to one
|
from stdin (standard input) and give one block of data as input to one
|
||||||
|
@ -1579,6 +1579,7 @@ Shorthands for variables:
|
||||||
{slot} $PARALLEL_JOBSLOT (see {%})
|
{slot} $PARALLEL_JOBSLOT (see {%})
|
||||||
{sshlogin} $PARALLEL_SSHLOGIN
|
{sshlogin} $PARALLEL_SSHLOGIN
|
||||||
{host} $PARALLEL_SSHHOST
|
{host} $PARALLEL_SSHHOST
|
||||||
|
{agrp} $PARALLEL_ARGHOSTGROUPS
|
||||||
{hgrp} $PARALLEL_HOSTGROUPS
|
{hgrp} $PARALLEL_HOSTGROUPS
|
||||||
|
|
||||||
The following dynamic replacement strings are also activated. They are
|
The following dynamic replacement strings are also activated. They are
|
||||||
|
@ -1859,7 +1860,7 @@ B<-.csv>/B<-.tsv> are special: It will give the file on stdout
|
||||||
(standard output).
|
(standard output).
|
||||||
|
|
||||||
|
|
||||||
B<JSON file output> (alpha testing)
|
B<JSON file output> (beta testing)
|
||||||
|
|
||||||
If I<name> ends in B<.json> the output will be a JSON-file
|
If I<name> ends in B<.json> the output will be a JSON-file
|
||||||
named I<name>.
|
named I<name>.
|
||||||
|
@ -1868,7 +1869,7 @@ B<-.json> is special: It will give the file on stdout (standard
|
||||||
output).
|
output).
|
||||||
|
|
||||||
|
|
||||||
B<Replacement string output file> (alpha testing)
|
B<Replacement string output file> (beta testing)
|
||||||
|
|
||||||
If I<name> contains a replacement string and the replaced result does
|
If I<name> contains a replacement string and the replaced result does
|
||||||
not end in /, then the standard output will be stored in a file named
|
not end in /, then the standard output will be stored in a file named
|
||||||
|
@ -2430,7 +2431,7 @@ be overridden with B<--ssh>. It can also be set on a per server
|
||||||
basis (see B<--sshlogin>).
|
basis (see B<--sshlogin>).
|
||||||
|
|
||||||
|
|
||||||
=item B<--sshdelay> I<mytime> (alpha testing)
|
=item B<--sshdelay> I<mytime> (beta testing)
|
||||||
|
|
||||||
Delay starting next ssh by I<mytime>. GNU B<parallel> will not start
|
Delay starting next ssh by I<mytime>. GNU B<parallel> will not start
|
||||||
another ssh for the next I<mytime>.
|
another ssh for the next I<mytime>.
|
||||||
|
@ -4855,11 +4856,19 @@ Dir where GNU B<parallel> stores config files, semaphores, and caches
|
||||||
information between invocations. Default: $HOME/.parallel.
|
information between invocations. Default: $HOME/.parallel.
|
||||||
|
|
||||||
|
|
||||||
|
=item $PARALLEL_ARGHOSTGROUPS
|
||||||
|
|
||||||
|
When using B<--hostgroups> GNU B<parallel> sets this to the hostgroups
|
||||||
|
of the job.
|
||||||
|
|
||||||
|
Remember to quote the $, so it gets evaluated by the correct shell. Or
|
||||||
|
use B<--plus> and {agrp}.
|
||||||
|
|
||||||
|
|
||||||
=item $PARALLEL_HOSTGROUPS
|
=item $PARALLEL_HOSTGROUPS
|
||||||
|
|
||||||
When using B<--hostgroups> GNU B<parallel> sets this to the
|
When using B<--hostgroups> GNU B<parallel> sets this to the hostgroups
|
||||||
intersection of the hostgroups of the job and the sshlogin that the
|
of the sshlogin that the job is run on.
|
||||||
job is run on.
|
|
||||||
|
|
||||||
Remember to quote the $, so it gets evaluated by the correct shell. Or
|
Remember to quote the $, so it gets evaluated by the correct shell. Or
|
||||||
use B<--plus> and {hgrp}.
|
use B<--plus> and {hgrp}.
|
||||||
|
@ -5301,7 +5310,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
|
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2010-2020 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
Parts of the manual concerning B<xargs> compatibility is inspired by
|
Parts of the manual concerning B<xargs> compatibility is inspired by
|
||||||
|
|
|
@ -3057,7 +3057,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
|
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2010-2020 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
Parts of the manual concerning B<xargs> compatibility is inspired by
|
Parts of the manual concerning B<xargs> compatibility is inspired by
|
||||||
|
|
|
@ -3000,7 +3000,7 @@ When asking for help, always report the full output of this:
|
||||||
Output:
|
Output:
|
||||||
|
|
||||||
GNU parallel 20200122
|
GNU parallel 20200122
|
||||||
Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software
|
Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software
|
||||||
Foundation, Inc.
|
Foundation, Inc.
|
||||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||||
This is free software: you are free to change and redistribute it.
|
This is free software: you are free to change and redistribute it.
|
||||||
|
|
|
@ -67,7 +67,7 @@ GNU B<parcat> is part of GNU B<parallel>. Report bugs to
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
=head1 LICENSE
|
=head1 LICENSE
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (C) 2016-2020 Ole Tange, http://ole.tange.dk and Free
|
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
# Software Foundation, Inc.
|
# Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -190,7 +190,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
|
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2010-2020 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -118,7 +118,7 @@ GetOptions(
|
||||||
"help" => \$opt::dummy,
|
"help" => \$opt::dummy,
|
||||||
) || exit(255);
|
) || exit(255);
|
||||||
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
||||||
$Global::version = 20201222;
|
$Global::version = 20201223;
|
||||||
if($opt::version) { version(); exit 0; }
|
if($opt::version) { version(); exit 0; }
|
||||||
@Global::sortoptions = @ARGV_before[0..($#ARGV_before-$#ARGV-1)];
|
@Global::sortoptions = @ARGV_before[0..($#ARGV_before-$#ARGV-1)];
|
||||||
#if($opt::zero_terminated) { $/ = "\0"; }
|
#if($opt::zero_terminated) { $/ = "\0"; }
|
||||||
|
|
|
@ -244,7 +244,7 @@ Report bugs to <bug-parallel@gnu.org>.
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
Copyright (C) 2010-2020 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
|
4
src/sql
4
src/sql
|
@ -341,7 +341,7 @@ Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.
|
||||||
|
|
||||||
Copyright (C) 2008-2010 Ole Tange http://ole.tange.dk
|
Copyright (C) 2008-2010 Ole Tange http://ole.tange.dk
|
||||||
|
|
||||||
Copyright (C) 2010-2020 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
=head1 LICENSE
|
=head1 LICENSE
|
||||||
|
@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
||||||
exit ($err);
|
exit ($err);
|
||||||
|
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
$Global::version = 20201222;
|
$Global::version = 20201223;
|
||||||
$Global::progname = 'sql';
|
$Global::progname = 'sql';
|
||||||
|
|
||||||
# This must be done first as this may exec myself
|
# This must be done first as this may exec myself
|
||||||
|
|
|
@ -7,10 +7,8 @@ testsuite: 3
|
||||||
touch ~/.parallel/will-cite
|
touch ~/.parallel/will-cite
|
||||||
make stopvm
|
make stopvm
|
||||||
|
|
||||||
### Limited test sets - run once
|
|
||||||
# No 100s, 300s, mem, polarhome, tutorial
|
|
||||||
1: ../src/parallel tests-to-run/* wanted-results/* prereqlocal startdb prereqremote
|
1: ../src/parallel tests-to-run/* wanted-results/* prereqlocal startdb prereqremote
|
||||||
TRIES=1 time bash Start.sh '' '00s|mem|polarhome|tutorial' || true
|
TRIES=1 time bash Start.sh '' mem || true
|
||||||
touch ~/.parallel/will-cite
|
touch ~/.parallel/will-cite
|
||||||
make stopvm
|
make stopvm
|
||||||
|
|
||||||
|
@ -104,7 +102,7 @@ stopvm:
|
||||||
parallel --tag -k 'ping -w 1 -c 1 {} && cd vagrant/*/{} && vagrant suspend' ::: centos8 freebsd11 freebsd12 rhel8 centos3
|
parallel --tag -k 'ping -w 1 -c 1 {} && cd vagrant/*/{} && vagrant suspend' ::: centos8 freebsd11 freebsd12 rhel8 centos3
|
||||||
|
|
||||||
startdb:
|
startdb:
|
||||||
true should start Oracle in vagrant
|
true TODO should start Oracle in vagrant
|
||||||
startdb-old:
|
startdb-old:
|
||||||
#echo shutdown abort | sudo su - oracle -c "sqlplus / as sysdba"
|
#echo shutdown abort | sudo su - oracle -c "sqlplus / as sysdba"
|
||||||
sudo parallel /etc/init.d/{} status '||' /etc/init.d/{} restart ::: postgresql mysql # oracle-xe
|
sudo parallel /etc/init.d/{} status '||' /etc/init.d/{} restart ::: postgresql mysql # oracle-xe
|
||||||
|
|
|
@ -292,6 +292,10 @@ add_freebsd() {
|
||||||
tmux_versions() {
|
tmux_versions() {
|
||||||
(cd /tmp
|
(cd /tmp
|
||||||
git clone https://github.com/tmux/tmux.git
|
git clone https://github.com/tmux/tmux.git
|
||||||
|
listtags() {
|
||||||
|
(cd tmux;
|
||||||
|
git tag)
|
||||||
|
}
|
||||||
make_one() {
|
make_one() {
|
||||||
rsync -a --delete tmux/ tmux$1/
|
rsync -a --delete tmux/ tmux$1/
|
||||||
cd tmux$1
|
cd tmux$1
|
||||||
|
@ -304,9 +308,9 @@ tmux_versions() {
|
||||||
}
|
}
|
||||||
export -f make_one
|
export -f make_one
|
||||||
echo '# Building tmux'
|
echo '# Building tmux'
|
||||||
seq 1.8 0.1 3.0 |
|
listtags |
|
||||||
stdout parallel --lb --tag '/usr/local/bin/tmux-{} -V || make_one {}'
|
stdout parallel --lb --tag '/usr/local/bin/tmux-{} -V || make_one {}'
|
||||||
seq 1.8 0.1 3.0 |
|
listtags |
|
||||||
parallel -k -v /usr/local/bin/tmux-{} -V
|
parallel -k -v /usr/local/bin/tmux-{} -V
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,43 @@ export -f stdsort
|
||||||
# Test amount of parallelization
|
# Test amount of parallelization
|
||||||
# parallel --shuf --jl /tmp/myjl -j1 'export JOBS={1};'bash tests-to-run/parallel-local-0.3s.sh ::: {1..16} ::: {1..5}
|
# parallel --shuf --jl /tmp/myjl -j1 'export JOBS={1};'bash tests-to-run/parallel-local-0.3s.sh ::: {1..16} ::: {1..5}
|
||||||
|
|
||||||
|
par_resume_k() {
|
||||||
|
echo '### --resume -k'
|
||||||
|
tmp=$(tempfile)
|
||||||
|
parallel -k --resume --joblog $tmp echo job{}id\;exit {} ::: 0 1 2 3 0 5
|
||||||
|
echo try 2 = nothing
|
||||||
|
parallel -k --resume --joblog $tmp echo job{}id\;exit {} ::: 0 1 2 3 0 5
|
||||||
|
echo two extra
|
||||||
|
parallel -k --resume --joblog $tmp echo job{}id\;exit 0 ::: 0 1 2 3 0 5 6 7
|
||||||
|
rm -f $tmp
|
||||||
|
}
|
||||||
|
|
||||||
|
par_empty_string_quote() {
|
||||||
|
echo "bug #37694: Empty string argument skipped when using --quote"
|
||||||
|
parallel -q --nonall perl -le 'print scalar @ARGV' 'a' 'b' ''
|
||||||
|
}
|
||||||
|
|
||||||
|
par_trim_illegal_value() {
|
||||||
|
echo '### Test of --trim illegal'
|
||||||
|
stdout parallel --trim fj ::: echo
|
||||||
|
}
|
||||||
|
|
||||||
|
par_dirnamereplace() {
|
||||||
|
echo '### Test --dnr'
|
||||||
|
parallel --dnr II -k echo II {} ::: a a/b a/b/c
|
||||||
|
|
||||||
|
echo '### Test --dirnamereplace'
|
||||||
|
parallel --dirnamereplace II -k echo II {} ::: a a/b a/b/c
|
||||||
|
}
|
||||||
|
|
||||||
|
par_negative_replacement() {
|
||||||
|
echo '### Negative replacement strings'
|
||||||
|
parallel -X -j1 -N 6 echo {-1}orrec{1} ::: t B X D E c
|
||||||
|
parallel -N 6 echo {-1}orrect ::: A B X D E c
|
||||||
|
parallel --colsep ' ' echo '{2} + {4} = {2} + {-1}=' '$(( {2} + {-1} ))' ::: "1 2 3 4"
|
||||||
|
parallel --colsep ' ' echo '{-3}orrect' ::: "1 c 3 4"
|
||||||
|
}
|
||||||
|
|
||||||
par_replacement_string_on_utf8() {
|
par_replacement_string_on_utf8() {
|
||||||
echo '### test {} {.} on UTF8 input'
|
echo '### test {} {.} on UTF8 input'
|
||||||
inputlist() {
|
inputlist() {
|
||||||
|
@ -23,6 +60,26 @@ par_replacement_string_on_utf8() {
|
||||||
inputlist | parallel -k echo {} {.}
|
inputlist | parallel -k echo {} {.}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
par_rpl_repeats() {
|
||||||
|
echo '### Test {.} does not repeat more than {}'
|
||||||
|
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -kX echo a{}b{.}c{.}
|
||||||
|
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -km echo a{}b{.}c{.}
|
||||||
|
}
|
||||||
|
|
||||||
|
par_do_not_export_PARALLEL_ENV() {
|
||||||
|
echo '### Do not export $PARALLEL_ENV to children'
|
||||||
|
doit() {
|
||||||
|
echo Should be 0
|
||||||
|
echo "$PARALLEL_ENV" | wc
|
||||||
|
echo Should give 60k and not overflow
|
||||||
|
PARALLEL_ENV="$PARALLEL_ENV" parallel echo '{=$_="\""x$_=}' ::: 60000 | wc
|
||||||
|
}
|
||||||
|
. `which env_parallel.bash`
|
||||||
|
# Make PARALLEL_ENV as big as possible
|
||||||
|
PARALLEL_ENV="a='$(seq 100000 | head -c $((139000-$(set|wc -c) )) )'"
|
||||||
|
env_parallel doit ::: 1
|
||||||
|
}
|
||||||
|
|
||||||
par_compress_stdout_stderr() {
|
par_compress_stdout_stderr() {
|
||||||
echo '### Test compress - stdout'
|
echo '### Test compress - stdout'
|
||||||
parallel --compress echo ::: OK
|
parallel --compress echo ::: OK
|
||||||
|
@ -154,16 +211,6 @@ par_verbose_t() {
|
||||||
(echo b; echo c; echo f) | parallel -k --verbose echo {}ar 2>&1 >/dev/null
|
(echo b; echo c; echo f) | parallel -k --verbose echo {}ar 2>&1 >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
par_show_limits() {
|
|
||||||
echo '### Test --show-limits'
|
|
||||||
(
|
|
||||||
(echo b; echo c; echo f) | parallel -k --show-limits echo {}ar
|
|
||||||
(echo b; echo c; echo f) | parallel -j1 -kX --show-limits -s 100 echo {}ar
|
|
||||||
echo "### BUG: empty lines with --show-limit"
|
|
||||||
echo | stdout parallel --show-limits
|
|
||||||
) | perl -pe 's/131\d\d\d/131xxx/'
|
|
||||||
}
|
|
||||||
|
|
||||||
par_test_zero_args() {
|
par_test_zero_args() {
|
||||||
echo '### Test 0-arguments'
|
echo '### Test 0-arguments'
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,22 @@ export TMP5G
|
||||||
|
|
||||||
rm -f /tmp/*.{tmx,pac,arg,all,log,swp,loa,ssh,df,pip,tmb,chr,tms,par}
|
rm -f /tmp/*.{tmx,pac,arg,all,log,swp,loa,ssh,df,pip,tmb,chr,tms,par}
|
||||||
|
|
||||||
|
par_squared() {
|
||||||
|
export PARALLEL="--load 300%"
|
||||||
|
squared() {
|
||||||
|
i=$1
|
||||||
|
i2=$[i*i]
|
||||||
|
seq $i2 | parallel -j0 --load 300% -kX echo {} | wc
|
||||||
|
seq 1 ${i2}0000 |
|
||||||
|
parallel -kj20 --recend "\n" --spreadstdin gzip -1 |
|
||||||
|
zcat | sort -n | md5sum
|
||||||
|
}
|
||||||
|
export -f squared
|
||||||
|
|
||||||
|
seq 10 -1 2 | stdout parallel -j5 -k squared |
|
||||||
|
grep -Ev 'processes took|Consider adjusting -j'
|
||||||
|
}
|
||||||
|
|
||||||
linebuffer_matters() {
|
linebuffer_matters() {
|
||||||
echo "### (--linebuffer) --compress $TAG should give different output"
|
echo "### (--linebuffer) --compress $TAG should give different output"
|
||||||
nolbfile=$(mktemp)
|
nolbfile=$(mktemp)
|
||||||
|
|
|
@ -4,6 +4,88 @@
|
||||||
# Each should be taking 10-30s and be possible to run in parallel
|
# Each should be taking 10-30s and be possible to run in parallel
|
||||||
# I.e.: No race conditions, no logins
|
# I.e.: No race conditions, no logins
|
||||||
|
|
||||||
|
par_shard() {
|
||||||
|
echo '### --shard'
|
||||||
|
# Each of the 5 lines should match:
|
||||||
|
# ##### ##### ######
|
||||||
|
seq 100000 | parallel --pipe --shard 1 -j5 wc |
|
||||||
|
perl -pe 's/(.*\d{5,}){3}/OK/'
|
||||||
|
# Data should be sharded to all processes
|
||||||
|
shard_on_col() {
|
||||||
|
col=$1
|
||||||
|
seq 10 99 | shuf | perl -pe 's/(.)/$1\t/g' |
|
||||||
|
parallel --pipe --shard $col -j2 --colsep "\t" sort -k$col |
|
||||||
|
field $col | sort | uniq -c
|
||||||
|
}
|
||||||
|
shard_on_col 1
|
||||||
|
shard_on_col 2
|
||||||
|
|
||||||
|
shard_on_col_name() {
|
||||||
|
colname=$1
|
||||||
|
col=$2
|
||||||
|
(echo AB; seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
||||||
|
parallel --header : --pipe --shard $colname -j2 --colsep "\t" sort -k$col |
|
||||||
|
field $col | sort | uniq -c
|
||||||
|
}
|
||||||
|
shard_on_col_name A 1
|
||||||
|
shard_on_col_name B 2
|
||||||
|
|
||||||
|
shard_on_col_expr() {
|
||||||
|
colexpr="$1"
|
||||||
|
col=$2
|
||||||
|
(seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
||||||
|
parallel --pipe --shard "$colexpr" -j2 --colsep "\t" "sort -k$col; echo c1 c2" |
|
||||||
|
field $col | sort | uniq -c
|
||||||
|
}
|
||||||
|
shard_on_col_expr '1 $_%=3' 1
|
||||||
|
shard_on_col_expr '2 $_%=3' 2
|
||||||
|
|
||||||
|
shard_on_col_name_expr() {
|
||||||
|
colexpr="$1"
|
||||||
|
col=$2
|
||||||
|
(echo AB; seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
||||||
|
parallel --header : --pipe --shard "$colexpr" -j2 --colsep "\t" "sort -k$col; echo c1 c2" |
|
||||||
|
field $col | sort | uniq -c
|
||||||
|
}
|
||||||
|
shard_on_col_name_expr 'A $_%=3' 1
|
||||||
|
shard_on_col_name_expr 'B $_%=3' 2
|
||||||
|
|
||||||
|
echo '*** broken'
|
||||||
|
# Shorthand for --pipe -j+0
|
||||||
|
seq 100000 | parallel --shard 1 wc |
|
||||||
|
perl -pe 's/(.*\d{5,}){3}/OK/'
|
||||||
|
# Combine with arguments
|
||||||
|
seq 100000 | parallel --shard 1 echo {}\;wc ::: {1..5} ::: a b |
|
||||||
|
perl -pe 's/(.*\d{5,}){3}/OK/'
|
||||||
|
}
|
||||||
|
|
||||||
|
par_bin() {
|
||||||
|
echo '### Test --bin'
|
||||||
|
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
|
||||||
|
paste <(seq 10) <(seq 10 -1 1) |
|
||||||
|
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
|
||||||
|
echo '### Test --bin with expression that gives 1..n'
|
||||||
|
paste <(seq 10) <(seq 10 -1 1) |
|
||||||
|
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
|
||||||
|
echo '### Test --bin with expression that gives 0..n-1'
|
||||||
|
paste <(seq 10) <(seq 10 -1 1) |
|
||||||
|
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
|
||||||
|
# Fails - blocks!
|
||||||
|
# paste <(seq 10) <(seq 10 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
|
||||||
|
}
|
||||||
|
|
||||||
|
par_load_blocks() {
|
||||||
|
echo "### Test if --load blocks. Bug.";
|
||||||
|
export PARALLEL="--load 300%"
|
||||||
|
(seq 1 1000 |
|
||||||
|
parallel -kj2 --load 300% --recend "\n" --spreadstdin gzip -1 |
|
||||||
|
zcat | sort -n | md5sum
|
||||||
|
seq 1 1000 |
|
||||||
|
parallel -kj200 --load 300% --recend "\n" --spreadstdin gzip -1 |
|
||||||
|
zcat | sort -n | md5sum) 2>&1 |
|
||||||
|
grep -Ev 'processes took|Consider adjusting -j'
|
||||||
|
}
|
||||||
|
|
||||||
par_compress_prg_fails() {
|
par_compress_prg_fails() {
|
||||||
echo '### bug #44546: If --compress-program fails: fail'
|
echo '### bug #44546: If --compress-program fails: fail'
|
||||||
doit() {
|
doit() {
|
||||||
|
@ -546,14 +628,6 @@ par_results_csv() {
|
||||||
perl -pe 's:/par......par:/tmpfile:g;s/\d+\.\d+/999.999/g'
|
perl -pe 's:/par......par:/tmpfile:g;s/\d+\.\d+/999.999/g'
|
||||||
}
|
}
|
||||||
|
|
||||||
par_results_compress() {
|
|
||||||
tmp=$(mktemp)
|
|
||||||
rm "$tmp"
|
|
||||||
parallel --results $tmp --compress echo ::: 1 | wc -l
|
|
||||||
parallel --results $tmp echo ::: 1 | wc -l
|
|
||||||
rm -r "$tmp"
|
|
||||||
}
|
|
||||||
|
|
||||||
par_kill_children_timeout() {
|
par_kill_children_timeout() {
|
||||||
echo '### Test killing children with --timeout and exit value (failed if timed out)'
|
echo '### Test killing children with --timeout and exit value (failed if timed out)'
|
||||||
pstree $$ | grep sleep | grep -v anacron | grep -v screensave | wc
|
pstree $$ | grep sleep | grep -v anacron | grep -v screensave | wc
|
||||||
|
|
|
@ -4,6 +4,23 @@
|
||||||
# Each should be taking 1-3s and be possible to run in parallel
|
# Each should be taking 1-3s and be possible to run in parallel
|
||||||
# I.e.: No race conditions, no logins
|
# I.e.: No race conditions, no logins
|
||||||
|
|
||||||
|
par_sqlandworker_uninstalled_dbd() {
|
||||||
|
echo 'bug #56096: dbi-csv no such column'
|
||||||
|
mkdir -p /tmp/parallel-bug-56096
|
||||||
|
sudo mv /usr/share/perl5/DBD/CSV.pm /usr/share/perl5/DBD/CSV.pm.gone
|
||||||
|
parallel --sqlandworker csv:///%2Ftmp%2Fparallel-bug-56096/mytable echo ::: must_fail
|
||||||
|
sudo cp /usr/share/perl5/DBD/CSV.pm.gone /usr/share/perl5/DBD/CSV.pm
|
||||||
|
parallel --sqlandworker csv:///%2Ftmp%2Fparallel-bug-56096/mytable echo ::: works
|
||||||
|
}
|
||||||
|
|
||||||
|
par_results_compress() {
|
||||||
|
tmp=$(mktemp)
|
||||||
|
rm "$tmp"
|
||||||
|
parallel --results $tmp --compress echo ::: 1 | wc -l
|
||||||
|
parallel --results $tmp echo ::: 1 | wc -l
|
||||||
|
rm -r "$tmp"
|
||||||
|
}
|
||||||
|
|
||||||
par_I_X_m() {
|
par_I_X_m() {
|
||||||
echo '### Test -I with -X and -m'
|
echo '### Test -I with -X and -m'
|
||||||
|
|
||||||
|
@ -129,11 +146,6 @@ par_test_gt_quoting() {
|
||||||
(echo '> '; echo '> '; echo '>') | parallel --max-lines 3 echo
|
(echo '> '; echo '> '; echo '>') | parallel --max-lines 3 echo
|
||||||
}
|
}
|
||||||
|
|
||||||
par_trim_illegal_value() {
|
|
||||||
echo '### Test of --trim illegal'
|
|
||||||
stdout parallel --trim fj ::: echo
|
|
||||||
}
|
|
||||||
|
|
||||||
par_eof_on_command_line_input_source() {
|
par_eof_on_command_line_input_source() {
|
||||||
echo '### Test of eof string on :::'
|
echo '### Test of eof string on :::'
|
||||||
parallel -k -E ole echo ::: foo ole bar
|
parallel -k -E ole echo ::: foo ole bar
|
||||||
|
@ -864,6 +876,17 @@ par_null_resume() {
|
||||||
rm "$log"
|
rm "$log"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
par_pipepart_block() {
|
||||||
|
echo '### --pipepart --block -# (# < 0)'
|
||||||
|
|
||||||
|
seq 1000 > /run/shm/parallel$$
|
||||||
|
parallel -j2 -k --pipepart echo {#} :::: /run/shm/parallel$$
|
||||||
|
parallel -j2 -k --block -1 --pipepart echo {#}-2 :::: /run/shm/parallel$$
|
||||||
|
parallel -j2 -k --block -2 --pipepart echo {#}-4 :::: /run/shm/parallel$$
|
||||||
|
parallel -j2 -k --block -10 --pipepart echo {#}-20 :::: /run/shm/parallel$$
|
||||||
|
rm /run/shm/parallel$$
|
||||||
|
}
|
||||||
|
|
||||||
par_block_negative_prefix() {
|
par_block_negative_prefix() {
|
||||||
tmp=`mktemp`
|
tmp=`mktemp`
|
||||||
seq 100000 > $tmp
|
seq 100000 > $tmp
|
||||||
|
|
|
@ -4,74 +4,16 @@
|
||||||
# Each should be taking 30-100s and be possible to run in parallel
|
# Each should be taking 30-100s and be possible to run in parallel
|
||||||
# I.e.: No race conditions, no logins
|
# I.e.: No race conditions, no logins
|
||||||
|
|
||||||
par_shard() {
|
par_load_from_PARALLEL() {
|
||||||
echo '### --shard'
|
echo "### Test reading load from PARALLEL"
|
||||||
# Each of the 5 lines should match:
|
export PARALLEL="--load 300%"
|
||||||
# ##### ##### ######
|
# Ignore stderr due to 'Starting processes took > 2 sec'
|
||||||
seq 100000 | parallel --pipe --shard 1 -j5 wc |
|
seq 1 1000000 |
|
||||||
perl -pe 's/(.*\d{5,}){3}/OK/'
|
parallel -kj200 --recend "\n" --spreadstdin gzip -1 2>/dev/null |
|
||||||
# Data should be sharded to all processes
|
zcat | sort -n | md5sum
|
||||||
shard_on_col() {
|
seq 1 1000000 |
|
||||||
col=$1
|
parallel -kj20 --recend "\n" --spreadstdin gzip -1 |
|
||||||
seq 10 99 | shuf | perl -pe 's/(.)/$1\t/g' |
|
zcat | sort -n | md5sum
|
||||||
parallel --pipe --shard $col -j2 --colsep "\t" sort -k$col |
|
|
||||||
field $col | sort | uniq -c
|
|
||||||
}
|
|
||||||
shard_on_col 1
|
|
||||||
shard_on_col 2
|
|
||||||
|
|
||||||
shard_on_col_name() {
|
|
||||||
colname=$1
|
|
||||||
col=$2
|
|
||||||
(echo AB; seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
|
||||||
parallel --header : --pipe --shard $colname -j2 --colsep "\t" sort -k$col |
|
|
||||||
field $col | sort | uniq -c
|
|
||||||
}
|
|
||||||
shard_on_col_name A 1
|
|
||||||
shard_on_col_name B 2
|
|
||||||
|
|
||||||
shard_on_col_expr() {
|
|
||||||
colexpr="$1"
|
|
||||||
col=$2
|
|
||||||
(seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
|
||||||
parallel --pipe --shard "$colexpr" -j2 --colsep "\t" "sort -k$col; echo c1 c2" |
|
|
||||||
field $col | sort | uniq -c
|
|
||||||
}
|
|
||||||
shard_on_col_expr '1 $_%=3' 1
|
|
||||||
shard_on_col_expr '2 $_%=3' 2
|
|
||||||
|
|
||||||
shard_on_col_name_expr() {
|
|
||||||
colexpr="$1"
|
|
||||||
col=$2
|
|
||||||
(echo AB; seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
|
||||||
parallel --header : --pipe --shard "$colexpr" -j2 --colsep "\t" "sort -k$col; echo c1 c2" |
|
|
||||||
field $col | sort | uniq -c
|
|
||||||
}
|
|
||||||
shard_on_col_name_expr 'A $_%=3' 1
|
|
||||||
shard_on_col_name_expr 'B $_%=3' 2
|
|
||||||
|
|
||||||
echo '*** broken'
|
|
||||||
# Shorthand for --pipe -j+0
|
|
||||||
seq 100000 | parallel --shard 1 wc |
|
|
||||||
perl -pe 's/(.*\d{5,}){3}/OK/'
|
|
||||||
# Combine with arguments
|
|
||||||
seq 100000 | parallel --shard 1 echo {}\;wc ::: {1..5} ::: a b |
|
|
||||||
perl -pe 's/(.*\d{5,}){3}/OK/'
|
|
||||||
}
|
|
||||||
|
|
||||||
par_bin() {
|
|
||||||
echo '### Test --bin'
|
|
||||||
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
|
|
||||||
paste <(seq 10) <(seq 10 -1 1) |
|
|
||||||
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
|
|
||||||
echo '### Test --bin with expression that gives 1..n'
|
|
||||||
paste <(seq 10) <(seq 10 -1 1) |
|
|
||||||
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
|
|
||||||
echo '### Test --bin with expression that gives 0..n-1'
|
|
||||||
paste <(seq 10) <(seq 10 -1 1) |
|
|
||||||
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
|
|
||||||
# Fails - blocks!
|
|
||||||
# paste <(seq 10) <(seq 10 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
|
|
||||||
}
|
}
|
||||||
|
|
||||||
par_exit_code() {
|
par_exit_code() {
|
||||||
|
|
|
@ -4,6 +4,22 @@
|
||||||
# Each should be taking 3-10s and be possible to run in parallel
|
# Each should be taking 3-10s and be possible to run in parallel
|
||||||
# I.e.: No race conditions, no logins
|
# I.e.: No race conditions, no logins
|
||||||
|
|
||||||
|
par_show_limits() {
|
||||||
|
echo '### Test --show-limits'
|
||||||
|
(
|
||||||
|
(echo b; echo c; echo f) | parallel -k --show-limits echo {}ar
|
||||||
|
(echo b; echo c; echo f) | parallel -j1 -kX --show-limits -s 100 echo {}ar
|
||||||
|
echo "### BUG: empty lines with --show-limit"
|
||||||
|
echo | stdout parallel --show-limits
|
||||||
|
) | perl -pe 's/131\d\d\d/131xxx/'
|
||||||
|
}
|
||||||
|
|
||||||
|
par_test_delimiter() {
|
||||||
|
echo "### Test : as delimiter. This can be confusing for uptime ie. --load";
|
||||||
|
export PARALLEL="--load 300%"
|
||||||
|
parallel -k --load 300% -d : echo ::: a:b:c
|
||||||
|
}
|
||||||
|
|
||||||
par_10000_m_X() {
|
par_10000_m_X() {
|
||||||
echo '### Test -m with 10000 args'
|
echo '### Test -m with 10000 args'
|
||||||
seq 10000 | perl -pe 's/$/.gif/' |
|
seq 10000 | perl -pe 's/$/.gif/' |
|
||||||
|
@ -25,12 +41,6 @@ par_10000_5_rpl_X() {
|
||||||
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b | wc -l
|
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b | wc -l
|
||||||
}
|
}
|
||||||
|
|
||||||
par_rpl_repeats() {
|
|
||||||
echo '### Test {.} does not repeat more than {}'
|
|
||||||
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -kX echo a{}b{.}c{.}
|
|
||||||
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -km echo a{}b{.}c{.}
|
|
||||||
}
|
|
||||||
|
|
||||||
par_X_I_meta() {
|
par_X_I_meta() {
|
||||||
echo '### Test -X -I with shell meta chars'
|
echo '### Test -X -I with shell meta chars'
|
||||||
|
|
||||||
|
@ -52,11 +62,6 @@ par_sshdelay() {
|
||||||
perl -ne 'print($_ > 1.30 ? "OK\n" : "Not OK\n")'
|
perl -ne 'print($_ > 1.30 ? "OK\n" : "Not OK\n")'
|
||||||
}
|
}
|
||||||
|
|
||||||
par_empty_string_quote() {
|
|
||||||
echo "bug #37694: Empty string argument skipped when using --quote"
|
|
||||||
parallel -q --nonall perl -le 'print scalar @ARGV' 'a' 'b' ''
|
|
||||||
}
|
|
||||||
|
|
||||||
par_compute_command_len() {
|
par_compute_command_len() {
|
||||||
echo "### Computing length of command line"
|
echo "### Computing length of command line"
|
||||||
seq 1 2 | parallel -k -N2 echo {1} {2}
|
seq 1 2 | parallel -k -N2 echo {1} {2}
|
||||||
|
@ -83,22 +88,6 @@ par_replacement_slashslash() {
|
||||||
parallel -k echo {1//} {} ::: ./a.jpg ./a/b.jpg ./a/b/c.jpg
|
parallel -k echo {1//} {} ::: ./a.jpg ./a/b.jpg ./a/b/c.jpg
|
||||||
}
|
}
|
||||||
|
|
||||||
par_dirnamereplace() {
|
|
||||||
echo '### Test --dnr'
|
|
||||||
parallel --dnr II -k echo II {} ::: a a/b a/b/c
|
|
||||||
|
|
||||||
echo '### Test --dirnamereplace'
|
|
||||||
parallel --dirnamereplace II -k echo II {} ::: a a/b a/b/c
|
|
||||||
}
|
|
||||||
|
|
||||||
par_negative_replacement() {
|
|
||||||
echo '### Negative replacement strings'
|
|
||||||
parallel -X -j1 -N 6 echo {-1}orrec{1} ::: t B X D E c
|
|
||||||
parallel -N 6 echo {-1}orrect ::: A B X D E c
|
|
||||||
parallel --colsep ' ' echo '{2} + {4} = {2} + {-1}=' '$(( {2} + {-1} ))' ::: "1 2 3 4"
|
|
||||||
parallel --colsep ' ' echo '{-3}orrect' ::: "1 c 3 4"
|
|
||||||
}
|
|
||||||
|
|
||||||
par_eta() {
|
par_eta() {
|
||||||
echo '### Test of --eta'
|
echo '### Test of --eta'
|
||||||
seq 1 10 | stdout parallel --eta "sleep 1; echo {}" | wc -l
|
seq 1 10 | stdout parallel --eta "sleep 1; echo {}" | wc -l
|
||||||
|
@ -224,17 +213,6 @@ par_test_X_with_multiple_source() {
|
||||||
parallel -j0 -kX echo {}-{.} ::: a b c ::: d e f
|
parallel -j0 -kX echo {}-{.} ::: a b c ::: d e f
|
||||||
}
|
}
|
||||||
|
|
||||||
par_resume_k() {
|
|
||||||
echo '### --resume -k'
|
|
||||||
tmp=$(tempfile)
|
|
||||||
parallel -k --resume --joblog $tmp echo job{}id\;exit {} ::: 0 1 2 3 0 5
|
|
||||||
echo try 2 = nothing
|
|
||||||
parallel -k --resume --joblog $tmp echo job{}id\;exit {} ::: 0 1 2 3 0 5
|
|
||||||
echo two extra
|
|
||||||
parallel -k --resume --joblog $tmp echo job{}id\;exit 0 ::: 0 1 2 3 0 5 6 7
|
|
||||||
rm -f $tmp
|
|
||||||
}
|
|
||||||
|
|
||||||
par_slow_args_generation() {
|
par_slow_args_generation() {
|
||||||
echo '### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834'
|
echo '### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834'
|
||||||
seq 1 3 | parallel -j1 "sleep 2; echo {}" | parallel -kj2 echo
|
seq 1 3 | parallel -j1 "sleep 2; echo {}" | parallel -kj2 echo
|
||||||
|
@ -289,17 +267,6 @@ par_wrong_slot_rpl_resume() {
|
||||||
'sleep 1; echo {%} {=$_==110 and exit =}'
|
'sleep 1; echo {%} {=$_==110 and exit =}'
|
||||||
}
|
}
|
||||||
|
|
||||||
par_pipepart_block() {
|
|
||||||
echo '### --pipepart --block -# (# < 0)'
|
|
||||||
|
|
||||||
seq 1000 > /run/shm/parallel$$
|
|
||||||
parallel -j2 -k --pipepart echo {#} :::: /run/shm/parallel$$
|
|
||||||
parallel -j2 -k --block -1 --pipepart echo {#}-2 :::: /run/shm/parallel$$
|
|
||||||
parallel -j2 -k --block -2 --pipepart echo {#}-4 :::: /run/shm/parallel$$
|
|
||||||
parallel -j2 -k --block -10 --pipepart echo {#}-20 :::: /run/shm/parallel$$
|
|
||||||
rm /run/shm/parallel$$
|
|
||||||
}
|
|
||||||
|
|
||||||
par_multiline_commands() {
|
par_multiline_commands() {
|
||||||
echo 'bug #50781: joblog format with multiline commands'
|
echo 'bug #50781: joblog format with multiline commands'
|
||||||
rm -f /tmp/jl.$$
|
rm -f /tmp/jl.$$
|
||||||
|
@ -321,15 +288,6 @@ par_sqlworker_hostname() {
|
||||||
perl -pe "s/$hostname/<hostname>/g"
|
perl -pe "s/$hostname/<hostname>/g"
|
||||||
}
|
}
|
||||||
|
|
||||||
par_sqlandworker_uninstalled_dbd() {
|
|
||||||
echo 'bug #56096: dbi-csv no such column'
|
|
||||||
mkdir -p /tmp/parallel-bug-56096
|
|
||||||
sudo mv /usr/share/perl5/DBD/CSV.pm /usr/share/perl5/DBD/CSV.pm.gone
|
|
||||||
parallel --sqlandworker csv:///%2Ftmp%2Fparallel-bug-56096/mytable echo ::: must_fail
|
|
||||||
sudo cp /usr/share/perl5/DBD/CSV.pm.gone /usr/share/perl5/DBD/CSV.pm
|
|
||||||
parallel --sqlandworker csv:///%2Ftmp%2Fparallel-bug-56096/mytable echo ::: works
|
|
||||||
}
|
|
||||||
|
|
||||||
par_commandline_with_newline() {
|
par_commandline_with_newline() {
|
||||||
echo 'bug #51299: --retry-failed with command with newline'
|
echo 'bug #51299: --retry-failed with command with newline'
|
||||||
echo 'The format must remain the same'
|
echo 'The format must remain the same'
|
||||||
|
@ -383,20 +341,6 @@ par_exitval_signal() {
|
||||||
rm -f /tmp/parallel_joblog_exitval /tmp/parallel_joblog_signal
|
rm -f /tmp/parallel_joblog_exitval /tmp/parallel_joblog_signal
|
||||||
}
|
}
|
||||||
|
|
||||||
par_do_not_export_PARALLEL_ENV() {
|
|
||||||
echo '### Do not export $PARALLEL_ENV to children'
|
|
||||||
doit() {
|
|
||||||
echo Should be 0
|
|
||||||
echo "$PARALLEL_ENV" | wc
|
|
||||||
echo Should give 60k and not overflow
|
|
||||||
PARALLEL_ENV="$PARALLEL_ENV" parallel echo '{=$_="\""x$_=}' ::: 60000 | wc
|
|
||||||
}
|
|
||||||
. `which env_parallel.bash`
|
|
||||||
# Make PARALLEL_ENV as big as possible
|
|
||||||
PARALLEL_ENV="a='$(seq 100000 | head -c $((139000-$(set|wc -c) )) )'"
|
|
||||||
env_parallel doit ::: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
par_lb_mem_usage() {
|
par_lb_mem_usage() {
|
||||||
long_line() {
|
long_line() {
|
||||||
perl -e 'print "x"x100_000_000'
|
perl -e 'print "x"x100_000_000'
|
||||||
|
|
|
@ -187,6 +187,170 @@ par_remote_nice() {
|
||||||
perl -pe 's/\S*parallel-server\S*/one-server/;s:="[0-9]+":="XXXXX":i;'
|
perl -pe 's/\S*parallel-server\S*/one-server/;s:="[0-9]+":="XXXXX":i;'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
par_hgrp_agrp() {
|
||||||
|
echo '### Test --hgrp {hgrp} {agrp}'
|
||||||
|
parallel --plus --hgrp -S @b+lo/bash@lo,@c+lo/csh@lo --tag 'echo hgrp={hgrp};echo agrp={agrp}' ::: A@b+c B@b C@c D@c+b@u E |
|
||||||
|
grep -vF -f <(cat <<_
|
||||||
|
A agrp=b+c
|
||||||
|
A hgrp=b+bash@lo+lo
|
||||||
|
A hgrp=b+lo+bash@lo
|
||||||
|
A hgrp=bash@lo+b+lo
|
||||||
|
A hgrp=bash@lo+lo+b
|
||||||
|
A hgrp=c+csh@lo+lo
|
||||||
|
A hgrp=c+lo+csh@lo
|
||||||
|
A hgrp=csh@lo+c+lo
|
||||||
|
A hgrp=csh@lo+lo+c
|
||||||
|
A hgrp=lo+b+bash@lo
|
||||||
|
A hgrp=lo+bash@lo+b
|
||||||
|
A hgrp=lo+c+csh@lo
|
||||||
|
A hgrp=lo+csh@lo+c
|
||||||
|
B agrp=b
|
||||||
|
B hgrp=b+bash@lo+lo
|
||||||
|
B hgrp=b+lo+bash@lo
|
||||||
|
B hgrp=bash@lo+b+lo
|
||||||
|
B hgrp=bash@lo+lo+b
|
||||||
|
B hgrp=lo+b+bash@lo
|
||||||
|
B hgrp=lo+bash@lo+b
|
||||||
|
C agrp=c
|
||||||
|
C hgrp=c+csh@lo+lo
|
||||||
|
C hgrp=c+lo+csh@lo
|
||||||
|
C hgrp=csh@lo+c+lo
|
||||||
|
C hgrp=csh@lo+lo+c
|
||||||
|
C hgrp=lo+c+csh@lo
|
||||||
|
C hgrp=lo+csh@lo+c
|
||||||
|
D agrp=c+b@u
|
||||||
|
D hgrp=c+csh@lo+lo
|
||||||
|
D hgrp=c+lo+csh@lo
|
||||||
|
D hgrp=csh@lo+c+lo
|
||||||
|
D hgrp=csh@lo+lo+c
|
||||||
|
D hgrp=lo+c+csh@lo
|
||||||
|
D hgrp=lo+csh@lo+c
|
||||||
|
E agrp=lo+b+c+bash@lo+csh@lo
|
||||||
|
E agrp=b+bash@lo+c+lo+csh@lo
|
||||||
|
E agrp=b+bash@lo+csh@lo+c+lo
|
||||||
|
E agrp=b+bash@lo+csh@lo+lo+c
|
||||||
|
E agrp=b+bash@lo+lo+c+csh@lo
|
||||||
|
E agrp=b+bash@lo+lo+csh@lo+c
|
||||||
|
E agrp=b+c+bash@lo+csh@lo+lo
|
||||||
|
E agrp=b+c+bash@lo+lo+csh@lo
|
||||||
|
E agrp=b+c+csh@lo+bash@lo+lo
|
||||||
|
E agrp=b+c+lo+bash@lo+csh@lo
|
||||||
|
E agrp=b+c+lo+csh@lo+bash@lo
|
||||||
|
E agrp=b+csh@lo+bash@lo+c+lo
|
||||||
|
E agrp=b+csh@lo+bash@lo+lo+c
|
||||||
|
E agrp=b+csh@lo+c+bash@lo+lo
|
||||||
|
E agrp=b+csh@lo+c+lo+bash@lo
|
||||||
|
E agrp=b+csh@lo+lo+bash@lo+c
|
||||||
|
E agrp=b+csh@lo+lo+c+bash@lo
|
||||||
|
E agrp=b+lo+bash@lo+c+csh@lo
|
||||||
|
E agrp=b+lo+bash@lo+csh@lo+c
|
||||||
|
E agrp=b+lo+c+bash@lo+csh@lo
|
||||||
|
E agrp=b+lo+c+csh@lo+bash@lo
|
||||||
|
E agrp=b+lo+csh@lo+bash@lo+c
|
||||||
|
E agrp=b+lo+csh@lo+c+bash@lo
|
||||||
|
E agrp=bash@lo+b+c+csh@lo+lo
|
||||||
|
E agrp=bash@lo+b+csh@lo+c+lo
|
||||||
|
E agrp=bash@lo+b+csh@lo+lo+c
|
||||||
|
E agrp=bash@lo+b+lo+c+csh@lo
|
||||||
|
E agrp=bash@lo+b+lo+csh@lo+c
|
||||||
|
E agrp=bash@lo+c+b+csh@lo+lo
|
||||||
|
E agrp=bash@lo+c+b+lo+csh@lo
|
||||||
|
E agrp=bash@lo+c+csh@lo+b+lo
|
||||||
|
E agrp=bash@lo+c+csh@lo+lo+b
|
||||||
|
E agrp=bash@lo+c+lo+b+csh@lo
|
||||||
|
E agrp=bash@lo+c+lo+csh@lo+b
|
||||||
|
E agrp=bash@lo+csh@lo+b+c+lo
|
||||||
|
E agrp=bash@lo+csh@lo+b+lo+c
|
||||||
|
E agrp=bash@lo+csh@lo+c+b+lo
|
||||||
|
E agrp=bash@lo+csh@lo+c+lo+b
|
||||||
|
E agrp=bash@lo+csh@lo+lo+b+c
|
||||||
|
E agrp=bash@lo+csh@lo+lo+c+b
|
||||||
|
E agrp=bash@lo+lo+b+c+csh@lo
|
||||||
|
E agrp=bash@lo+lo+b+csh@lo+c
|
||||||
|
E agrp=bash@lo+lo+c+b+csh@lo
|
||||||
|
E agrp=bash@lo+lo+c+csh@lo+b
|
||||||
|
E agrp=bash@lo+lo+csh@lo+b+c
|
||||||
|
E agrp=bash@lo+lo+csh@lo+c+b
|
||||||
|
E agrp=c+b+bash@lo+csh@lo+lo
|
||||||
|
E agrp=c+b+bash@lo+lo+csh@lo
|
||||||
|
E agrp=c+b+csh@lo+lo+bash@lo
|
||||||
|
E agrp=c+b+lo+bash@lo+csh@lo
|
||||||
|
E agrp=c+b+lo+csh@lo+bash@lo
|
||||||
|
E agrp=c+bash@lo+b+csh@lo+lo
|
||||||
|
E agrp=c+bash@lo+b+lo+csh@lo
|
||||||
|
E agrp=c+bash@lo+csh@lo+lo+b
|
||||||
|
E agrp=c+bash@lo+lo+b+csh@lo
|
||||||
|
E agrp=c+bash@lo+lo+csh@lo+b
|
||||||
|
E agrp=c+csh@lo+b+bash@lo+lo
|
||||||
|
E agrp=c+csh@lo+b+lo+bash@lo
|
||||||
|
E agrp=c+csh@lo+bash@lo+b+lo
|
||||||
|
E agrp=c+csh@lo+lo+b+bash@lo
|
||||||
|
E agrp=c+csh@lo+lo+bash@lo+b
|
||||||
|
E agrp=c+lo+b+bash@lo+csh@lo
|
||||||
|
E agrp=c+lo+b+csh@lo+bash@lo
|
||||||
|
E agrp=c+lo+bash@lo+b+csh@lo
|
||||||
|
E agrp=c+lo+bash@lo+csh@lo+b
|
||||||
|
E agrp=c+lo+csh@lo+b+bash@lo
|
||||||
|
E agrp=csh@lo+b+bash@lo+c+lo
|
||||||
|
E agrp=csh@lo+b+bash@lo+lo+c
|
||||||
|
E agrp=csh@lo+b+c+bash@lo+lo
|
||||||
|
E agrp=csh@lo+b+c+lo+bash@lo
|
||||||
|
E agrp=csh@lo+b+lo+c+bash@lo
|
||||||
|
E agrp=csh@lo+bash@lo+b+c+lo
|
||||||
|
E agrp=csh@lo+bash@lo+b+lo+c
|
||||||
|
E agrp=csh@lo+bash@lo+c+b+lo
|
||||||
|
E agrp=csh@lo+bash@lo+c+lo+b
|
||||||
|
E agrp=csh@lo+bash@lo+lo+b+c
|
||||||
|
E agrp=csh@lo+bash@lo+lo+c+b
|
||||||
|
E agrp=csh@lo+c+b+bash@lo+lo
|
||||||
|
E agrp=csh@lo+c+b+lo+bash@lo
|
||||||
|
E agrp=csh@lo+c+bash@lo+b+lo
|
||||||
|
E agrp=csh@lo+c+bash@lo+lo+b
|
||||||
|
E agrp=csh@lo+c+lo+b+bash@lo
|
||||||
|
E agrp=csh@lo+c+lo+bash@lo+b
|
||||||
|
E agrp=csh@lo+lo+b+bash@lo+c
|
||||||
|
E agrp=csh@lo+lo+b+c+bash@lo
|
||||||
|
E agrp=csh@lo+lo+bash@lo+b+c
|
||||||
|
E agrp=csh@lo+lo+bash@lo+c+b
|
||||||
|
E agrp=csh@lo+lo+c+b+bash@lo
|
||||||
|
E agrp=csh@lo+lo+c+bash@lo+b
|
||||||
|
E agrp=lo+b+bash@lo+c+csh@lo
|
||||||
|
E agrp=lo+b+bash@lo+csh@lo+c
|
||||||
|
E agrp=lo+b+c+csh@lo+bash@lo
|
||||||
|
E agrp=lo+b+csh@lo+bash@lo+c
|
||||||
|
E agrp=lo+b+csh@lo+c+bash@lo
|
||||||
|
E agrp=lo+bash@lo+b+c+csh@lo
|
||||||
|
E agrp=lo+bash@lo+b+csh@lo+c
|
||||||
|
E agrp=lo+bash@lo+c+b+csh@lo
|
||||||
|
E agrp=lo+bash@lo+c+csh@lo+b
|
||||||
|
E agrp=lo+bash@lo+csh@lo+c+b
|
||||||
|
E agrp=lo+c+b+bash@lo+csh@lo
|
||||||
|
E agrp=lo+c+b+csh@lo+bash@lo
|
||||||
|
E agrp=lo+c+bash@lo+b+csh@lo
|
||||||
|
E agrp=lo+c+bash@lo+csh@lo+b
|
||||||
|
E agrp=lo+c+csh@lo+b+bash@lo
|
||||||
|
E agrp=lo+c+csh@lo+bash@lo+b
|
||||||
|
E agrp=lo+csh@lo+b+c+bash@lo
|
||||||
|
E agrp=lo+csh@lo+bash@lo+b+c
|
||||||
|
E agrp=lo+csh@lo+bash@lo+c+b
|
||||||
|
E agrp=lo+csh@lo+c+b+bash@lo
|
||||||
|
E agrp=lo+csh@lo+c+bash@lo+b
|
||||||
|
E hgrp=b+bash@lo+lo
|
||||||
|
E hgrp=b+lo+bash@lo
|
||||||
|
E hgrp=bash@lo+b+lo
|
||||||
|
E hgrp=bash@lo+lo+b
|
||||||
|
E hgrp=c+csh@lo+lo
|
||||||
|
E hgrp=c+lo+csh@lo
|
||||||
|
E hgrp=csh@lo+c+lo
|
||||||
|
E hgrp=csh@lo+lo+c
|
||||||
|
E hgrp=lo+b+bash@lo
|
||||||
|
E hgrp=lo+bash@lo+b
|
||||||
|
E hgrp=lo+c+csh@lo
|
||||||
|
E hgrp=lo+csh@lo+c
|
||||||
|
_
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
export -f $(compgen -A function | grep par_)
|
export -f $(compgen -A function | grep par_)
|
||||||
compgen -A function | grep par_ | LC_ALL=C sort |
|
compgen -A function | grep par_ | LC_ALL=C sort |
|
||||||
parallel --timeout 130 -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
|
parallel --timeout 130 -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
|
||||||
|
|
|
@ -74,7 +74,14 @@ par_progress_text_max_jobs_to_run() {
|
||||||
|
|
||||||
par_hgrp_rpl() {
|
par_hgrp_rpl() {
|
||||||
echo '### Implement {hgrp} replacement string'
|
echo '### Implement {hgrp} replacement string'
|
||||||
parallel -k --plus --hgrp -S @b/bash@lo -S @c/csh@lo 'echo {sshlogin} {hgrp}' ::: b@b c@c
|
parallel -k --plus --hgrp -S @b/bash@lo -S @c/csh@lo 'echo {sshlogin} {hgrp}' ::: b@b c@c |
|
||||||
|
grep -v -F -f <(cat <<EOF
|
||||||
|
bash@lo bash@lo+b
|
||||||
|
bash@lo b+bash@lo
|
||||||
|
csh@lo c+csh@lo
|
||||||
|
csh@lo csh@lo+c
|
||||||
|
EOF
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
par_header_in_return() {
|
par_header_in_return() {
|
||||||
|
|
|
@ -1719,9 +1719,9 @@ par_bash_environment_too_big() {
|
||||||
len_var_remote=$len_overhead+50+25
|
len_var_remote=$len_overhead+50+25
|
||||||
len_var_quote=$len_overhead+50+25-12-6
|
len_var_quote=$len_overhead+50+25-12-6
|
||||||
len_var_quote_remote=$len_overhead+50-25+12+6-3
|
len_var_quote_remote=$len_overhead+50-25+12+6-3
|
||||||
len_fun=$len_overhead+100
|
len_fun=$len_overhead+110
|
||||||
len_fun_remote=$len_overhead+50+25
|
len_fun_remote=$len_overhead+50+25
|
||||||
len_fun_quote=$len_overhead+100
|
len_fun_quote=$len_overhead+110
|
||||||
len_fun_quote_remote=$len_overhead+50+25
|
len_fun_quote_remote=$len_overhead+50+25
|
||||||
|
|
||||||
. `which env_parallel.bash`;
|
. `which env_parallel.bash`;
|
||||||
|
|
|
@ -1,48 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export PARALLEL="--load 300%"
|
par_dummy() { true; }
|
||||||
|
|
||||||
par_test_delimiter() {
|
|
||||||
echo "### Test : as delimiter. This can be confusing for uptime ie. --load";
|
|
||||||
parallel -k --load 300% -d : echo ::: a:b:c
|
|
||||||
}
|
|
||||||
|
|
||||||
par_squared() {
|
|
||||||
squared() {
|
|
||||||
i=$1
|
|
||||||
i2=$[i*i]
|
|
||||||
seq $i2 | parallel -j0 --load 300% -kX echo {} | wc
|
|
||||||
seq 1 ${i2}0000 |
|
|
||||||
parallel -kj20 --recend "\n" --spreadstdin gzip -1 |
|
|
||||||
zcat | sort -n | md5sum
|
|
||||||
}
|
|
||||||
export -f squared
|
|
||||||
|
|
||||||
seq 10 -1 2 | stdout parallel -j5 -k squared |
|
|
||||||
grep -Ev 'processes took|Consider adjusting -j'
|
|
||||||
}
|
|
||||||
|
|
||||||
par_load_blocks() {
|
|
||||||
echo "### Test if --load blocks. Bug.";
|
|
||||||
(seq 1 1000 |
|
|
||||||
parallel -kj2 --load 300% --recend "\n" --spreadstdin gzip -1 |
|
|
||||||
zcat | sort -n | md5sum
|
|
||||||
seq 1 1000 |
|
|
||||||
parallel -kj200 --load 300% --recend "\n" --spreadstdin gzip -1 |
|
|
||||||
zcat | sort -n | md5sum) 2>&1 |
|
|
||||||
grep -Ev 'processes took|Consider adjusting -j'
|
|
||||||
}
|
|
||||||
|
|
||||||
par_load_from_PARALLEL() {
|
|
||||||
echo "### Test reading load from PARALLEL"
|
|
||||||
# Ignore stderr due to 'Starting processes took > 2 sec'
|
|
||||||
seq 1 1000000 |
|
|
||||||
parallel -kj200 --recend "\n" --spreadstdin gzip -1 2>/dev/null |
|
|
||||||
zcat | sort -n | md5sum
|
|
||||||
seq 1 1000000 |
|
|
||||||
parallel -kj20 --recend "\n" --spreadstdin gzip -1 |
|
|
||||||
zcat | sort -n | md5sum
|
|
||||||
}
|
|
||||||
|
|
||||||
export -f $(compgen -A function | grep par_)
|
export -f $(compgen -A function | grep par_)
|
||||||
compgen -A function | grep par_ | sort |
|
compgen -A function | grep par_ | sort |
|
||||||
|
|
|
@ -40,7 +40,7 @@ doit() {
|
||||||
$maxlen=-39+262144 - $envn - $envv - $onechar*5 - $envc*10;
|
$maxlen=-39+262144 - $envn - $envv - $onechar*5 - $envc*10;
|
||||||
print("Computed max len = $maxlen\n");
|
print("Computed max len = $maxlen\n");
|
||||||
$bin='$binlen';
|
$bin='$binlen';
|
||||||
print("Actual:$bin Diff:",$bin-$maxlen," Vars: $onechar $envc $envn $envv\n");
|
print("Diff:",$bin-$maxlen," Actual:$bin Vars: $onechar $envc $envn $envv\n");
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
export -f doit
|
export -f doit
|
||||||
|
|
|
@ -17,7 +17,8 @@ MAXTIME=50
|
||||||
RETRIES=3
|
RETRIES=3
|
||||||
# 11 too much for debian
|
# 11 too much for debian
|
||||||
MAXPROC=${maxproc:-9}
|
MAXPROC=${maxproc:-9}
|
||||||
MAXINNERPROC=${maxinnerproc:-3}
|
# 3 is too much for freebsd
|
||||||
|
MAXINNERPROC=${maxinnerproc:-2}
|
||||||
|
|
||||||
export PARALLEL_SSH="ssh -oLogLevel=quiet"
|
export PARALLEL_SSH="ssh -oLogLevel=quiet"
|
||||||
|
|
||||||
|
|
|
@ -108,12 +108,25 @@ par_delimiter line 3
|
||||||
par_delimiter_space ### Does space as delimiter work?
|
par_delimiter_space ### Does space as delimiter work?
|
||||||
par_delimiter_space 1
|
par_delimiter_space 1
|
||||||
par_delimiter_space done
|
par_delimiter_space done
|
||||||
|
par_dirnamereplace ### Test --dnr
|
||||||
|
par_dirnamereplace . a
|
||||||
|
par_dirnamereplace a a/b
|
||||||
|
par_dirnamereplace a/b a/b/c
|
||||||
|
par_dirnamereplace ### Test --dirnamereplace
|
||||||
|
par_dirnamereplace . a
|
||||||
|
par_dirnamereplace a a/b
|
||||||
|
par_dirnamereplace a/b a/b/c
|
||||||
par_disk_full ### Disk full
|
par_disk_full ### Disk full
|
||||||
par_disk_full cat: write error: No space left on device
|
par_disk_full cat: write error: No space left on device
|
||||||
par_disk_full parallel: Error: Output is incomplete.
|
par_disk_full parallel: Error: Output is incomplete.
|
||||||
par_disk_full parallel: Error: Cannot append to buffer file in /mnt/ram.
|
par_disk_full parallel: Error: Cannot append to buffer file in /mnt/ram.
|
||||||
par_disk_full parallel: Error: Is the disk full?
|
par_disk_full parallel: Error: Is the disk full?
|
||||||
par_disk_full parallel: Error: Change $TMPDIR with --tmpdir or use --compress.
|
par_disk_full parallel: Error: Change $TMPDIR with --tmpdir or use --compress.
|
||||||
|
par_do_not_export_PARALLEL_ENV ### Do not export $PARALLEL_ENV to children
|
||||||
|
par_do_not_export_PARALLEL_ENV Should be 0
|
||||||
|
par_do_not_export_PARALLEL_ENV 1 0 1
|
||||||
|
par_do_not_export_PARALLEL_ENV Should give 60k and not overflow
|
||||||
|
par_do_not_export_PARALLEL_ENV 1 1 60001
|
||||||
par_dryrun_append_joblog --dry-run should not append to joblog
|
par_dryrun_append_joblog --dry-run should not append to joblog
|
||||||
par_dryrun_append_joblog 1
|
par_dryrun_append_joblog 1
|
||||||
par_dryrun_append_joblog 2
|
par_dryrun_append_joblog 2
|
||||||
|
@ -139,6 +152,8 @@ par_empty_input_on_stdin This should give no output
|
||||||
par_empty_line ### Test bug: empty line for | sh with -k
|
par_empty_line ### Test bug: empty line for | sh with -k
|
||||||
par_empty_line a
|
par_empty_line a
|
||||||
par_empty_line b
|
par_empty_line b
|
||||||
|
par_empty_string_quote bug #37694: Empty string argument skipped when using --quote
|
||||||
|
par_empty_string_quote 3
|
||||||
par_exit_val ### Test bug #45619: "--halt" erroneous error exit code (should give 0)
|
par_exit_val ### Test bug #45619: "--halt" erroneous error exit code (should give 0)
|
||||||
par_exit_val 0
|
par_exit_val 0
|
||||||
par_exit_val ### Test exit val - true
|
par_exit_val ### Test exit val - true
|
||||||
|
@ -476,6 +491,11 @@ par_maxproc 200% proc 7
|
||||||
par_maxproc 200% proc 8
|
par_maxproc 200% proc 8
|
||||||
par_maxproc 200% proc 9
|
par_maxproc 200% proc 9
|
||||||
par_maxproc 200% proc 10
|
par_maxproc 200% proc 10
|
||||||
|
par_negative_replacement ### Negative replacement strings
|
||||||
|
par_negative_replacement correct
|
||||||
|
par_negative_replacement correct
|
||||||
|
par_negative_replacement 2 + 4 = 2 + 4= 6
|
||||||
|
par_negative_replacement correct
|
||||||
par_newline_in_command Command with newline and positional replacement strings
|
par_newline_in_command Command with newline and positional replacement strings
|
||||||
par_newline_in_command O K
|
par_newline_in_command O K
|
||||||
par_nice_locally ### Test --nice locally
|
par_nice_locally ### Test --nice locally
|
||||||
|
@ -822,6 +842,17 @@ par_results c
|
||||||
par_results_arg_256 ### bug #42089: --results with arg > 256 chars (should be 1 char shorter)
|
par_results_arg_256 ### bug #42089: --results with arg > 256 chars (should be 1 char shorter)
|
||||||
par_results_arg_256 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
|
par_results_arg_256 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
|
||||||
par_results_arg_256 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
|
par_results_arg_256 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
|
||||||
|
par_resume_k ### --resume -k
|
||||||
|
par_resume_k job0id
|
||||||
|
par_resume_k job1id
|
||||||
|
par_resume_k job2id
|
||||||
|
par_resume_k job3id
|
||||||
|
par_resume_k job0id
|
||||||
|
par_resume_k job5id
|
||||||
|
par_resume_k try 2 = nothing
|
||||||
|
par_resume_k two extra
|
||||||
|
par_resume_k job6id
|
||||||
|
par_resume_k job7id
|
||||||
par_retries_replacement_string 11
|
par_retries_replacement_string 11
|
||||||
par_retries_replacement_string 22
|
par_retries_replacement_string 22
|
||||||
par_retries_replacement_string 22
|
par_retries_replacement_string 22
|
||||||
|
@ -833,6 +864,13 @@ par_roundrobin_k 315464 315464 2097143
|
||||||
par_roundrobin_k 299592 299592 2097144
|
par_roundrobin_k 299592 299592 2097144
|
||||||
par_roundrobin_k 235148 235148 1646037
|
par_roundrobin_k 235148 235148 1646037
|
||||||
par_roundrobin_k 149796 149796 1048572
|
par_roundrobin_k 149796 149796 1048572
|
||||||
|
par_rpl_repeats ### Test {.} does not repeat more than {}
|
||||||
|
par_rpl_repeats a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
|
||||||
|
par_rpl_repeats a7.gifb7c7 a8.gifb8c8 a9.gifb9c9 a10.gifb10c10 a11.gifb11c11 a12.gifb12c12
|
||||||
|
par_rpl_repeats a13.gifb13c13 a14.gifb14c14 a15.gifb15c15
|
||||||
|
par_rpl_repeats a1.gif 2.gif 3.gif 4.gif 5.gif 6.gif 7.gifb1 2 3 4 5 6 7c1 2 3 4 5 6 7
|
||||||
|
par_rpl_repeats a8.gif 9.gif 10.gif 11.gif 12.gif 13.gifb8 9 10 11 12 13c8 9 10 11 12 13
|
||||||
|
par_rpl_repeats a14.gif 15.gifb14 15c14 15
|
||||||
par_rpl_that_is_substring_of_longer_rpl ### --rpl % that is a substring of longer --rpl %D
|
par_rpl_that_is_substring_of_longer_rpl ### --rpl % that is a substring of longer --rpl %D
|
||||||
par_rpl_that_is_substring_of_longer_rpl a.b/c.d/e.f=a.b/c.d/e.f
|
par_rpl_that_is_substring_of_longer_rpl a.b/c.d/e.f=a.b/c.d/e.f
|
||||||
par_rpl_that_is_substring_of_longer_rpl a.b/c.d=a.b/c.d
|
par_rpl_that_is_substring_of_longer_rpl a.b/c.d=a.b/c.d
|
||||||
|
@ -842,30 +880,6 @@ par_rpl_that_is_substring_of_longer_rpl a.b/c.d/e.f=a.b/c.d/e.f
|
||||||
par_sem_quote ### sem --quote should not add empty argument
|
par_sem_quote ### sem --quote should not add empty argument
|
||||||
par_sem_quote echo
|
par_sem_quote echo
|
||||||
par_sem_quote
|
par_sem_quote
|
||||||
par_show_limits ### Test --show-limits
|
|
||||||
par_show_limits Maximal size of command: 131xxx
|
|
||||||
par_show_limits Maximal used size of command: 131xxx
|
|
||||||
par_show_limits
|
|
||||||
par_show_limits Execution of will continue now, and it will try to read its input
|
|
||||||
par_show_limits and run commands; if this is not what you wanted to happen, please
|
|
||||||
par_show_limits press CTRL-D or CTRL-C
|
|
||||||
par_show_limits bar
|
|
||||||
par_show_limits car
|
|
||||||
par_show_limits far
|
|
||||||
par_show_limits Maximal size of command: 131xxx
|
|
||||||
par_show_limits Maximal used size of command: 100
|
|
||||||
par_show_limits
|
|
||||||
par_show_limits Execution of will continue now, and it will try to read its input
|
|
||||||
par_show_limits and run commands; if this is not what you wanted to happen, please
|
|
||||||
par_show_limits press CTRL-D or CTRL-C
|
|
||||||
par_show_limits bar car far
|
|
||||||
par_show_limits ### BUG: empty lines with --show-limit
|
|
||||||
par_show_limits Maximal size of command: 131xxx
|
|
||||||
par_show_limits Maximal used size of command: 131xxx
|
|
||||||
par_show_limits
|
|
||||||
par_show_limits Execution of will continue now, and it will try to read its input
|
|
||||||
par_show_limits and run commands; if this is not what you wanted to happen, please
|
|
||||||
par_show_limits press CTRL-D or CTRL-C
|
|
||||||
par_slow_pipe_regexp ### bug #53718: --pipe --regexp -N blocks
|
par_slow_pipe_regexp ### bug #53718: --pipe --regexp -N blocks
|
||||||
par_slow_pipe_regexp This should take a few ms, but took more than 2 hours
|
par_slow_pipe_regexp This should take a few ms, but took more than 2 hours
|
||||||
par_slow_pipe_regexp 980 981 5881
|
par_slow_pipe_regexp 980 981 5881
|
||||||
|
@ -1074,6 +1088,8 @@ par_tricolonplus 3 22 b cc
|
||||||
par_tricolonplus 3 23 c aa
|
par_tricolonplus 3 23 c aa
|
||||||
par_tricolonplus 3 23 c bb
|
par_tricolonplus 3 23 c bb
|
||||||
par_tricolonplus 3 23 c cc
|
par_tricolonplus 3 23 c cc
|
||||||
|
par_trim_illegal_value ### Test of --trim illegal
|
||||||
|
par_trim_illegal_value parallel: Error: --trim must be one of: r l rl lr.
|
||||||
par_unquote_replacement_string ### Can part of the replacement string be unquoted using uq()?
|
par_unquote_replacement_string ### Can part of the replacement string be unquoted using uq()?
|
||||||
par_unquote_replacement_string `echo foo`foo
|
par_unquote_replacement_string `echo foo`foo
|
||||||
par_verbose_t ### Test --verbose and -t
|
par_verbose_t ### Test --verbose and -t
|
||||||
|
|
|
@ -100,6 +100,24 @@ par_linebuffer_matters_compress ### (--linebuffer) --compress should give diffe
|
||||||
par_linebuffer_matters_compress OK: --linebuffer makes a difference
|
par_linebuffer_matters_compress OK: --linebuffer makes a difference
|
||||||
par_linebuffer_matters_compress_tag ### (--linebuffer) --compress --tag should give different output
|
par_linebuffer_matters_compress_tag ### (--linebuffer) --compress --tag should give different output
|
||||||
par_linebuffer_matters_compress_tag OK: --linebuffer makes a difference
|
par_linebuffer_matters_compress_tag OK: --linebuffer makes a difference
|
||||||
|
par_squared 100 100 292
|
||||||
|
par_squared 8a7095c1c23bfadc311fe6b16d950582 -
|
||||||
|
par_squared 81 81 234
|
||||||
|
par_squared c88e1757ddc619efd9ee507a7702b53c -
|
||||||
|
par_squared 64 64 183
|
||||||
|
par_squared f78c5b3d13146c60c9b586f51d05a4ae -
|
||||||
|
par_squared 49 49 138
|
||||||
|
par_squared 2af8be7306df18164a68e30e427217e0 -
|
||||||
|
par_squared 36 36 99
|
||||||
|
par_squared 5ee21398ecde0f3ea9b6093fbaf5a3c2 -
|
||||||
|
par_squared 25 25 66
|
||||||
|
par_squared 17e914b4a407dccd370c13173865deb1 -
|
||||||
|
par_squared 16 16 39
|
||||||
|
par_squared 6f5db0373227d2281dc26b1bf63b4027 -
|
||||||
|
par_squared 9 9 18
|
||||||
|
par_squared fa364205fcf6665c6f3e6cb868f65fd6 -
|
||||||
|
par_squared 4 4 8
|
||||||
|
par_squared 1c0f34fee7176dc367bead8f96cba6bc -
|
||||||
par_timeout ### test --timeout
|
par_timeout ### test --timeout
|
||||||
par_timeout OK
|
par_timeout OK
|
||||||
par_timeout OK
|
par_timeout OK
|
||||||
|
|
|
@ -24,6 +24,25 @@ par__pipepart_spawn 1:local / 2+ / 2+2+2+
|
||||||
par__pipepart_tee bug #45479: --pipe/--pipepart --tee
|
par__pipepart_tee bug #45479: --pipe/--pipepart --tee
|
||||||
par__pipepart_tee --pipepart --tee
|
par__pipepart_tee --pipepart --tee
|
||||||
par__pipepart_tee 314572800
|
par__pipepart_tee 314572800
|
||||||
|
par_bin ### Test --bin
|
||||||
|
par_bin 2 2 4
|
||||||
|
par_bin 2 2 4
|
||||||
|
par_bin 3 3 6
|
||||||
|
par_bin 3 3 7
|
||||||
|
par_bin 2 4 8
|
||||||
|
par_bin 2 4 8
|
||||||
|
par_bin 3 6 13
|
||||||
|
par_bin 3 6 13
|
||||||
|
par_bin ### Test --bin with expression that gives 1..n
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 5 10 21
|
||||||
|
par_bin 5 10 21
|
||||||
|
par_bin ### Test --bin with expression that gives 0..n-1
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 5 10 21
|
||||||
|
par_bin 5 10 21
|
||||||
par_colsep ### Test of --colsep
|
par_colsep ### Test of --colsep
|
||||||
par_colsep a b c
|
par_colsep a b c
|
||||||
par_colsep a b c
|
par_colsep a b c
|
||||||
|
@ -277,9 +296,10 @@ par_jobs_file sleep 5
|
||||||
par_jobs_file sleep 4
|
par_jobs_file sleep 4
|
||||||
par_k ### Test -k
|
par_k ### Test -k
|
||||||
par_k parallel: Warning: Only enough file handles to run X jobs in parallel.
|
par_k parallel: Warning: Only enough file handles to run X jobs in parallel.
|
||||||
par_k parallel: Warning: Running 'parallel -jX -N X --pipe parallel -jX' or
|
par_k parallel: Warning: Try running 'parallel -jX -N X --pipe parallel -jX'
|
||||||
par_k parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
|
par_k parallel: Warning: or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`)
|
||||||
par_k parallel: Warning: or /proc/sys/fs/file-max may help.
|
par_k parallel: Warning: or increasing 'nofile' in /etc/security/limits.conf
|
||||||
|
par_k parallel: Warning: or increasing /proc/sys/fs/file-max
|
||||||
par_k begin
|
par_k begin
|
||||||
par_k 1
|
par_k 1
|
||||||
par_k 2
|
par_k 2
|
||||||
|
@ -492,6 +512,9 @@ par_kill_children_timeout 0 0 0
|
||||||
par_line_buffer ### --line-buffer
|
par_line_buffer ### --line-buffer
|
||||||
par_line_buffer 55 55 120
|
par_line_buffer 55 55 120
|
||||||
par_line_buffer These must diff: 1
|
par_line_buffer These must diff: 1
|
||||||
|
par_load_blocks ### Test if --load blocks. Bug.
|
||||||
|
par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 -
|
||||||
|
par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 -
|
||||||
par_long_line_remote ### Deal with long command lines on remote servers
|
par_long_line_remote ### Deal with long command lines on remote servers
|
||||||
par_long_line_remote 2 6 30006
|
par_long_line_remote 2 6 30006
|
||||||
par_long_line_remote 3 50 250050
|
par_long_line_remote 3 50 250050
|
||||||
|
@ -711,8 +734,6 @@ par_pipe_line_buffer 200 400 1202
|
||||||
par_pipe_line_buffer These must diff: 1
|
par_pipe_line_buffer These must diff: 1
|
||||||
par_pipe_line_buffer_compress ### --pipe --line-buffer --compress
|
par_pipe_line_buffer_compress ### --pipe --line-buffer --compress
|
||||||
par_pipe_line_buffer_compress 200 400 1202
|
par_pipe_line_buffer_compress 200 400 1202
|
||||||
par_results_compress 0
|
|
||||||
par_results_compress 1
|
|
||||||
par_results_csv bug #: --results csv
|
par_results_csv bug #: --results csv
|
||||||
par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
|
par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
|
||||||
par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
|
par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
|
||||||
|
@ -911,6 +932,97 @@ par_semaphore job3a 4
|
||||||
par_semaphore job2b 5
|
par_semaphore job2b 5
|
||||||
par_semaphore job3b 6
|
par_semaphore job3b 6
|
||||||
par_semaphore done
|
par_semaphore done
|
||||||
|
par_shard ### --shard
|
||||||
|
par_shard OK
|
||||||
|
par_shard OK
|
||||||
|
par_shard OK
|
||||||
|
par_shard OK
|
||||||
|
par_shard OK
|
||||||
|
par_shard 10 1
|
||||||
|
par_shard 10 2
|
||||||
|
par_shard 10 3
|
||||||
|
par_shard 10 4
|
||||||
|
par_shard 10 5
|
||||||
|
par_shard 10 6
|
||||||
|
par_shard 10 7
|
||||||
|
par_shard 10 8
|
||||||
|
par_shard 10 9
|
||||||
|
par_shard 9 0
|
||||||
|
par_shard 9 1
|
||||||
|
par_shard 9 2
|
||||||
|
par_shard 9 3
|
||||||
|
par_shard 9 4
|
||||||
|
par_shard 9 5
|
||||||
|
par_shard 9 6
|
||||||
|
par_shard 9 7
|
||||||
|
par_shard 9 8
|
||||||
|
par_shard 9 9
|
||||||
|
par_shard 10 1
|
||||||
|
par_shard 10 2
|
||||||
|
par_shard 10 3
|
||||||
|
par_shard 10 4
|
||||||
|
par_shard 10 5
|
||||||
|
par_shard 10 6
|
||||||
|
par_shard 10 7
|
||||||
|
par_shard 10 8
|
||||||
|
par_shard 10 9
|
||||||
|
par_shard 9 0
|
||||||
|
par_shard 9 1
|
||||||
|
par_shard 9 2
|
||||||
|
par_shard 9 3
|
||||||
|
par_shard 9 4
|
||||||
|
par_shard 9 5
|
||||||
|
par_shard 9 6
|
||||||
|
par_shard 9 7
|
||||||
|
par_shard 9 8
|
||||||
|
par_shard 9 9
|
||||||
|
par_shard 10 1
|
||||||
|
par_shard 10 2
|
||||||
|
par_shard 10 3
|
||||||
|
par_shard 10 4
|
||||||
|
par_shard 10 5
|
||||||
|
par_shard 10 6
|
||||||
|
par_shard 10 7
|
||||||
|
par_shard 10 8
|
||||||
|
par_shard 10 9
|
||||||
|
par_shard 2 c1
|
||||||
|
par_shard 9 0
|
||||||
|
par_shard 9 1
|
||||||
|
par_shard 9 2
|
||||||
|
par_shard 9 3
|
||||||
|
par_shard 9 4
|
||||||
|
par_shard 9 5
|
||||||
|
par_shard 9 6
|
||||||
|
par_shard 9 7
|
||||||
|
par_shard 9 8
|
||||||
|
par_shard 9 9
|
||||||
|
par_shard 2 c2
|
||||||
|
par_shard 10 1
|
||||||
|
par_shard 10 2
|
||||||
|
par_shard 10 3
|
||||||
|
par_shard 10 4
|
||||||
|
par_shard 10 5
|
||||||
|
par_shard 10 6
|
||||||
|
par_shard 10 7
|
||||||
|
par_shard 10 8
|
||||||
|
par_shard 10 9
|
||||||
|
par_shard 2 c1
|
||||||
|
par_shard 9 0
|
||||||
|
par_shard 9 1
|
||||||
|
par_shard 9 2
|
||||||
|
par_shard 9 3
|
||||||
|
par_shard 9 4
|
||||||
|
par_shard 9 5
|
||||||
|
par_shard 9 6
|
||||||
|
par_shard 9 7
|
||||||
|
par_shard 9 8
|
||||||
|
par_shard 9 9
|
||||||
|
par_shard 2 c2
|
||||||
|
par_shard *** broken
|
||||||
|
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
||||||
|
par_shard parallel: Error: arguments. Increase --jobs.
|
||||||
|
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
||||||
|
par_shard parallel: Error: arguments. Increase --jobs.
|
||||||
par_shellquote ### Test --shellquote in all shells
|
par_shellquote ### Test --shellquote in all shells
|
||||||
par_shellquote ash '
|
par_shellquote ash '
|
||||||
par_shellquote ash
par_shellquote ash !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€<7F>‚ƒ„…†‡ˆ‰Š‹Œ<E280B9>Ž<EFBFBD><C5BD>‘’“”•–—˜™š›œ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
|
par_shellquote ash
par_shellquote ash !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€<7F>‚ƒ„…†‡ˆ‰Š‹Œ<E280B9>Ž<EFBFBD><C5BD>‘’“”•–—˜™š›œ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
|
||||||
|
|
|
@ -266,9 +266,10 @@ par_null_resume B
|
||||||
par_null_resume C
|
par_null_resume C
|
||||||
par_open_files_blocks bug #38439: "open files" with --files --pipe blocks after a while
|
par_open_files_blocks bug #38439: "open files" with --files --pipe blocks after a while
|
||||||
par_open_files_blocks parallel: Warning: Only enough file handles to run 2 jobs in parallel.
|
par_open_files_blocks parallel: Warning: Only enough file handles to run 2 jobs in parallel.
|
||||||
par_open_files_blocks parallel: Warning: Running 'parallel -j0 -N 2 --pipe parallel -j0' or
|
par_open_files_blocks parallel: Warning: Try running 'parallel -j0 -N 2 --pipe parallel -j0'
|
||||||
par_open_files_blocks parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
|
par_open_files_blocks parallel: Warning: or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`)
|
||||||
par_open_files_blocks parallel: Warning: or /proc/sys/fs/file-max may help.
|
par_open_files_blocks parallel: Warning: or increasing 'nofile' in /etc/security/limits.conf
|
||||||
|
par_open_files_blocks parallel: Warning: or increasing /proc/sys/fs/file-max
|
||||||
par_open_files_blocks 1 of 21
|
par_open_files_blocks 1 of 21
|
||||||
par_open_files_blocks 2 of 21
|
par_open_files_blocks 2 of 21
|
||||||
par_open_files_blocks 3 of 21
|
par_open_files_blocks 3 of 21
|
||||||
|
@ -327,6 +328,53 @@ par_pipe_unneeded_procs bug #34241: --pipe should not spawn unneeded processes -
|
||||||
par_pipe_unneeded_procs 2
|
par_pipe_unneeded_procs 2
|
||||||
par_pipe_unneeded_procs No .par should exist
|
par_pipe_unneeded_procs No .par should exist
|
||||||
par_pipe_unneeded_procs ls: cannot access '*.par': No such file or directory
|
par_pipe_unneeded_procs ls: cannot access '*.par': No such file or directory
|
||||||
|
par_pipepart_block ### --pipepart --block -# (# < 0)
|
||||||
|
par_pipepart_block 1
|
||||||
|
par_pipepart_block 2
|
||||||
|
par_pipepart_block 3
|
||||||
|
par_pipepart_block 4
|
||||||
|
par_pipepart_block 5
|
||||||
|
par_pipepart_block 6
|
||||||
|
par_pipepart_block 7
|
||||||
|
par_pipepart_block 8
|
||||||
|
par_pipepart_block 9
|
||||||
|
par_pipepart_block 10
|
||||||
|
par_pipepart_block 11
|
||||||
|
par_pipepart_block 12
|
||||||
|
par_pipepart_block 13
|
||||||
|
par_pipepart_block 14
|
||||||
|
par_pipepart_block 15
|
||||||
|
par_pipepart_block 16
|
||||||
|
par_pipepart_block 17
|
||||||
|
par_pipepart_block 18
|
||||||
|
par_pipepart_block 19
|
||||||
|
par_pipepart_block 20
|
||||||
|
par_pipepart_block 1-2
|
||||||
|
par_pipepart_block 2-2
|
||||||
|
par_pipepart_block 1-4
|
||||||
|
par_pipepart_block 2-4
|
||||||
|
par_pipepart_block 3-4
|
||||||
|
par_pipepart_block 4-4
|
||||||
|
par_pipepart_block 1-20
|
||||||
|
par_pipepart_block 2-20
|
||||||
|
par_pipepart_block 3-20
|
||||||
|
par_pipepart_block 4-20
|
||||||
|
par_pipepart_block 5-20
|
||||||
|
par_pipepart_block 6-20
|
||||||
|
par_pipepart_block 7-20
|
||||||
|
par_pipepart_block 8-20
|
||||||
|
par_pipepart_block 9-20
|
||||||
|
par_pipepart_block 10-20
|
||||||
|
par_pipepart_block 11-20
|
||||||
|
par_pipepart_block 12-20
|
||||||
|
par_pipepart_block 13-20
|
||||||
|
par_pipepart_block 14-20
|
||||||
|
par_pipepart_block 15-20
|
||||||
|
par_pipepart_block 16-20
|
||||||
|
par_pipepart_block 17-20
|
||||||
|
par_pipepart_block 18-20
|
||||||
|
par_pipepart_block 19-20
|
||||||
|
par_pipepart_block 20-20
|
||||||
par_profiles_with_space ### bug #42902: profiles containing arguments with space
|
par_profiles_with_space ### bug #42902: profiles containing arguments with space
|
||||||
par_profiles_with_space /bin/bash=/bin/bash
|
par_profiles_with_space /bin/bash=/bin/bash
|
||||||
par_profiles_with_space echo '/bin/bash=/bin/bash'
|
par_profiles_with_space echo '/bin/bash=/bin/bash'
|
||||||
|
@ -650,6 +698,8 @@ par_result_replace /tmp/par__49983-baz C
|
||||||
par_result_replace /tmp/par__49983-baz C/seq
|
par_result_replace /tmp/par__49983-baz C/seq
|
||||||
par_result_replace /tmp/par__49983-baz C/stderr
|
par_result_replace /tmp/par__49983-baz C/stderr
|
||||||
par_result_replace /tmp/par__49983-baz C/stdout
|
par_result_replace /tmp/par__49983-baz C/stdout
|
||||||
|
par_results_compress 0
|
||||||
|
par_results_compress 1
|
||||||
par_seqreplace_long_line ### Test --seqreplace and line too long
|
par_seqreplace_long_line ### Test --seqreplace and line too long
|
||||||
par_seqreplace_long_line 9 1 1 101
|
par_seqreplace_long_line 9 1 1 101
|
||||||
par_seqreplace_long_line 90 1 1 201
|
par_seqreplace_long_line 90 1 1 201
|
||||||
|
@ -689,6 +739,9 @@ par_sql_colsep b B 1 11 b B 2 22 b B 3 33
|
||||||
par_sql_colsep b B 4 44 b B 5 55 b B 6 66
|
par_sql_colsep b B 4 44 b B 5 55 b B 6 66
|
||||||
par_sql_colsep c C 1 11 c C 2 22 c C 3 33
|
par_sql_colsep c C 1 11 c C 2 22 c C 3 33
|
||||||
par_sql_colsep c C 4 44 c C 5 55 c C 6 66
|
par_sql_colsep c C 4 44 c C 5 55 c C 6 66
|
||||||
|
par_sqlandworker_uninstalled_dbd bug #56096: dbi-csv no such column
|
||||||
|
par_sqlandworker_uninstalled_dbd parallel: Error: CSV not supported. Are you missing a perl DBD::CSV module?
|
||||||
|
par_sqlandworker_uninstalled_dbd works
|
||||||
par_test_E ### Test -E
|
par_test_E ### Test -E
|
||||||
par_test_E 1 2 3
|
par_test_E 1 2 3
|
||||||
par_test_E 1 2 4
|
par_test_E 1 2 4
|
||||||
|
@ -876,5 +929,3 @@ par_trailing_space_line_continuation ### Test of trailing space continuation wit
|
||||||
par_trailing_space_line_continuation foo ole
|
par_trailing_space_line_continuation foo ole
|
||||||
par_trailing_space_line_continuation foo ole
|
par_trailing_space_line_continuation foo ole
|
||||||
par_trailing_space_line_continuation foo ole
|
par_trailing_space_line_continuation foo ole
|
||||||
par_trim_illegal_value ### Test of --trim illegal
|
|
||||||
par_trim_illegal_value parallel: Error: --trim must be one of: r l rl lr.
|
|
||||||
|
|
|
@ -158,9 +158,10 @@ par_mem_leak ### test for mem leak
|
||||||
par_mem_leak no mem leak detected
|
par_mem_leak no mem leak detected
|
||||||
par_outside_file_handle_limit ### Test Force outside the file handle limit, 2009-02-17 Gave fork error
|
par_outside_file_handle_limit ### Test Force outside the file handle limit, 2009-02-17 Gave fork error
|
||||||
par_outside_file_handle_limit parallel: Warning: Only enough file handles to run 999 jobs in parallel.
|
par_outside_file_handle_limit parallel: Warning: Only enough file handles to run 999 jobs in parallel.
|
||||||
par_outside_file_handle_limit parallel: Warning: Running 'parallel -j0 -N 999 --pipe parallel -j0' or
|
par_outside_file_handle_limit parallel: Warning: Try running 'parallel -j0 -N 999 --pipe parallel -j0'
|
||||||
par_outside_file_handle_limit parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
|
par_outside_file_handle_limit parallel: Warning: or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`)
|
||||||
par_outside_file_handle_limit parallel: Warning: or /proc/sys/fs/file-max may help.
|
par_outside_file_handle_limit parallel: Warning: or increasing 'nofile' in /etc/security/limits.conf
|
||||||
|
par_outside_file_handle_limit parallel: Warning: or increasing /proc/sys/fs/file-max
|
||||||
par_outside_file_handle_limit Start
|
par_outside_file_handle_limit Start
|
||||||
par_outside_file_handle_limit end
|
par_outside_file_handle_limit end
|
||||||
par_over_4GB ### Test if we can deal with output > 4 GB
|
par_over_4GB ### Test if we can deal with output > 4 GB
|
||||||
|
|
|
@ -1,22 +1,3 @@
|
||||||
par_bin ### Test --bin
|
|
||||||
par_bin 2 2 4
|
|
||||||
par_bin 2 2 4
|
|
||||||
par_bin 3 3 6
|
|
||||||
par_bin 3 3 7
|
|
||||||
par_bin 2 4 8
|
|
||||||
par_bin 2 4 8
|
|
||||||
par_bin 3 6 13
|
|
||||||
par_bin 3 6 13
|
|
||||||
par_bin ### Test --bin with expression that gives 1..n
|
|
||||||
par_bin 0 0 0
|
|
||||||
par_bin 0 0 0
|
|
||||||
par_bin 5 10 21
|
|
||||||
par_bin 5 10 21
|
|
||||||
par_bin ### Test --bin with expression that gives 0..n-1
|
|
||||||
par_bin 0 0 0
|
|
||||||
par_bin 0 0 0
|
|
||||||
par_bin 5 10 21
|
|
||||||
par_bin 5 10 21
|
|
||||||
par_exit_code bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"
|
par_exit_code bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"
|
||||||
par_exit_code # Ideally the command should return the same
|
par_exit_code # Ideally the command should return the same
|
||||||
par_exit_code # with or without parallel
|
par_exit_code # with or without parallel
|
||||||
|
@ -1449,6 +1430,9 @@ par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
|
||||||
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90001 90001 1170031
|
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90001 90001 1170031
|
||||||
par_keeporder_roundrobin bug #50081: --keep-order --round-robin should give predictable results
|
par_keeporder_roundrobin bug #50081: --keep-order --round-robin should give predictable results
|
||||||
par_keeporder_roundrobin OK
|
par_keeporder_roundrobin OK
|
||||||
|
par_load_from_PARALLEL ### Test reading load from PARALLEL
|
||||||
|
par_load_from_PARALLEL 8a7095c1c23bfadc311fe6b16d950582 -
|
||||||
|
par_load_from_PARALLEL 8a7095c1c23bfadc311fe6b16d950582 -
|
||||||
par_macron ### See if \257\256 \257<\257> is replaced correctly
|
par_macron ### See if \257\256 \257<\257> is replaced correctly
|
||||||
par_macron ¯ -X ¯
|
par_macron ¯ -X ¯
|
||||||
par_macron ¯ -X ¯
|
par_macron ¯ -X ¯
|
||||||
|
@ -1656,97 +1640,6 @@ par_race_condition1 9
|
||||||
par_race_condition1 10
|
par_race_condition1 10
|
||||||
par_round_robin_blocks bug #49664: --round-robin does not complete
|
par_round_robin_blocks bug #49664: --round-robin does not complete
|
||||||
par_round_robin_blocks 8
|
par_round_robin_blocks 8
|
||||||
par_shard ### --shard
|
|
||||||
par_shard OK
|
|
||||||
par_shard OK
|
|
||||||
par_shard OK
|
|
||||||
par_shard OK
|
|
||||||
par_shard OK
|
|
||||||
par_shard 10 1
|
|
||||||
par_shard 10 2
|
|
||||||
par_shard 10 3
|
|
||||||
par_shard 10 4
|
|
||||||
par_shard 10 5
|
|
||||||
par_shard 10 6
|
|
||||||
par_shard 10 7
|
|
||||||
par_shard 10 8
|
|
||||||
par_shard 10 9
|
|
||||||
par_shard 9 0
|
|
||||||
par_shard 9 1
|
|
||||||
par_shard 9 2
|
|
||||||
par_shard 9 3
|
|
||||||
par_shard 9 4
|
|
||||||
par_shard 9 5
|
|
||||||
par_shard 9 6
|
|
||||||
par_shard 9 7
|
|
||||||
par_shard 9 8
|
|
||||||
par_shard 9 9
|
|
||||||
par_shard 10 1
|
|
||||||
par_shard 10 2
|
|
||||||
par_shard 10 3
|
|
||||||
par_shard 10 4
|
|
||||||
par_shard 10 5
|
|
||||||
par_shard 10 6
|
|
||||||
par_shard 10 7
|
|
||||||
par_shard 10 8
|
|
||||||
par_shard 10 9
|
|
||||||
par_shard 9 0
|
|
||||||
par_shard 9 1
|
|
||||||
par_shard 9 2
|
|
||||||
par_shard 9 3
|
|
||||||
par_shard 9 4
|
|
||||||
par_shard 9 5
|
|
||||||
par_shard 9 6
|
|
||||||
par_shard 9 7
|
|
||||||
par_shard 9 8
|
|
||||||
par_shard 9 9
|
|
||||||
par_shard 10 1
|
|
||||||
par_shard 10 2
|
|
||||||
par_shard 10 3
|
|
||||||
par_shard 10 4
|
|
||||||
par_shard 10 5
|
|
||||||
par_shard 10 6
|
|
||||||
par_shard 10 7
|
|
||||||
par_shard 10 8
|
|
||||||
par_shard 10 9
|
|
||||||
par_shard 2 c1
|
|
||||||
par_shard 9 0
|
|
||||||
par_shard 9 1
|
|
||||||
par_shard 9 2
|
|
||||||
par_shard 9 3
|
|
||||||
par_shard 9 4
|
|
||||||
par_shard 9 5
|
|
||||||
par_shard 9 6
|
|
||||||
par_shard 9 7
|
|
||||||
par_shard 9 8
|
|
||||||
par_shard 9 9
|
|
||||||
par_shard 2 c2
|
|
||||||
par_shard 10 1
|
|
||||||
par_shard 10 2
|
|
||||||
par_shard 10 3
|
|
||||||
par_shard 10 4
|
|
||||||
par_shard 10 5
|
|
||||||
par_shard 10 6
|
|
||||||
par_shard 10 7
|
|
||||||
par_shard 10 8
|
|
||||||
par_shard 10 9
|
|
||||||
par_shard 2 c1
|
|
||||||
par_shard 9 0
|
|
||||||
par_shard 9 1
|
|
||||||
par_shard 9 2
|
|
||||||
par_shard 9 3
|
|
||||||
par_shard 9 4
|
|
||||||
par_shard 9 5
|
|
||||||
par_shard 9 6
|
|
||||||
par_shard 9 7
|
|
||||||
par_shard 9 8
|
|
||||||
par_shard 9 9
|
|
||||||
par_shard 2 c2
|
|
||||||
par_shard *** broken
|
|
||||||
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
|
||||||
par_shard parallel: Error: arguments. Increase --jobs.
|
|
||||||
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
|
||||||
par_shard parallel: Error: arguments. Increase --jobs.
|
|
||||||
par_sighup ### Test SIGHUP
|
par_sighup ### Test SIGHUP
|
||||||
par_sighup 1
|
par_sighup 1
|
||||||
par_sighup 10
|
par_sighup 10
|
||||||
|
|
|
@ -66,14 +66,6 @@ par_delay_human_readable c
|
||||||
par_delay_human_readable a
|
par_delay_human_readable a
|
||||||
par_delay_human_readable b
|
par_delay_human_readable b
|
||||||
par_delay_human_readable c
|
par_delay_human_readable c
|
||||||
par_dirnamereplace ### Test --dnr
|
|
||||||
par_dirnamereplace . a
|
|
||||||
par_dirnamereplace a a/b
|
|
||||||
par_dirnamereplace a/b a/b/c
|
|
||||||
par_dirnamereplace ### Test --dirnamereplace
|
|
||||||
par_dirnamereplace . a
|
|
||||||
par_dirnamereplace a a/b
|
|
||||||
par_dirnamereplace a/b a/b/c
|
|
||||||
par_distribute_args_at_EOF ### Test distribute arguments at EOF to 2 jobslots
|
par_distribute_args_at_EOF ### Test distribute arguments at EOF to 2 jobslots
|
||||||
par_distribute_args_at_EOF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
par_distribute_args_at_EOF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
||||||
par_distribute_args_at_EOF 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
par_distribute_args_at_EOF 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
||||||
|
@ -122,13 +114,6 @@ par_distribute_args_at_EOF 1 2 3 4 5 6 7 8 9
|
||||||
par_distribute_args_at_EOF ### Test -N is not broken by distribution - two lines
|
par_distribute_args_at_EOF ### Test -N is not broken by distribution - two lines
|
||||||
par_distribute_args_at_EOF 1 2 3 4 5 6 7 8 9 10
|
par_distribute_args_at_EOF 1 2 3 4 5 6 7 8 9 10
|
||||||
par_distribute_args_at_EOF 11 12 13 14 15 16 17 18 19
|
par_distribute_args_at_EOF 11 12 13 14 15 16 17 18 19
|
||||||
par_do_not_export_PARALLEL_ENV ### Do not export $PARALLEL_ENV to children
|
|
||||||
par_do_not_export_PARALLEL_ENV Should be 0
|
|
||||||
par_do_not_export_PARALLEL_ENV 1 0 1
|
|
||||||
par_do_not_export_PARALLEL_ENV Should give 60k and not overflow
|
|
||||||
par_do_not_export_PARALLEL_ENV 1 1 60001
|
|
||||||
par_empty_string_quote bug #37694: Empty string argument skipped when using --quote
|
|
||||||
par_empty_string_quote 3
|
|
||||||
par_eta ### Test of --eta
|
par_eta ### Test of --eta
|
||||||
par_eta 16
|
par_eta 16
|
||||||
par_eta ### Test of --eta with no jobs
|
par_eta ### Test of --eta with no jobs
|
||||||
|
@ -223,58 +208,6 @@ par_multiline_commands echo finish 4
|
||||||
par_multiline_commands parallel: Warning: Command lines contain newline. Forcing --null.
|
par_multiline_commands parallel: Warning: Command lines contain newline. Forcing --null.
|
||||||
par_multiline_commands 4
|
par_multiline_commands 4
|
||||||
par_multiline_commands finish 4
|
par_multiline_commands finish 4
|
||||||
par_negative_replacement ### Negative replacement strings
|
|
||||||
par_negative_replacement correct
|
|
||||||
par_negative_replacement correct
|
|
||||||
par_negative_replacement 2 + 4 = 2 + 4= 6
|
|
||||||
par_negative_replacement correct
|
|
||||||
par_pipepart_block ### --pipepart --block -# (# < 0)
|
|
||||||
par_pipepart_block 1
|
|
||||||
par_pipepart_block 2
|
|
||||||
par_pipepart_block 3
|
|
||||||
par_pipepart_block 4
|
|
||||||
par_pipepart_block 5
|
|
||||||
par_pipepart_block 6
|
|
||||||
par_pipepart_block 7
|
|
||||||
par_pipepart_block 8
|
|
||||||
par_pipepart_block 9
|
|
||||||
par_pipepart_block 10
|
|
||||||
par_pipepart_block 11
|
|
||||||
par_pipepart_block 12
|
|
||||||
par_pipepart_block 13
|
|
||||||
par_pipepart_block 14
|
|
||||||
par_pipepart_block 15
|
|
||||||
par_pipepart_block 16
|
|
||||||
par_pipepart_block 17
|
|
||||||
par_pipepart_block 18
|
|
||||||
par_pipepart_block 19
|
|
||||||
par_pipepart_block 20
|
|
||||||
par_pipepart_block 1-2
|
|
||||||
par_pipepart_block 2-2
|
|
||||||
par_pipepart_block 1-4
|
|
||||||
par_pipepart_block 2-4
|
|
||||||
par_pipepart_block 3-4
|
|
||||||
par_pipepart_block 4-4
|
|
||||||
par_pipepart_block 1-20
|
|
||||||
par_pipepart_block 2-20
|
|
||||||
par_pipepart_block 3-20
|
|
||||||
par_pipepart_block 4-20
|
|
||||||
par_pipepart_block 5-20
|
|
||||||
par_pipepart_block 6-20
|
|
||||||
par_pipepart_block 7-20
|
|
||||||
par_pipepart_block 8-20
|
|
||||||
par_pipepart_block 9-20
|
|
||||||
par_pipepart_block 10-20
|
|
||||||
par_pipepart_block 11-20
|
|
||||||
par_pipepart_block 12-20
|
|
||||||
par_pipepart_block 13-20
|
|
||||||
par_pipepart_block 14-20
|
|
||||||
par_pipepart_block 15-20
|
|
||||||
par_pipepart_block 16-20
|
|
||||||
par_pipepart_block 17-20
|
|
||||||
par_pipepart_block 18-20
|
|
||||||
par_pipepart_block 19-20
|
|
||||||
par_pipepart_block 20-20
|
|
||||||
par_progress ### Test of --progress
|
par_progress ### Test of --progress
|
||||||
par_progress 16
|
par_progress 16
|
||||||
par_progress ### Test of --progress with no jobs
|
par_progress ### Test of --progress with no jobs
|
||||||
|
@ -320,31 +253,34 @@ par_replacement_slashslash /a/b /a/b/c.jpg
|
||||||
par_replacement_slashslash . ./a.jpg
|
par_replacement_slashslash . ./a.jpg
|
||||||
par_replacement_slashslash ./a ./a/b.jpg
|
par_replacement_slashslash ./a ./a/b.jpg
|
||||||
par_replacement_slashslash ./a/b ./a/b/c.jpg
|
par_replacement_slashslash ./a/b ./a/b/c.jpg
|
||||||
par_resume_k ### --resume -k
|
par_show_limits ### Test --show-limits
|
||||||
par_resume_k job0id
|
par_show_limits Maximal size of command: 131xxx
|
||||||
par_resume_k job1id
|
par_show_limits Maximal used size of command: 131xxx
|
||||||
par_resume_k job2id
|
par_show_limits
|
||||||
par_resume_k job3id
|
par_show_limits Execution of will continue now, and it will try to read its input
|
||||||
par_resume_k job0id
|
par_show_limits and run commands; if this is not what you wanted to happen, please
|
||||||
par_resume_k job5id
|
par_show_limits press CTRL-D or CTRL-C
|
||||||
par_resume_k try 2 = nothing
|
par_show_limits bar
|
||||||
par_resume_k two extra
|
par_show_limits car
|
||||||
par_resume_k job6id
|
par_show_limits far
|
||||||
par_resume_k job7id
|
par_show_limits Maximal size of command: 131xxx
|
||||||
par_rpl_repeats ### Test {.} does not repeat more than {}
|
par_show_limits Maximal used size of command: 100
|
||||||
par_rpl_repeats a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
|
par_show_limits
|
||||||
par_rpl_repeats a7.gifb7c7 a8.gifb8c8 a9.gifb9c9 a10.gifb10c10 a11.gifb11c11 a12.gifb12c12
|
par_show_limits Execution of will continue now, and it will try to read its input
|
||||||
par_rpl_repeats a13.gifb13c13 a14.gifb14c14 a15.gifb15c15
|
par_show_limits and run commands; if this is not what you wanted to happen, please
|
||||||
par_rpl_repeats a1.gif 2.gif 3.gif 4.gif 5.gif 6.gif 7.gifb1 2 3 4 5 6 7c1 2 3 4 5 6 7
|
par_show_limits press CTRL-D or CTRL-C
|
||||||
par_rpl_repeats a8.gif 9.gif 10.gif 11.gif 12.gif 13.gifb8 9 10 11 12 13c8 9 10 11 12 13
|
par_show_limits bar car far
|
||||||
par_rpl_repeats a14.gif 15.gifb14 15c14 15
|
par_show_limits ### BUG: empty lines with --show-limit
|
||||||
|
par_show_limits Maximal size of command: 131xxx
|
||||||
|
par_show_limits Maximal used size of command: 131xxx
|
||||||
|
par_show_limits
|
||||||
|
par_show_limits Execution of will continue now, and it will try to read its input
|
||||||
|
par_show_limits and run commands; if this is not what you wanted to happen, please
|
||||||
|
par_show_limits press CTRL-D or CTRL-C
|
||||||
par_slow_args_generation ### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834
|
par_slow_args_generation ### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834
|
||||||
par_slow_args_generation 1
|
par_slow_args_generation 1
|
||||||
par_slow_args_generation 2
|
par_slow_args_generation 2
|
||||||
par_slow_args_generation 3
|
par_slow_args_generation 3
|
||||||
par_sqlandworker_uninstalled_dbd bug #56096: dbi-csv no such column
|
|
||||||
par_sqlandworker_uninstalled_dbd parallel: Error: CSV not supported. Are you missing a perl DBD::CSV module?
|
|
||||||
par_sqlandworker_uninstalled_dbd works
|
|
||||||
par_sqlworker_hostname bug #50901: --sqlworker should use hostname in the joblog instead of :
|
par_sqlworker_hostname bug #50901: --sqlworker should use hostname in the joblog instead of :
|
||||||
par_sqlworker_hostname 1
|
par_sqlworker_hostname 1
|
||||||
par_sqlworker_hostname 2
|
par_sqlworker_hostname 2
|
||||||
|
@ -415,6 +351,10 @@ par_test_X_with_multiple_source b-b f-f
|
||||||
par_test_X_with_multiple_source c-c d-d
|
par_test_X_with_multiple_source c-c d-d
|
||||||
par_test_X_with_multiple_source c-c e-e
|
par_test_X_with_multiple_source c-c e-e
|
||||||
par_test_X_with_multiple_source c-c f-f
|
par_test_X_with_multiple_source c-c f-f
|
||||||
|
par_test_delimiter ### Test : as delimiter. This can be confusing for uptime ie. --load
|
||||||
|
par_test_delimiter a
|
||||||
|
par_test_delimiter b
|
||||||
|
par_test_delimiter c
|
||||||
par_totaljob_repl {##} bug #45841: Replacement string for total no of jobs
|
par_totaljob_repl {##} bug #45841: Replacement string for total no of jobs
|
||||||
par_totaljob_repl 10
|
par_totaljob_repl 10
|
||||||
par_totaljob_repl 10
|
par_totaljob_repl 10
|
||||||
|
|
|
@ -16,6 +16,7 @@ par_filename_colon remote-:.:
|
||||||
par_filename_colon content-of-:
|
par_filename_colon content-of-:
|
||||||
par_files_nonall ### bug #40002: --files and --nonall seem not to work together:
|
par_files_nonall ### bug #40002: --files and --nonall seem not to work together:
|
||||||
par_files_nonall 1
|
par_files_nonall 1
|
||||||
|
par_hgrp_agrp ### Test --hgrp {hgrp} {agrp}
|
||||||
par_joblog_nonall ### bug #40001: --joblog and --nonall seem not to work together:
|
par_joblog_nonall ### bug #40001: --joblog and --nonall seem not to work together:
|
||||||
par_joblog_nonall 3
|
par_joblog_nonall 3
|
||||||
par_onall_transfer ### bug #46519: --onall ignores --transfer
|
par_onall_transfer ### bug #46519: --onall ignores --transfer
|
||||||
|
|
|
@ -4,8 +4,6 @@ par_export_functions_csh OK
|
||||||
par_header_in_return ### bug #45907: --header : + --return {header}
|
par_header_in_return ### bug #45907: --header : + --return {header}
|
||||||
par_header_in_return returnfile45907
|
par_header_in_return returnfile45907
|
||||||
par_hgrp_rpl ### Implement {hgrp} replacement string
|
par_hgrp_rpl ### Implement {hgrp} replacement string
|
||||||
par_hgrp_rpl bash@lo b
|
|
||||||
par_hgrp_rpl csh@lo c
|
|
||||||
par_hostgroup_only_on_args ### Auto add hostgroup if given on on argument
|
par_hostgroup_only_on_args ### Auto add hostgroup if given on on argument
|
||||||
par_hostgroup_only_on_args parallel: Warning: Adding hostgroups: sh@lo
|
par_hostgroup_only_on_args parallel: Warning: Adding hostgroups: sh@lo
|
||||||
par_hostgroup_only_on_args sh
|
par_hostgroup_only_on_args sh
|
||||||
|
|
|
@ -2110,10 +2110,37 @@ par_bash_environment_too_big env_parallel: Error: env_parallel --record-env
|
||||||
par_bash_environment_too_big env_parallel: Error: And then use '--env _'
|
par_bash_environment_too_big env_parallel: Error: And then use '--env _'
|
||||||
par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel
|
par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel
|
||||||
par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote_remote
|
par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote_remote
|
||||||
par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc
|
par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /bin/perl: Argument list too long
|
||||||
|
par_bash_environment_too_big env_parallel: Error: Your environment is too big.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches:
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set
|
||||||
|
par_bash_environment_too_big env_parallel: Error: variables or define functions.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once:
|
||||||
|
par_bash_environment_too_big env_parallel: Error: env_parallel --record-env
|
||||||
|
par_bash_environment_too_big env_parallel: Error: And then use '--env _'
|
||||||
|
par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel
|
||||||
par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_remote
|
par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_remote
|
||||||
par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_quote
|
par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /bin/perl: Argument list too long
|
||||||
par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_quote_remote
|
par_bash_environment_too_big env_parallel: Error: Your environment is too big.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches:
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set
|
||||||
|
par_bash_environment_too_big env_parallel: Error: variables or define functions.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once:
|
||||||
|
par_bash_environment_too_big env_parallel: Error: env_parallel --record-env
|
||||||
|
par_bash_environment_too_big env_parallel: Error: And then use '--env _'
|
||||||
|
par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel
|
||||||
|
par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /bin/perl: Argument list too long
|
||||||
|
par_bash_environment_too_big env_parallel: Error: Your environment is too big.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches:
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set
|
||||||
|
par_bash_environment_too_big env_parallel: Error: variables or define functions.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy.
|
||||||
|
par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once:
|
||||||
|
par_bash_environment_too_big env_parallel: Error: env_parallel --record-env
|
||||||
|
par_bash_environment_too_big env_parallel: Error: And then use '--env _'
|
||||||
|
par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel
|
||||||
par_bash_env_parallel_session ### Test env_parallel --session / --end-session
|
par_bash_env_parallel_session ### Test env_parallel --session / --end-session
|
||||||
par_bash_env_parallel_session ### level0 should be hidden, level1 should be transferred
|
par_bash_env_parallel_session ### level0 should be hidden, level1 should be transferred
|
||||||
par_bash_env_parallel_session
|
par_bash_env_parallel_session
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
par_load_blocks ### Test if --load blocks. Bug.
|
|
||||||
par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 -
|
|
||||||
par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 -
|
|
||||||
par_load_from_PARALLEL ### Test reading load from PARALLEL
|
|
||||||
par_load_from_PARALLEL 8a7095c1c23bfadc311fe6b16d950582 -
|
|
||||||
par_load_from_PARALLEL 8a7095c1c23bfadc311fe6b16d950582 -
|
|
||||||
par_squared 100 100 292
|
|
||||||
par_squared 8a7095c1c23bfadc311fe6b16d950582 -
|
|
||||||
par_squared 81 81 234
|
|
||||||
par_squared c88e1757ddc619efd9ee507a7702b53c -
|
|
||||||
par_squared 64 64 183
|
|
||||||
par_squared f78c5b3d13146c60c9b586f51d05a4ae -
|
|
||||||
par_squared 49 49 138
|
|
||||||
par_squared 2af8be7306df18164a68e30e427217e0 -
|
|
||||||
par_squared 36 36 99
|
|
||||||
par_squared 5ee21398ecde0f3ea9b6093fbaf5a3c2 -
|
|
||||||
par_squared 25 25 66
|
|
||||||
par_squared 17e914b4a407dccd370c13173865deb1 -
|
|
||||||
par_squared 16 16 39
|
|
||||||
par_squared 6f5db0373227d2281dc26b1bf63b4027 -
|
|
||||||
par_squared 9 9 18
|
|
||||||
par_squared fa364205fcf6665c6f3e6cb868f65fd6 -
|
|
||||||
par_squared 4 4 8
|
|
||||||
par_squared 1c0f34fee7176dc367bead8f96cba6bc -
|
|
||||||
par_test_delimiter ### Test : as delimiter. This can be confusing for uptime ie. --load
|
|
||||||
par_test_delimiter a
|
|
||||||
par_test_delimiter b
|
|
||||||
par_test_delimiter c
|
|
|
@ -1374,7 +1374,7 @@ This helps funding further development; AND IT WON'T COST YOU A CENT.
|
||||||
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
|
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
|
||||||
parallel --version
|
parallel --version
|
||||||
GNU parallel VERSION
|
GNU parallel VERSION
|
||||||
Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software
|
Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software
|
||||||
Foundation, Inc.
|
Foundation, Inc.
|
||||||
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
|
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
|
||||||
This is free software: you are free to change and redistribute it.
|
This is free software: you are free to change and redistribute it.
|
||||||
|
@ -1424,4 +1424,4 @@ C
|
||||||
echo A
|
echo A
|
||||||
echo B
|
echo B
|
||||||
echo C
|
echo C
|
||||||
8
|
7
|
||||||
|
|
Loading…
Reference in a new issue