mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-28 08:57:56 +00:00
Released as 20220122 ('20 years')
This commit is contained in:
parent
16e6fb9a65
commit
be43ddb832
23
NEWS
23
NEWS
|
@ -1,3 +1,26 @@
|
||||||
|
20220122
|
||||||
|
|
||||||
|
New in this release:
|
||||||
|
|
||||||
|
* GNU Parallel turned 20 on the 2022-01-06
|
||||||
|
https://www.gnu.org/software/parallel/20th-birthday.html
|
||||||
|
|
||||||
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
|
News about GNU Parallel:
|
||||||
|
|
||||||
|
* Save Time with Modern Search Techniques
|
||||||
|
https://www.eventbrite.com/e/ohio-information-security-forum-january-2022-monthly-meeting-tickets-240632737997
|
||||||
|
|
||||||
|
* Bash "Fail immediately if any fails"
|
||||||
|
https://morioh.com/p/a01b883dc57c
|
||||||
|
|
||||||
|
* Re-encoding the EmacsConf videos with FFmpeg and GNU Parallel
|
||||||
|
https://sachachua.com/blog/2021/12/re-encoding-the-emacsconf-videos-with-ffmpeg-and-gnu-parallel/
|
||||||
|
|
||||||
|
* Bash 平行 https://learntutorials.net/ja/bash/topic/10778/%E5%B9%B3%E8%A1%8C
|
||||||
|
|
||||||
|
|
||||||
20211222
|
20211222
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
|
24
README
24
README
|
@ -57,11 +57,11 @@ document.
|
||||||
|
|
||||||
Full installation of GNU Parallel is as simple as:
|
Full installation of GNU Parallel is as simple as:
|
||||||
|
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20211222.tar.bz2
|
wget https://ftpmirror.gnu.org/parallel/parallel-20220122.tar.bz2
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20211222.tar.bz2.sig
|
wget https://ftpmirror.gnu.org/parallel/parallel-20220122.tar.bz2.sig
|
||||||
gpg parallel-20211222.tar.bz2.sig
|
gpg parallel-20220122.tar.bz2.sig
|
||||||
bzip2 -dc parallel-20211222.tar.bz2 | tar xvf -
|
bzip2 -dc parallel-20220122.tar.bz2 | tar xvf -
|
||||||
cd parallel-20211222
|
cd parallel-20220122
|
||||||
./configure && make && sudo make install
|
./configure && make && sudo make install
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,11 +70,11 @@ Full installation of GNU Parallel is as simple as:
|
||||||
If you are not root you can add ~/bin to your path and install in
|
If you are not root you can add ~/bin to your path and install in
|
||||||
~/bin and ~/share:
|
~/bin and ~/share:
|
||||||
|
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20211222.tar.bz2
|
wget https://ftpmirror.gnu.org/parallel/parallel-20220122.tar.bz2
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20211222.tar.bz2.sig
|
wget https://ftpmirror.gnu.org/parallel/parallel-20220122.tar.bz2.sig
|
||||||
gpg parallel-20211222.tar.bz2.sig
|
gpg parallel-20220122.tar.bz2.sig
|
||||||
bzip2 -dc parallel-20211222.tar.bz2 | tar xvf -
|
bzip2 -dc parallel-20220122.tar.bz2 | tar xvf -
|
||||||
cd parallel-20211222
|
cd parallel-20220122
|
||||||
./configure --prefix=$HOME && make && make install
|
./configure --prefix=$HOME && make && make install
|
||||||
|
|
||||||
Or if your system lacks 'make' you can simply copy src/parallel
|
Or if your system lacks 'make' you can simply copy src/parallel
|
||||||
|
@ -122,8 +122,8 @@ will love you for it.
|
||||||
When using programs that use GNU Parallel to process data for
|
When using programs that use GNU Parallel to process data for
|
||||||
publication please cite:
|
publication please cite:
|
||||||
|
|
||||||
Tange, O. (2021, December 22). GNU Parallel 20211222 ('Støjberg').
|
Tange, O. (2022, January 22). GNU Parallel 20220122 ('20 years').
|
||||||
Zenodo. https://doi.org/10.5281/zenodo.5797028
|
Zenodo. https://doi.org/10.5281/zenodo.5893336
|
||||||
|
|
||||||
Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
|
Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
|
||||||
2016, 2017, 2018, 2019, 2020, 2021 Ole Tange, http://ole.tange.dk and
|
2016, 2017, 2018, 2019, 2020, 2021 Ole Tange, http://ole.tange.dk and
|
||||||
|
|
20
configure
vendored
20
configure
vendored
|
@ -1,6 +1,6 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for parallel 20211222.
|
# Generated by GNU Autoconf 2.69 for parallel 20220122.
|
||||||
#
|
#
|
||||||
# Report bugs to <bug-parallel@gnu.org>.
|
# Report bugs to <bug-parallel@gnu.org>.
|
||||||
#
|
#
|
||||||
|
@ -579,8 +579,8 @@ MAKEFLAGS=
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='parallel'
|
PACKAGE_NAME='parallel'
|
||||||
PACKAGE_TARNAME='parallel'
|
PACKAGE_TARNAME='parallel'
|
||||||
PACKAGE_VERSION='20211222'
|
PACKAGE_VERSION='20220122'
|
||||||
PACKAGE_STRING='parallel 20211222'
|
PACKAGE_STRING='parallel 20220122'
|
||||||
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
|
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
|
@ -1214,7 +1214,7 @@ if test "$ac_init_help" = "long"; then
|
||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures parallel 20211222 to adapt to many kinds of systems.
|
\`configure' configures parallel 20220122 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
|
@ -1281,7 +1281,7 @@ fi
|
||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of parallel 20211222:";;
|
short | recursive ) echo "Configuration of parallel 20220122:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
|
@ -1357,7 +1357,7 @@ fi
|
||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
parallel configure 20211222
|
parallel configure 20220122
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF
|
||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by parallel $as_me 20211222, which was
|
It was created by parallel $as_me 20220122, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
|
@ -2237,7 +2237,7 @@ fi
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='parallel'
|
PACKAGE='parallel'
|
||||||
VERSION='20211222'
|
VERSION='20220122'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
@ -2880,7 +2880,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by parallel $as_me 20211222, which was
|
This file was extended by parallel $as_me 20220122, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
|
@ -2942,7 +2942,7 @@ _ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
parallel config.status 20211222
|
parallel config.status 20220122
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
AC_INIT([parallel],[20211222],[bug-parallel@gnu.org])
|
AC_INIT([parallel],[20220122],[bug-parallel@gnu.org])
|
||||||
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
|
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
|
|
|
@ -35,6 +35,10 @@ Therefore the notice is not adding a term that would require citation
|
||||||
as mentioned on:
|
as mentioned on:
|
||||||
https://www.gnu.org/licenses/gpl-faq.en.html#RequireCitation
|
https://www.gnu.org/licenses/gpl-faq.en.html#RequireCitation
|
||||||
|
|
||||||
|
The link only addresses the license and copyright law. It does not
|
||||||
|
address academic tradition, and the citation notice only refers to
|
||||||
|
academic tradition.
|
||||||
|
|
||||||
If you disagree with Richard M. Stallman's interpretation and feel the
|
If you disagree with Richard M. Stallman's interpretation and feel the
|
||||||
citation notice does not adhere to GPLv3, you should treat the
|
citation notice does not adhere to GPLv3, you should treat the
|
||||||
software as if it is not available under GPLv3. And since GPLv3 is the
|
software as if it is not available under GPLv3. And since GPLv3 is the
|
||||||
|
@ -106,7 +110,7 @@ do not have to cite GNU Parallel. If it is too much work replacing the
|
||||||
use of GNU Parallel, then it is a good indication that the
|
use of GNU Parallel, then it is a good indication that the
|
||||||
contribution to the research is big enough to warrant a citation.
|
contribution to the research is big enough to warrant a citation.
|
||||||
|
|
||||||
The citation is also needed for reproducibility. Let us assume a bug
|
The citation is also needed for reproducibility: Let us assume a bug
|
||||||
in GNU Parallel skews the results. People replicating the research
|
in GNU Parallel skews the results. People replicating the research
|
||||||
needs to have the information, so they can replicate the (possibly
|
needs to have the information, so they can replicate the (possibly
|
||||||
wrong) results.
|
wrong) results.
|
||||||
|
@ -132,7 +136,7 @@ refer to peer-reviewed articles - others do not:
|
||||||
* https://github.com/UnixJunkie/PAR/blob/master/README
|
* https://github.com/UnixJunkie/PAR/blob/master/README
|
||||||
|
|
||||||
The CITATION.cff file format was designed to make it easy to cite
|
The CITATION.cff file format was designed to make it easy to cite
|
||||||
software, and
|
software, and used by a wide range of tools.
|
||||||
|
|
||||||
|
|
||||||
== I do not like the notice. Can I fork GNU Parallel and remove it? ==
|
== I do not like the notice. Can I fork GNU Parallel and remove it? ==
|
||||||
|
@ -249,14 +253,18 @@ should probably not be using it anyway.
|
||||||
|
|
||||||
If you care so little about GNU Parallel that you do not want to help
|
If you care so little about GNU Parallel that you do not want to help
|
||||||
finance development, then you should contemplate whether GNU Parallel
|
finance development, then you should contemplate whether GNU Parallel
|
||||||
is really the right tool for you.
|
is really the right tool for you. Personally I would prefer if you
|
||||||
|
simply ignored GNU Parallel and treated it as if it did not exist.
|
||||||
|
|
||||||
It is, however, doable (e.g. by forking and changing the code; see
|
But if you really insist on not helping, it is possible (e.g. by
|
||||||
above). But you will be going against the wishes of the author,
|
forking and changing the code; see above). But you will be going
|
||||||
because you make it harder to make a living, thus you will be making
|
against the wishes of the author, because you make it harder to make a
|
||||||
it harder to justify producing more free software. If you like GNU
|
living, thus you will be making it harder to justify producing more
|
||||||
Parallel and want to see it maintained in the future, then this is not
|
free software; not only for me, but also for others who see you
|
||||||
the way to go.
|
actively working against the author's wishes.
|
||||||
|
|
||||||
|
If you like GNU Parallel and want to see it maintained in the future,
|
||||||
|
then this is not the way to go.
|
||||||
|
|
||||||
Maybe it is you Nadia Eghbal addresses in
|
Maybe it is you Nadia Eghbal addresses in
|
||||||
https://www.slideshare.net/NadiaEghbal/consider-the-maintainer:
|
https://www.slideshare.net/NadiaEghbal/consider-the-maintainer:
|
||||||
|
|
13
doc/haikus
13
doc/haikus
|
@ -4,6 +4,14 @@
|
||||||
|
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
|
Igual @GnuParallel te puede echar una mano. Te permite pensar y
|
||||||
|
programar en serie pero ejecutar en paralelo usando cores de una
|
||||||
|
máquina o máquinas remotas. Una vez que lo has usando te lamentas no
|
||||||
|
haberlo conocido antes :)
|
||||||
|
-- Juan Sierra Pons @juasiepo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
If I could only keep 5 GNU utils, parallel would make it to the list
|
If I could only keep 5 GNU utils, parallel would make it to the list
|
||||||
:)
|
:)
|
||||||
-- 5heikki@reddit
|
-- 5heikki@reddit
|
||||||
|
@ -154,7 +162,10 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html
|
||||||
|
|
||||||
=== Used ===
|
=== Used ===
|
||||||
|
|
||||||
My favorite man page is that of GNU parallel.
|
I'm going to make GNU parallel my new superpower this year.
|
||||||
|
-- Christian G. Warden @xn@twitter
|
||||||
|
|
||||||
|
My favorite man page is that of GNU parallel.
|
||||||
-- Jeroen Janssens @jeroenhjanssens@twitter
|
-- Jeroen Janssens @jeroenhjanssens@twitter
|
||||||
|
|
||||||
GNU parallel 便利すぎ
|
GNU parallel 便利すぎ
|
||||||
|
|
|
@ -254,27 +254,32 @@ 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 20220122 ('Kazakhstan/James Webb/Tutu/Pillar of Shame<<>>') released <<[stable]>>
|
Subject: GNU Parallel 20220122 ('20 years') released [stable]
|
||||||
|
|
||||||
GNU Parallel 20220122 ('<<>>') <<[stable]>> has been released. It is available for download at: lbry://@GnuParallel:4
|
GNU Parallel 20220122 ('20 years') [stable] has been released. It is available for download at: lbry://@GnuParallel:4
|
||||||
|
|
||||||
<<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.
|
||||||
|
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
<<>>
|
I'm going to make GNU parallel my new superpower this year.
|
||||||
|
-- Christian G. Warden @xn@twitter
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
|
||||||
|
* GNU Parallel turned 20 on the 2022-01-06 https://www.gnu.org/software/parallel/20th-birthday.html
|
||||||
|
|
||||||
* Bug fixes and man page updates.
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
News about GNU Parallel:
|
News about GNU Parallel:
|
||||||
|
|
||||||
* https://morioh.com/p/a01b883dc57c
|
* Save Time with Modern Search Techniques https://www.eventbrite.com/e/ohio-information-security-forum-january-2022-monthly-meeting-tickets-240632737997
|
||||||
|
|
||||||
https://sachachua.com/blog/2021/12/re-encoding-the-emacsconf-videos-with-ffmpeg-and-gnu-parallel/
|
* Bash "Fail immediately if any fails" https://morioh.com/p/a01b883dc57c
|
||||||
https://learntutorials.net/ja/bash/topic/10778/%E5%B9%B3%E8%A1%8C
|
|
||||||
<<>>
|
* Re-encoding the EmacsConf videos with FFmpeg and GNU Parallel https://sachachua.com/blog/2021/12/re-encoding-the-emacsconf-videos-with-ffmpeg-and-gnu-parallel/
|
||||||
|
|
||||||
|
* Bash 平行 https://learntutorials.net/ja/bash/topic/10778/%E5%B9%B3%E8%A1%8C
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<directory name="parallel" rev="317" vrev="1" srcmd5="e846e607bc463efd4dcef96a779f85a1">
|
<directory name="parallel" rev="318" vrev="1" srcmd5="16362175e423388a2d90f50e327a5f86">
|
||||||
<entry name="PKGBUILD" md5="b96ad8edb325e80e5aba8b32d5254f78" size="936" mtime="1640129207" />
|
<entry name="PKGBUILD" md5="13671e63cef1b613f22bc2ba917472bb" size="936" mtime="1642866613" />
|
||||||
<entry name="parallel-20211222.tar.bz2" md5="b309c72c1397097ef7a70e1389d5f747" size="2267915" mtime="1640129208" />
|
<entry name="parallel-20220122.tar.bz2" md5="b329b388156cffcc7532177563c18010" size="2287354" mtime="1642866614" />
|
||||||
<entry name="parallel.spec" md5="d52fefe84eec835ff08d7e3643f74e0b" size="5630" mtime="1640129208" />
|
<entry name="parallel.spec" md5="db6dadee7fa550909ed6ccf044bb6a1e" size="5630" mtime="1642866614" />
|
||||||
<entry name="parallel_20211222.dsc" md5="4438eb9e04d278e2d900438461ac0139" size="556" mtime="1640129208" />
|
<entry name="parallel_20220122.dsc" md5="2674e2b3a719e15e10dc420b3f6dc358" size="556" mtime="1642866614" />
|
||||||
<entry name="parallel_20211222.tar.gz" md5="75f015315f2b351a62f31c9b59795f41" size="2512216" mtime="1640129208" />
|
<entry name="parallel_20220122.tar.gz" md5="3dc0cc653208ab5272d75d7f9189e481" size="2526577" mtime="1642866614" />
|
||||||
</directory>
|
</directory>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Summary: Shell tool for executing jobs in parallel
|
Summary: Shell tool for executing jobs in parallel
|
||||||
Name: parallel
|
Name: parallel
|
||||||
Version: 20211222
|
Version: 20220122
|
||||||
Release: 1.3
|
Release: 1.3
|
||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
Group: Productivity/File utilities
|
Group: Productivity/File utilities
|
||||||
|
|
|
@ -79,14 +79,15 @@ done
|
||||||
|
|
||||||
|
|
||||||
cat <<'_EOS'
|
cat <<'_EOS'
|
||||||
env_parallel only works if it is a function. Do the below and restart your shell.
|
env_parallel only works if it is a function.
|
||||||
|
|
||||||
|
Do this and restart your shell:
|
||||||
|
|
||||||
bash: Put this in $HOME/.bashrc: . `which env_parallel.bash`
|
bash: Put this in $HOME/.bashrc: . `which env_parallel.bash`
|
||||||
E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc
|
E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc
|
||||||
Supports: variables, aliases, functions, arrays
|
Supports: variables, aliases, functions, arrays
|
||||||
|
|
||||||
fish: Put this in $HOME/.config/fish/config.fish:
|
fish: Put this in $HOME/.config/fish/config.fish: . (which env_parallel.fish)
|
||||||
. (which env_parallel.fish)
|
|
||||||
E.g. by doing:
|
E.g. by doing:
|
||||||
echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish
|
echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish
|
||||||
Supports: variables, aliases, functions, arrays
|
Supports: variables, aliases, functions, arrays
|
||||||
|
|
|
@ -385,7 +385,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20211222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220122 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 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>"
|
||||||
|
|
|
@ -62,8 +62,9 @@ env_parallel() {
|
||||||
typeset -p "$@"
|
typeset -p "$@"
|
||||||
}
|
}
|
||||||
_ignore_HARDCODED() {
|
_ignore_HARDCODED() {
|
||||||
# These names cannot be detected
|
# Copying $RANDOM will cause it not to be random
|
||||||
echo '(_|TIMEOUT|GROUPS|FUNCNAME|DIRSTACK|PIPESTATUS|USERNAME|BASHPID|BASH_[A-Z_]+)'
|
# The rest cannot be detected as read-only
|
||||||
|
echo '(RANDOM|_|TIMEOUT|GROUPS|FUNCNAME|DIRSTACK|PIPESTATUS|USERNAME|BASHPID|BASH_[A-Z_]+)'
|
||||||
}
|
}
|
||||||
_ignore_READONLY() {
|
_ignore_READONLY() {
|
||||||
# shellcheck disable=SC1078,SC1079,SC2026
|
# shellcheck disable=SC1078,SC1079,SC2026
|
||||||
|
@ -384,7 +385,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20211222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220122 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 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>"
|
||||||
|
|
|
@ -385,7 +385,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20211222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220122 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 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>"
|
||||||
|
|
|
@ -363,7 +363,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20211222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220122 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 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>"
|
||||||
|
|
|
@ -365,7 +365,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20211222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220122 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 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>"
|
||||||
|
|
|
@ -390,7 +390,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20211222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220122 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 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>"
|
||||||
|
|
|
@ -355,7 +355,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20211222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220122 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 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>"
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
$Global::progname="niceload";
|
$Global::progname="niceload";
|
||||||
$Global::version = 20211222;
|
$Global::version = 20220122;
|
||||||
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) {
|
||||||
|
|
22
src/parallel
22
src/parallel
|
@ -2296,7 +2296,7 @@ sub check_invalid_option_combinations() {
|
||||||
|
|
||||||
sub init_globals() {
|
sub init_globals() {
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20211222;
|
$Global::version = 20220122;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$::name = "GNU Parallel";
|
$::name = "GNU Parallel";
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
|
@ -5114,8 +5114,8 @@ sub usage() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
" Tange, O. (2021, December 22). GNU Parallel 20211222 ('Støjberg').",
|
" Tange, O. (2022, January 22). GNU Parallel 20220122 ('20 years').",
|
||||||
" Zenodo. https://doi.org/10.5281/zenodo.5797028",
|
" Zenodo. https://doi.org/10.5281/zenodo.5893336",
|
||||||
"",
|
"",
|
||||||
# Before changing these lines, please read
|
# Before changing these lines, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
||||||
|
@ -5147,8 +5147,8 @@ sub citation_notice() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
" Tange, O. (2021, December 22). GNU Parallel 20211222 ('Støjberg').",
|
" Tange, O. (2022, January 22). GNU Parallel 20220122 ('20 years').",
|
||||||
" Zenodo. https://doi.org/10.5281/zenodo.5797028",
|
" Zenodo. https://doi.org/10.5281/zenodo.5893336",
|
||||||
"",
|
"",
|
||||||
# Before changing these line, please read
|
# Before changing these line, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and
|
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and
|
||||||
|
@ -5273,20 +5273,20 @@ sub citation() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
"\@software{tange_2021_5797028,",
|
"\@software{tange_2022_5893336,",
|
||||||
" author = {Tange, Ole},",
|
" author = {Tange, Ole},",
|
||||||
" title = {GNU Parallel 20211222 ('Støjberg')},",
|
" title = {GNU Parallel 20220122 ('20 years')},",
|
||||||
" month = Dec,",
|
" month = Jan,",
|
||||||
" year = 2021,",
|
" year = 2021,",
|
||||||
" note = {{GNU Parallel is a general parallelizer to run",
|
" note = {{GNU Parallel is a general parallelizer to run",
|
||||||
" multiple serial command line programs in parallel",
|
" multiple serial command line programs in parallel",
|
||||||
" without changing them.}},",
|
" without changing them.}},",
|
||||||
" publisher = {Zenodo},",
|
" publisher = {Zenodo},",
|
||||||
" doi = {10.5281/zenodo.5797028},",
|
" doi = {10.5281/zenodo.5893336},",
|
||||||
" url = {https://doi.org/10.5281/zenodo.5797028}",
|
" url = {https://doi.org/10.5281/zenodo.5893336}",
|
||||||
"}",
|
"}",
|
||||||
"",
|
"",
|
||||||
"(Feel free to use \\nocite{tange_2021_5797028})",
|
"(Feel free to use \\nocite{tange_2022_5893336})",
|
||||||
"",
|
"",
|
||||||
# Before changing these lines, please read
|
# Before changing these lines, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and
|
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and
|
||||||
|
|
102
src/parallel.pod
102
src/parallel.pod
|
@ -778,6 +778,10 @@ When used with B<--pipe> only pass full CSV-records.
|
||||||
|
|
||||||
Color tag.
|
Color tag.
|
||||||
|
|
||||||
|
If the values look very similar looking at the output it can be hard
|
||||||
|
to tell when a new value is used. B<--ctag> gives each value a random
|
||||||
|
color.
|
||||||
|
|
||||||
See also: B<--tag>
|
See also: B<--tag>
|
||||||
|
|
||||||
|
|
||||||
|
@ -785,7 +789,7 @@ See also: B<--tag>
|
||||||
|
|
||||||
Color tagstring.
|
Color tagstring.
|
||||||
|
|
||||||
See also: B<--tagstring>
|
See also: B<--ctag> B<--tagstring>
|
||||||
|
|
||||||
|
|
||||||
=item B<--delay> I<mytime>
|
=item B<--delay> I<mytime>
|
||||||
|
@ -1453,12 +1457,14 @@ See also: B<--group> B<--ungroup>
|
||||||
|
|
||||||
=item B<--link>
|
=item B<--link>
|
||||||
|
|
||||||
Link input sources. Read multiple input sources like the command
|
Link input sources.
|
||||||
B<xapply>. If multiple input sources are given, one argument will be
|
|
||||||
read from each of the input sources. The arguments can be accessed in
|
Read multiple input sources like the command B<xapply>. If multiple
|
||||||
the command as B<{1}> .. B<{>I<n>B<}>, so B<{1}> will be a line from
|
input sources are given, one argument will be read from each of the
|
||||||
the first input source, and B<{6}> will refer to the line with the
|
input sources. The arguments can be accessed in the command as B<{1}>
|
||||||
same line number from the 6th input source.
|
.. B<{>I<n>B<}>, so B<{1}> will be a line from the first input source,
|
||||||
|
and B<{6}> will refer to the line with the same line number from the
|
||||||
|
6th input source.
|
||||||
|
|
||||||
Compare these two:
|
Compare these two:
|
||||||
|
|
||||||
|
@ -1470,7 +1476,7 @@ Arguments will be recycled if one input source has more arguments than the other
|
||||||
parallel --link echo {1} {2} {3} \
|
parallel --link echo {1} {2} {3} \
|
||||||
::: 1 2 ::: I II III ::: a b c d e f g
|
::: 1 2 ::: I II III ::: a b c d e f g
|
||||||
|
|
||||||
See also B<--header>, B<:::+>, B<::::+>.
|
See also: B<--header> B<:::+> B<::::+>
|
||||||
|
|
||||||
|
|
||||||
=item B<--load> I<max-load>
|
=item B<--load> I<max-load>
|
||||||
|
@ -1522,7 +1528,7 @@ put back on the queue to be run later.
|
||||||
B<--retries> must be set to determine how many times GNU B<parallel>
|
B<--retries> must be set to determine how many times GNU B<parallel>
|
||||||
should retry a given job.
|
should retry a given job.
|
||||||
|
|
||||||
See also: B<--termseq>, B<--retries>, B<--memsuspend>
|
See also: B<--termseq> B<--retries> B<--memsuspend>
|
||||||
|
|
||||||
|
|
||||||
=item B<--memsuspend> I<size>
|
=item B<--memsuspend> I<size>
|
||||||
|
@ -1669,8 +1675,8 @@ The data can be spread between the jobs in specific ways using
|
||||||
B<--round-robin>, B<--bin>, B<--shard>, B<--group-by>. See the
|
B<--round-robin>, B<--bin>, B<--shard>, B<--group-by>. See the
|
||||||
section: SPREADING BLOCKS OF DATA
|
section: SPREADING BLOCKS OF DATA
|
||||||
|
|
||||||
See also: B<--block>, B<--blocktimeout>, B<--recstart>, B<--recend>,
|
See also: B<--block> B<--blocktimeout> B<--recstart> B<--recend>
|
||||||
B<--fifo>, B<--cat>, B<--pipepart>, B<-N>, B<-L>.
|
B<--fifo> B<--cat> B<--pipepart> B<-N> B<-L>
|
||||||
|
|
||||||
|
|
||||||
=item B<--pipepart>
|
=item B<--pipepart>
|
||||||
|
@ -1699,7 +1705,7 @@ where records end.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
See also: <--pipe>.
|
See also: <--pipe>
|
||||||
|
|
||||||
|
|
||||||
=item B<--plain>
|
=item B<--plain>
|
||||||
|
@ -1767,7 +1773,7 @@ everything at startup.
|
||||||
By sending GNU B<parallel> SIGUSR2 you can toggle turning on/off
|
By sending GNU B<parallel> SIGUSR2 you can toggle turning on/off
|
||||||
B<--progress> on a running GNU B<parallel> process.
|
B<--progress> on a running GNU B<parallel> process.
|
||||||
|
|
||||||
See also: B<--eta> and B<--bar>.
|
See also: B<--eta> B<--bar>
|
||||||
|
|
||||||
|
|
||||||
=item B<--max-line-length-allowed>
|
=item B<--max-line-length-allowed>
|
||||||
|
@ -2263,32 +2269,48 @@ it possible to define your own replacement strings. GNU B<parallel>'s
|
||||||
--rpl '{%} 1 $_=$job->slot()'
|
--rpl '{%} 1 $_=$job->slot()'
|
||||||
--rpl '{/} s:.*/::'
|
--rpl '{/} s:.*/::'
|
||||||
--rpl '{//} $Global::use{"File::Basename"} ||=
|
--rpl '{//} $Global::use{"File::Basename"} ||=
|
||||||
eval "use File::Basename; 1;"; $_ = dirname($_);'
|
eval "use File::Basename; 1;"; $_ = dirname($_);'
|
||||||
--rpl '{/.} s:.*/::; s:\.[^/.]+$::;'
|
--rpl '{/.} s:.*/::; s:\.[^/.]+$::;'
|
||||||
--rpl '{.} s:\.[^/.]+$::'
|
--rpl '{.} s:\.[^/.]+$::'
|
||||||
|
|
||||||
The B<--plus> replacement strings are implemented as:
|
The B<--plus> replacement strings are implemented as:
|
||||||
|
|
||||||
--rpl '{+/} s:/[^/]*$::'
|
--rpl '{+/} s:/[^/]*$:: || s:.*$::'
|
||||||
--rpl '{+.} s:.*\.::'
|
--rpl '{+.} s:.*\.:: || s:.*$::'
|
||||||
--rpl '{+..} s:.*\.([^.]*\.):$1:'
|
--rpl '{+..} s:.*\.([^/.]+\.[^/.]+)$:$1: || s:.*$::'
|
||||||
--rpl '{+...} s:.*\.([^.]*\.[^.]*\.):$1:'
|
--rpl '{+...} s:.*\.([^/.]+\.[^/.]+\.[^/.]+)$:$1: || s:.*$::'
|
||||||
--rpl '{..} s:\.[^/.]+$::; s:\.[^/.]+$::'
|
--rpl '{..} s:\.[^/.]+\.[^/.]+$::'
|
||||||
--rpl '{...} s:\.[^/.]+$::; s:\.[^/.]+$::; s:\.[^/.]+$::'
|
--rpl '{...} s:\.[^/.]+\.[^/.]+\.[^/.]+$::'
|
||||||
--rpl '{/..} s:.*/::; s:\.[^/.]+$::; s:\.[^/.]+$::'
|
--rpl '{/..} s:.*/::; s:\.[^/.]+\.[^/.]+$::'
|
||||||
--rpl '{/...} s:.*/::;s:\.[^/.]+$::;s:\.[^/.]+$::;s:\.[^/.]+$::'
|
--rpl '{/...} s:.*/::; s:\.[^/.]+\.[^/.]+\.[^/.]+$::'
|
||||||
--rpl '{##} $_=total_jobs()'
|
--rpl '{choose_k}
|
||||||
--rpl '{:-(.+?)} $_ ||= $$1'
|
for $t (2..$#arg){ if($arg[$t-1] ge $arg[$t]) { skip() } }'
|
||||||
|
--rpl '{##} 1 $_=total_jobs()'
|
||||||
|
--rpl '{0%} 1 $f=1+int((log($Global::max_jobs_running||1)/
|
||||||
|
log(10))); $_=sprintf("%0${f}d",slot())'
|
||||||
|
--rpl '{0#} 1 $f=1+int((log(total_jobs())/log(10)));
|
||||||
|
$_=sprintf("%0${f}d",seq())'
|
||||||
|
|
||||||
|
--rpl '{:-([^}]+?)} $_ ||= $$1'
|
||||||
--rpl '{:(\d+?)} substr($_,0,$$1) = ""'
|
--rpl '{:(\d+?)} substr($_,0,$$1) = ""'
|
||||||
--rpl '{:(\d+?):(\d+?)} $_ = substr($_,$$1,$$2);'
|
--rpl '{:(\d+?):(\d+?)} $_ = substr($_,$$1,$$2);'
|
||||||
--rpl '{#([^#].*?)} s/^$$1//;'
|
--rpl '{#([^#}][^}]*?)} $nongreedy=::make_regexp_ungreedy($$1);
|
||||||
--rpl '{%(.+?)} s/$$1$//;'
|
s/^$nongreedy(.*)/$1/;'
|
||||||
--rpl '{/(.+?)/(.*?)} s/$$1/$$2/;'
|
--rpl '{##([^#}][^}]*?)} s/^$$1//;'
|
||||||
--rpl '{^(.+?)} s/^($$1)/uc($1)/e;'
|
--rpl '{%([^}]+?)} $nongreedy=::make_regexp_ungreedy($$1);
|
||||||
--rpl '{^^(.+?)} s/($$1)/uc($1)/eg;'
|
s/(.*)$nongreedy$/$1/;'
|
||||||
--rpl '{,(.+?)} s/^($$1)/lc($1)/e;'
|
--rpl '{%%([^}]+?)} s/$$1$//;'
|
||||||
--rpl '{,,(.+?)} s/($$1)/lc($1)/eg;'
|
--rpl '{/([^}]+?)/([^}]*?)} s/$$1/$$2/;'
|
||||||
|
--rpl '{^([^}]+?)} s/^($$1)/uc($1)/e;'
|
||||||
|
--rpl '{^^([^}]+?)} s/($$1)/uc($1)/eg;'
|
||||||
|
--rpl '{,([^}]+?)} s/^($$1)/lc($1)/e;'
|
||||||
|
--rpl '{,,([^}]+?)} s/($$1)/lc($1)/eg;'
|
||||||
|
|
||||||
|
--rpl '{slot} 1 $_="\${PARALLEL_JOBSLOT}";uq()'
|
||||||
|
--rpl '{host} 1 $_="\${PARALLEL_SSHHOST}";uq()'
|
||||||
|
--rpl '{sshlogin} 1 $_="\${PARALLEL_SSHLOGIN}";uq()'
|
||||||
|
--rpl '{hgrp} 1 $_="\${PARALLEL_HOSTGROUPS}";uq()'
|
||||||
|
--rpl '{agrp} 1 $_="\${PARALLEL_ARGHOSTGROUPS}";uq()'
|
||||||
|
|
||||||
If the user defined replacement string starts with '{' it can also be
|
If the user defined replacement string starts with '{' it can also be
|
||||||
used as a positional replacement string (like B<{2.}>).
|
used as a positional replacement string (like B<{2.}>).
|
||||||
|
@ -3381,8 +3403,8 @@ B<--env>:
|
||||||
parallel --env doubleit -S server doubleit ::: 1 2 3 ::: a b
|
parallel --env doubleit -S server doubleit ::: 1 2 3 ::: a b
|
||||||
|
|
||||||
If your environment (aliases, variables, and functions) is small you
|
If your environment (aliases, variables, and functions) is small you
|
||||||
can copy the full environment without having to B<export -f >
|
can copy the full environment without having to
|
||||||
anything. See B<env_parallel>.
|
B<export -f> anything. See B<env_parallel>.
|
||||||
|
|
||||||
|
|
||||||
=head2 EXAMPLE: Function tester
|
=head2 EXAMPLE: Function tester
|
||||||
|
@ -4407,6 +4429,20 @@ If not all hosts are accessible through TOR:
|
||||||
See more B<ssh> tricks on https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts
|
See more B<ssh> tricks on https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts
|
||||||
|
|
||||||
|
|
||||||
|
=head2 EXAMPLE: Use sshpass with ssh
|
||||||
|
|
||||||
|
If you cannot use passwordless login, you may be able to use B<sshpass>:
|
||||||
|
|
||||||
|
export SSHPASS=MyPa$$w0rd
|
||||||
|
seq 10 |
|
||||||
|
parallel -S '4/sshpass -e ssh user-with-password@server' echo
|
||||||
|
seq 10 |
|
||||||
|
parallel --ssh 'sshpass -e ssh' -S 4/user-with-password@server' echo
|
||||||
|
|
||||||
|
Currently the remote detection of CPU cores is incompatible with
|
||||||
|
B<sshpass> so use the '4/' syntax to tell the server has 4 cores.
|
||||||
|
|
||||||
|
|
||||||
=head2 EXAMPLE: Use outrun instead of ssh
|
=head2 EXAMPLE: Use outrun instead of ssh
|
||||||
|
|
||||||
B<outrun> lets you run a command on a remote server. B<outrun> sets up
|
B<outrun> lets you run a command on a remote server. B<outrun> sets up
|
||||||
|
|
|
@ -839,7 +839,7 @@ B<$PARALLEL_SHELL>.
|
||||||
|
|
||||||
If the command is a simple command with no redirection and setting of
|
If the command is a simple command with no redirection and setting of
|
||||||
variables, the command I<could> be run without spawning a
|
variables, the command I<could> be run without spawning a
|
||||||
shell. E.g. this simple B<grep> matching either 'ls ' or ' wc >> c':
|
shell. E.g. this simple B<grep> matching either 'ls ' or ' wc E<gt>E<gt> c':
|
||||||
|
|
||||||
parallel "grep -E 'ls | wc >> c' {}" ::: foo
|
parallel "grep -E 'ls | wc >> c' {}" ::: foo
|
||||||
|
|
||||||
|
@ -853,11 +853,11 @@ be spawned:
|
||||||
parallel "grep -E 'ls | wc >> c' {} | wc >> c" ::: foo
|
parallel "grep -E 'ls | wc >> c' {} | wc >> c" ::: foo
|
||||||
parallel "LANG=C grep -E 'ls | wc >> c' {}" ::: foo
|
parallel "LANG=C grep -E 'ls | wc >> c' {}" ::: foo
|
||||||
|
|
||||||
It is impossible to tell how B<| wc >>>B< c> should be interpreted
|
It is impossible to tell how B<| wc E<gt>E<gt> c> should be
|
||||||
without parsing the string (is the B<|> a pipe in shell or an
|
interpreted without parsing the string (is the B<|> a pipe in shell or
|
||||||
alternation in a B<grep> regexp? Is B<LANG=C> a command in B<csh> or
|
an alternation in a B<grep> regexp? Is B<LANG=C> a command in B<csh>
|
||||||
setting a variable in B<bash>? Is B<>>> redirection or part of a
|
or setting a variable in B<bash>? Is B<E<gt>E<gt>> redirection or part
|
||||||
regexp?).
|
of a regexp?).
|
||||||
|
|
||||||
On top of this, wrapper scripts will often require a shell to be
|
On top of this, wrapper scripts will often require a shell to be
|
||||||
spawned.
|
spawned.
|
||||||
|
|
|
@ -122,7 +122,7 @@ GetOptions(
|
||||||
"help" => \$opt::dummy,
|
"help" => \$opt::dummy,
|
||||||
) || exit(255);
|
) || exit(255);
|
||||||
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
||||||
$Global::version = 20211222;
|
$Global::version = 20220122;
|
||||||
if($opt::version) { version(); exit 0; }
|
if($opt::version) { version(); exit 0; }
|
||||||
@Global::sortoptions = grep { ! /^-D$/ }
|
@Global::sortoptions = grep { ! /^-D$/ }
|
||||||
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);
|
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);
|
||||||
|
|
2
src/sql
2
src/sql
|
@ -600,7 +600,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
||||||
exit ($err);
|
exit ($err);
|
||||||
|
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
$Global::version = 20211222;
|
$Global::version = 20220122;
|
||||||
$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
|
||||||
|
|
|
@ -99,7 +99,10 @@ install_oracle_client() {
|
||||||
fi
|
fi
|
||||||
perl -MCPAN -e 'install DBD::Oracle'
|
perl -MCPAN -e 'install DBD::Oracle'
|
||||||
# TODO set up vagrant oracle server
|
# TODO set up vagrant oracle server
|
||||||
|
git clone https://github.com/oracle/vagrant-projects.git
|
||||||
# TODO set up default passwd
|
# TODO set up default passwd
|
||||||
|
echo sudo su - oracle -c "'/home/oracle/setPassword.sh $oracle_password'" |
|
||||||
|
vagrant ssh
|
||||||
# test it works: sql oracle://
|
# test it works: sql oracle://
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,11 +75,11 @@ parallel: Error: --pipepart is incompatible with --max-replace-args, --max-lines
|
||||||
echo '### bug #42893: --block should not cause decimals in cat_partial'
|
echo '### bug #42893: --block should not cause decimals in cat_partial'
|
||||||
### bug #42893: --block should not cause decimals in cat_partial
|
### bug #42893: --block should not cause decimals in cat_partial
|
||||||
seq 100000 >/tmp/parallel-decimal; parallel --dry-run -kvv --pipepart --block 0.12345M -a /tmp/parallel-decimal true; rm /tmp/parallel-decimal
|
seq 100000 >/tmp/parallel-decimal; parallel --dry-run -kvv --pipepart --block 0.12345M -a /tmp/parallel-decimal true; rm /tmp/parallel-decimal
|
||||||
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 0 129450 |(true)
|
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>32767?32767:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 0 129450 |(true)
|
||||||
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 129450 129450 |(true)
|
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>32767?32767:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 129450 129450 |(true)
|
||||||
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 258900 129450 |(true)
|
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>32767?32767:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 258900 129450 |(true)
|
||||||
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 388350 129450 |(true)
|
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>32767?32767:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 388350 129450 |(true)
|
||||||
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 517800 71095 |(true)
|
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>32767?32767:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 517800 71095 |(true)
|
||||||
echo '### bug #42892: parallel -a nonexiting --pipepart'
|
echo '### bug #42892: parallel -a nonexiting --pipepart'
|
||||||
### bug #42892: parallel -a nonexiting --pipepart
|
### bug #42892: parallel -a nonexiting --pipepart
|
||||||
parallel --pipepart -a nonexisting wc
|
parallel --pipepart -a nonexisting wc
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
par_big_func 1 7964 191136
|
par_big_func 1 7968 191232
|
||||||
par_big_func 1 5372 128868
|
par_big_func 1 5368 128772
|
||||||
par_big_func_name 1 4960 119040
|
par_big_func_name 1 4960 119040
|
||||||
par_big_func_name 1 40 960
|
par_big_func_name 1 40 960
|
||||||
par_big_var_func_name 1 4956 118944
|
par_big_var_func_name 1 4956 118944
|
||||||
par_big_var_func_name 1 4956 118944
|
par_big_var_func_name 1 4956 118944
|
||||||
par_big_var_func_name 1 3424 82116
|
par_big_var_func_name 1 3424 82116
|
||||||
par_many_args 1 16396 32792
|
par_many_args 1 16400 32800
|
||||||
par_many_args 1 3604 7208
|
par_many_args 1 3600 7200
|
||||||
par_many_func 1 4372 104928
|
par_many_func 1 4372 104928
|
||||||
par_many_func 1 2296 55076
|
par_many_func 1 2296 55076
|
||||||
par_many_var 1 5124 122976
|
par_many_var 1 5124 122976
|
||||||
|
|
|
@ -727,12 +727,12 @@ Unknown option: parallel@lo
|
||||||
Unknown option: myecho $myvar
|
Unknown option: myecho $myvar
|
||||||
Unknown option: :::
|
Unknown option: :::
|
||||||
Unknown option: green
|
Unknown option: green
|
||||||
env_parallel only works if it is a function. Do the below and restart your shell.
|
env_parallel only works if it is a function.
|
||||||
|
Do this and restart your shell:
|
||||||
bash: Put this in $HOME/.bashrc: . `which env_parallel.bash`
|
bash: Put this in $HOME/.bashrc: . `which env_parallel.bash`
|
||||||
E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc
|
E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc
|
||||||
Supports: variables, aliases, functions, arrays
|
Supports: variables, aliases, functions, arrays
|
||||||
fish: Put this in $HOME/.config/fish/config.fish:
|
fish: Put this in $HOME/.config/fish/config.fish: . (which env_parallel.fish)
|
||||||
. (which env_parallel.fish)
|
|
||||||
E.g. by doing:
|
E.g. by doing:
|
||||||
echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish
|
echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish
|
||||||
Supports: variables, aliases, functions, arrays
|
Supports: variables, aliases, functions, arrays
|
||||||
|
@ -779,6 +779,7 @@ BASH_FUNC_run_once%%
|
||||||
BASH_FUNC_run_test%%
|
BASH_FUNC_run_test%%
|
||||||
_
|
_
|
||||||
mysqlrootpass
|
mysqlrootpass
|
||||||
|
withpassword
|
||||||
# The function is only copied if using Bash
|
# The function is only copied if using Bash
|
||||||
my_func2() {
|
my_func2() {
|
||||||
echo in my_func2 $VAR $1
|
echo in my_func2 $VAR $1
|
||||||
|
@ -801,12 +802,12 @@ Unknown option: parallel@lo
|
||||||
Unknown option: echo $NOT; not_ex
|
Unknown option: echo $NOT; not_ex
|
||||||
Unknown option: :::
|
Unknown option: :::
|
||||||
Unknown option: bar
|
Unknown option: bar
|
||||||
env_parallel only works if it is a function. Do the below and restart your shell.
|
env_parallel only works if it is a function.
|
||||||
|
Do this and restart your shell:
|
||||||
bash: Put this in $HOME/.bashrc: . `which env_parallel.bash`
|
bash: Put this in $HOME/.bashrc: . `which env_parallel.bash`
|
||||||
E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc
|
E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc
|
||||||
Supports: variables, aliases, functions, arrays
|
Supports: variables, aliases, functions, arrays
|
||||||
fish: Put this in $HOME/.config/fish/config.fish:
|
fish: Put this in $HOME/.config/fish/config.fish: . (which env_parallel.fish)
|
||||||
. (which env_parallel.fish)
|
|
||||||
E.g. by doing:
|
E.g. by doing:
|
||||||
echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish
|
echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish
|
||||||
Supports: variables, aliases, functions, arrays
|
Supports: variables, aliases, functions, arrays
|
||||||
|
@ -838,7 +839,7 @@ To install in all shells run:
|
||||||
env_parallel --install
|
env_parallel --install
|
||||||
For details: see man env_parallel
|
For details: see man env_parallel
|
||||||
parallel -vv --pipepart --block 1M wc :::: num30000
|
parallel -vv --pipepart --block 1M wc :::: num30000
|
||||||
<num30000 perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 0 168894 |(wc)
|
<num30000 perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>32767?32767:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 0 168894 |(wc)
|
||||||
30000 30000 168894
|
30000 30000 168894
|
||||||
my_func3() {
|
my_func3() {
|
||||||
echo in my_func $1 > $1.out
|
echo in my_func $1 > $1.out
|
||||||
|
@ -1285,4 +1286,4 @@ mentioned in the release notes of next version of GNU Parallel.
|
||||||
echo A
|
echo A
|
||||||
echo B
|
echo B
|
||||||
echo C
|
echo C
|
||||||
7
|
8
|
||||||
|
|
Loading…
Reference in a new issue