mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 05:57:54 +00:00
Released as 20190422 ('Invitation')
This commit is contained in:
parent
e475d04069
commit
3319fcad5b
1
CREDITS
1
CREDITS
|
@ -1,5 +1,6 @@
|
||||||
People who have helped GNU Parallel different ways.
|
People who have helped GNU Parallel different ways.
|
||||||
|
|
||||||
|
Renan Valieris: Maintaining GNU Parallel for Anaconda Cloud.
|
||||||
Jakub Kulík: Maintaining GNU Parallel for Solaris-userland.
|
Jakub Kulík: Maintaining GNU Parallel for Solaris-userland.
|
||||||
Rich Burridge: Maintaining GNU Parallel for Solaris-userland.
|
Rich Burridge: Maintaining GNU Parallel for Solaris-userland.
|
||||||
Jonathan Kamens: Bug patch for chomp.
|
Jonathan Kamens: Bug patch for chomp.
|
||||||
|
|
7
NEWS
7
NEWS
|
@ -1,3 +1,10 @@
|
||||||
|
20190422
|
||||||
|
|
||||||
|
* Invitation to the 10 years anniversary next year.
|
||||||
|
|
||||||
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
|
|
||||||
20190322
|
20190322
|
||||||
|
|
||||||
* SIGTERM is changed to SIGHUP, so sending SIGHUP will make GNU
|
* SIGTERM is changed to SIGHUP, so sending SIGHUP will make GNU
|
||||||
|
|
12
README
12
README
|
@ -44,9 +44,9 @@ 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-20190322.tar.bz2
|
wget https://ftpmirror.gnu.org/parallel/parallel-20190422.tar.bz2
|
||||||
bzip2 -dc parallel-20190322.tar.bz2 | tar xvf -
|
bzip2 -dc parallel-20190422.tar.bz2 | tar xvf -
|
||||||
cd parallel-20190322
|
cd parallel-20190422
|
||||||
./configure && make && sudo make install
|
./configure && make && sudo make install
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,9 +55,9 @@ 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-20190322.tar.bz2
|
wget https://ftpmirror.gnu.org/parallel/parallel-20190422.tar.bz2
|
||||||
bzip2 -dc parallel-20190322.tar.bz2 | tar xvf -
|
bzip2 -dc parallel-20190422.tar.bz2 | tar xvf -
|
||||||
cd parallel-20190322
|
cd parallel-20190422
|
||||||
./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
|
||||||
|
|
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 20190322.
|
# Generated by GNU Autoconf 2.69 for parallel 20190422.
|
||||||
#
|
#
|
||||||
# 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='20190322'
|
PACKAGE_VERSION='20190422'
|
||||||
PACKAGE_STRING='parallel 20190322'
|
PACKAGE_STRING='parallel 20190422'
|
||||||
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 20190322 to adapt to many kinds of systems.
|
\`configure' configures parallel 20190422 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 20190322:";;
|
short | recursive ) echo "Configuration of parallel 20190422:";;
|
||||||
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 20190322
|
parallel configure 20190422
|
||||||
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 20190322, which was
|
It was created by parallel $as_me 20190422, 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='20190322'
|
VERSION='20190422'
|
||||||
|
|
||||||
|
|
||||||
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 20190322, which was
|
This file was extended by parallel $as_me 20190422, 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 20190322
|
parallel config.status 20190422
|
||||||
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], [20190322], [bug-parallel@gnu.org])
|
AC_INIT([parallel], [20190422], [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([
|
||||||
|
|
|
@ -2,21 +2,35 @@
|
||||||
|
|
||||||
> Why does GNU Parallel show a citation notice?
|
> Why does GNU Parallel show a citation notice?
|
||||||
|
|
||||||
GNU Parallel is indirectly funded through citations. It is therefore important for the long term survival of GNU Parallel that it is cited. The citation notice makes users aware of this.
|
GNU Parallel is indirectly funded through citations.
|
||||||
|
|
||||||
|
GNU Parallel is funded by me having a paid job that allows for
|
||||||
|
maintaining GNU Parallel. This is much easier to get if GNU Parallel
|
||||||
|
is cited in scientific journals, and history has shown that
|
||||||
|
researchers forget to do this if they are not reminded explicitly.
|
||||||
|
|
||||||
|
It is therefore important for the long term survival of GNU Parallel
|
||||||
|
that it is cited. The citation notice makes users aware of this.
|
||||||
|
|
||||||
See also: https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html
|
See also: https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html
|
||||||
|
|
||||||
|
|
||||||
> Is the citation notice compatible with GPLv3?
|
> Is the citation notice compatible with GPLv3?
|
||||||
|
|
||||||
Yes. The wording has been cleared by Richard M. Stallman to be compatible with GPLv3. This is because the citation notice is not part of the license, but part of academic tradition.
|
Yes. The wording has been cleared by Richard M. Stallman to be
|
||||||
|
compatible with GPLv3. This is because the citation notice is not part
|
||||||
|
of the license, but part of academic tradition.
|
||||||
|
|
||||||
Therefore the notice is not adding a term that would require citation as mentioned on: https://www.gnu.org/licenses/gpl-faq.en.html#RequireCitation
|
Therefore the notice is not adding a term that would require citation
|
||||||
|
as mentioned on:
|
||||||
|
https://www.gnu.org/licenses/gpl-faq.en.html#RequireCitation
|
||||||
|
|
||||||
|
|
||||||
> Do automated scripts break if the notice is not silenced?
|
> Do automated scripts break if the notice is not silenced?
|
||||||
|
|
||||||
No. Not a single time has that happened. This is due to the notice only being printed, if the output is to the screen - not if the output is to a file or a pipe.
|
No. Not a single time has that happened. This is due to the notice
|
||||||
|
only being printed, if the output is to the screen - not if the output
|
||||||
|
is to a file or a pipe.
|
||||||
|
|
||||||
|
|
||||||
> How do I silence the citation notice?
|
> How do I silence the citation notice?
|
||||||
|
@ -25,9 +39,16 @@ Run this once:
|
||||||
|
|
||||||
parallel --citation
|
parallel --citation
|
||||||
|
|
||||||
It takes less than 10 seconds to do and is thus comparable to an 'OK. Do not show this again'-dialog box seen in Firefox and similar programs.
|
It takes less than 10 seconds to do and is thus comparable to an
|
||||||
|
'OK. Do not show this again'-dialog box seen in Firefox and similar
|
||||||
|
programs.
|
||||||
|
|
||||||
It is even optional to run this, as GNU Parallel will work without having 'parallel --citation' run first (in other words it is _not_ comparable to a clickwrap license, that must be accepted before the program will run). However, not running it does not change that academic tradition requires you to cite in scientific articles. That tradition requires you to cite even if there had been no notice.
|
It is even optional to run this, as GNU Parallel will work without
|
||||||
|
having 'parallel --citation' run first (in other words it is _not_
|
||||||
|
comparable to a clickwrap license, that must be accepted before the
|
||||||
|
program will run). However, not running it does not change that
|
||||||
|
academic tradition requires you to cite in scientific articles. That
|
||||||
|
tradition requires you to cite even if there had been no notice.
|
||||||
|
|
||||||
|
|
||||||
> I do not write scientific articles. Does the notice apply to me?
|
> I do not write scientific articles. Does the notice apply to me?
|
||||||
|
@ -37,7 +58,8 @@ The notice is only relevant if you write scientific articles.
|
||||||
|
|
||||||
> What shows citing software is an academic tradition?
|
> What shows citing software is an academic tradition?
|
||||||
|
|
||||||
These links say: Yes, you should cite software, and if the author suggests a way of citing, use that.
|
These links say: Yes, you should cite software, and if the author
|
||||||
|
suggests a way of citing, use that.
|
||||||
|
|
||||||
* https://blog.apastyle.org/apastyle/2015/01/how-to-cite-software-in-apa-style.html
|
* https://blog.apastyle.org/apastyle/2015/01/how-to-cite-software-in-apa-style.html
|
||||||
* https://libguides.mit.edu/c.php?g=551454&p=3900280
|
* https://libguides.mit.edu/c.php?g=551454&p=3900280
|
||||||
|
@ -48,12 +70,18 @@ These links say: Yes, you should cite software, and if the author suggests a way
|
||||||
* https://guides.lib.monash.edu/c.php?g=219786&p=1454293
|
* https://guides.lib.monash.edu/c.php?g=219786&p=1454293
|
||||||
* https://www.maxqda.com/how-to-cite-maxqda
|
* https://www.maxqda.com/how-to-cite-maxqda
|
||||||
|
|
||||||
If you feel the benefit from using GNU Parallel is too small to warrant a citation, then prove that by simply using another tool. If you replace your use of GNU Parallel with another tool, you obviously 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 benefit is big enough to warrant a citation.
|
If you feel the benefit from using GNU Parallel is too small to
|
||||||
|
warrant a citation, then prove that by simply using another tool. If
|
||||||
|
you replace your use of GNU Parallel with another tool, you obviously
|
||||||
|
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 benefit is
|
||||||
|
big enough to warrant a citation.
|
||||||
|
|
||||||
|
|
||||||
> Do other software tools show how to cite?
|
> Do other software tools show how to cite?
|
||||||
|
|
||||||
Here are other examples of software showing how to cite. Some of these refer to peer-reviewed articles - others do not:
|
Here are other examples of software showing how to cite. Some of these
|
||||||
|
refer to peer-reviewed articles - others do not:
|
||||||
|
|
||||||
* https://www.scipy.org/citing.html
|
* https://www.scipy.org/citing.html
|
||||||
* https://octave.org/doc/interpreter/Citing-Octave-in-Publications.html
|
* https://octave.org/doc/interpreter/Citing-Octave-in-Publications.html
|
||||||
|
@ -71,62 +99,107 @@ Here are other examples of software showing how to cite. Some of these refer to
|
||||||
|
|
||||||
> 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?
|
||||||
|
|
||||||
Yes. GNU Parallel is released under GNU GPLv3 and thus you are allowed to fork the code. But you have to make sure that your forked version cannot be confused with the original, so for one thing you cannot call it anything similar to GNU Parallel as that would cause confusion between your forked version and the original. This is also why we have CentOS (and not RedHat Free), and IceCat (and not Firefox Free). This is also covered in DFSG ("The license may require derived works to carry a different name or version number from the original software").
|
Yes. GNU Parallel is released under GNU GPLv3 and thus you are allowed
|
||||||
|
to fork the code. But you have to make sure that your forked version
|
||||||
|
cannot be confused with the original, so for one thing you cannot call
|
||||||
|
it anything similar to GNU Parallel as that would cause confusion
|
||||||
|
between your forked version and the original. Also documentation
|
||||||
|
cannot be confused with the documentation for GNU Parallel. This is
|
||||||
|
also why we have CentOS (and not RedHat Free), and IceCat (and not
|
||||||
|
Firefox Free). This is also covered in DFSG ("The license may require
|
||||||
|
derived works to carry a different name or version number from the
|
||||||
|
original software").
|
||||||
|
|
||||||
This principle has even been tested in court:
|
This principle has even been tested in court:
|
||||||
http://www.inta.org/INTABulletin/Pages/GERMANYGeneralPublicLicenseDoesNotPermitUseofThird-PartyTrademarksforAdvertisingModifiedVersionsofOpen-SourceSoftware.aspx
|
http://www.inta.org/INTABulletin/Pages/GERMANYGeneralPublicLicenseDoesNotPermitUseofThird-PartyTrademarksforAdvertisingModifiedVersionsofOpen-SourceSoftware.aspx
|
||||||
https://www.admody.com/urteilsdatenbank/cafe6fdaeed3/OLG-Duesseldorf_Urteil_vom_28-September-2010_Az_I-20-U-41-09
|
https://www.admody.com/urteilsdatenbank/cafe6fdaeed3/OLG-Duesseldorf_Urteil_vom_28-September-2010_Az_I-20-U-41-09
|
||||||
|
|
||||||
Also know that if you fork GNU Parallel and remove the notice, you are not helping to fund further develpment. So if you like GNU Parallel and want it to be maintained in the future, then this is a bad idea, as it will lead to less funding.
|
Also know that if you fork GNU Parallel and remove the notice, you are
|
||||||
|
not helping to fund further develpment. So if you like GNU Parallel
|
||||||
|
and do not want to see it wither away like many of the competitors,
|
||||||
|
then this is a bad idea, as it will lead to less funding.
|
||||||
|
|
||||||
|
|
||||||
> How important is the notice for the survival of GNU Parallel?
|
> How important is the notice for the survival of GNU Parallel?
|
||||||
|
|
||||||
Citations is what indirectly funds maintaining GNU Parallel. Before the citation notice was implemented hardly anyone cited GNU Parallel, and that would not have been sustainable in the long term. Funding development aligns well with "We will give back to the free software community" and "To accelerate innovation and underpin operations".
|
Citations is what indirectly funds maintaining GNU Parallel. Before
|
||||||
|
the citation notice was implemented hardly anyone cited GNU Parallel,
|
||||||
|
and that would not have been sustainable in the long term. Funding
|
||||||
|
development aligns well with "We will give back to the free software
|
||||||
|
community" and "To accelerate innovation and underpin operations".
|
||||||
|
|
||||||
Therefore it is more important to keep the notice than to be included in different distributions. Specifically, it will be preferable to be moved from Debian main to Debian non-free over having the notice removed (and staying in main).
|
Therefore it is more important to keep the notice than to be included
|
||||||
|
in different distributions. Specifically, it will be preferable to be
|
||||||
|
moved from Debian main to Debian non-free over having the notice
|
||||||
|
removed (and staying in main).
|
||||||
|
|
||||||
In other words: It is preferable having fewer users, who all know they should cite, over having many users, who do not know they should cite.
|
In other words: It is preferable having fewer users, who all know they
|
||||||
|
should cite, over having many users, who do not know they should cite.
|
||||||
|
|
||||||
If the goal had been to get more users, then the license would have been public domain.
|
If the goal had been to get more users, then the license would have
|
||||||
|
been public domain.
|
||||||
|
|
||||||
This is because a long term survival with funding is more important than short term gains in popularity that can be achieved by being distributed as part of a distribution.
|
This is because a long term survival with funding is more important
|
||||||
|
than short term gains in popularity that can be achieved by being
|
||||||
|
distributed as part of a distribution.
|
||||||
|
|
||||||
|
|
||||||
> Is there another way I can get rid of the citation notice?
|
> Is there another way I can get rid of the citation notice?
|
||||||
|
|
||||||
Yes. Find a way to finance future development of GNU Parallel. If you pay me a normal salary, I will be happy to remove the citation notice.
|
Yes. Find a way to finance future development of GNU Parallel. If you
|
||||||
|
pay me a normal salary, I will be happy to remove the citation notice.
|
||||||
|
|
||||||
The citation notice is about (indirect) funding - nothing else.
|
The citation notice is about (indirect) funding - nothing else.
|
||||||
|
|
||||||
|
|
||||||
> I do not think it is fair having to cite
|
> I do not think it is fair having to cite
|
||||||
|
|
||||||
If the inconvenience of having to cite is too big for you, then you should use another tool.
|
If the inconvenience of having to cite is too big for you, then you
|
||||||
|
should use another tool.
|
||||||
|
|
||||||
If you do not want to help fund GNU Parallel, then you will not be a happy GNU Parallel user, and thus you using another tool is the best solution for all parties. Here is a list of parallelizing tools to help you find an alternative: https://www.gnu.org/software/parallel/parallel_alternatives.html
|
If you do not want to help fund GNU Parallel, then you will not be a
|
||||||
|
happy GNU Parallel user, and thus you using another tool is the best
|
||||||
|
solution for all parties. Here is a list of parallelizing tools to
|
||||||
|
help you find an alternative:
|
||||||
|
https://www.gnu.org/software/parallel/parallel_alternatives.html
|
||||||
|
|
||||||
|
|
||||||
> I do not want to run 'parallel --citation'
|
> I do not want to run 'parallel --citation'
|
||||||
|
|
||||||
If the inconvenience of running 'parallel --citation' one single time after installing GNU Parallel is too big, then you do not have to do it. You only need to do that if you do not want to see the citation notice.
|
If the inconvenience of running 'parallel --citation' one single time
|
||||||
|
after installing GNU Parallel is too big, then you do not have to do
|
||||||
|
it. You only need to do that if you do not want to see the citation
|
||||||
|
notice.
|
||||||
|
|
||||||
But it really only takes 10 seconds to run.
|
But it really only takes 10 seconds to run.
|
||||||
|
|
||||||
|
|
||||||
> I do not want to see the citation notice at every run
|
> I do not want to see the citation notice at every run
|
||||||
|
|
||||||
You do not have to. Spend 10 seconds on running 'parallel --citation' and the notice is silenced. This is similar to clicking 'OK. Do not show this again' in a dialog box seen in Firefox and similar programs.
|
You do not have to. Spend 10 seconds on running 'parallel --citation'
|
||||||
|
and the notice is silenced. This is similar to clicking 'OK. Do not
|
||||||
|
show this again' in a dialog box seen in Firefox and similar programs.
|
||||||
|
|
||||||
If GNU Parallel does not save you more than 10 seconds, then you should probably not be using it anyway.
|
If GNU Parallel does not save you more than 10 seconds, then you
|
||||||
|
should probably not be using it anyway.
|
||||||
|
|
||||||
|
|
||||||
> I do not want my users to see the citation notice and I do not want to finance the development
|
> I do not want to help finance the development
|
||||||
|
|
||||||
If you care so little about GNU Parallel that you do not want to help finance development, then you should contemplate whether GNU Parallel is really the right tool for you.
|
If you care so little about GNU Parallel that you do not want to help
|
||||||
|
finance development, then you should contemplate whether GNU Parallel
|
||||||
|
is really the right tool for you.
|
||||||
|
|
||||||
It is, however, doable (e.g. by forking and changing the code). But you will be going against the wishes of the author, because you make it harder to make a living, thus you will be making it harder to justify producing more free software. If you like GNU Parallel and want to see it maintained in the future, then this is not the way to go.
|
It is, however, doable (e.g. by forking and changing the code). But
|
||||||
|
you will be going against the wishes of the author, because you make
|
||||||
|
it harder to make a living, thus you will be making it harder to
|
||||||
|
justify producing more free software. 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 https://www.slideshare.net/NadiaEghbal/consider-the-maintainer:
|
Maybe it is you Nadia Eghbal addresses in
|
||||||
|
https://www.slideshare.net/NadiaEghbal/consider-the-maintainer:
|
||||||
|
|
||||||
"Is it alright to compromise, or even deliberately ignore, the happiness of maintainers so we that can enjoy free and open source software?"
|
"Is it alright to compromise, or even deliberately ignore, the
|
||||||
|
happiness of maintainers so we that can enjoy free and open source
|
||||||
|
software?"
|
||||||
|
|
14
doc/haikus
14
doc/haikus
|
@ -1,11 +1,15 @@
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
|
GNU parallel really changed how I do a lot of data processing stuff
|
||||||
|
-- Brendan Dolan-Gavitt @moyix@twitter
|
||||||
|
|
||||||
|
It is, beyond absolutely any doubt whatsoever, the single most
|
||||||
|
important tool I use in making me a productive bioinformatician.
|
||||||
|
-- A-N-Other@reddit.com
|
||||||
|
|
||||||
Parallel is a life send, what an awesome piece of software.
|
Parallel is a life send, what an awesome piece of software.
|
||||||
-- Blaze9@reddit.com
|
-- Blaze9@reddit.com
|
||||||
|
|
||||||
Y'all need some GNU parallel in your lives
|
|
||||||
-- ChaKu @ChaiLovesChai@twitter
|
|
||||||
|
|
||||||
It's really powerful for smallish data processing scripts
|
It's really powerful for smallish data processing scripts
|
||||||
-- João Veiga @jcsvveiga@twitter
|
-- João Veiga @jcsvveiga@twitter
|
||||||
|
|
||||||
|
@ -31,6 +35,10 @@ It's the MapReduce of our generation!
|
||||||
|
|
||||||
|
|
||||||
=== Used ===
|
=== Used ===
|
||||||
|
Y'all need some GNU parallel in your lives
|
||||||
|
-- ChaKu @ChaiLovesChai@twitter
|
||||||
|
|
||||||
|
|
||||||
There are so many things to love about GNU parallel. You could honestly teach a whole parallel computing course with it and never have to leave it for a real language.
|
There are so many things to love about GNU parallel. You could honestly teach a whole parallel computing course with it and never have to leave it for a real language.
|
||||||
-- Aubrey Bailey @DNAvinci@twitter
|
-- Aubrey Bailey @DNAvinci@twitter
|
||||||
|
|
||||||
|
|
131
doc/promo
131
doc/promo
|
@ -1,5 +1,7 @@
|
||||||
=head1 GNU Parallel 10 year anniversery - 2020-04-22
|
=head1 GNU Parallel 10 year anniversery - 2020-04-22
|
||||||
|
|
||||||
|
Git log entry 2010-04-22:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Author: Ole Tange <ole@tange.dk>
|
Author: Ole Tange <ole@tange.dk>
|
||||||
Date: Thu Apr 22 01:23:00 2010 +0200
|
Date: Thu Apr 22 01:23:00 2010 +0200
|
||||||
|
@ -11,7 +13,8 @@ Date: Thu Apr 22 01:23:00 2010 +0200
|
||||||
Wow. It has been 10 years since my parallel program was officially
|
Wow. It has been 10 years since my parallel program was officially
|
||||||
renamed GNU Parallel. It has been quite a ride.
|
renamed GNU Parallel. It has been quite a ride.
|
||||||
|
|
||||||
So it is a probably a good time to take stock.
|
Not all software is maintained for 10 full years, so it is a probably
|
||||||
|
a good time to take stock.
|
||||||
|
|
||||||
|
|
||||||
=head2 The design
|
=head2 The design
|
||||||
|
@ -93,13 +96,29 @@ It is still cool that it can be done at all.
|
||||||
|
|
||||||
A sad chapter is the attack on the funding of GNU Parallel.
|
A sad chapter is the attack on the funding of GNU Parallel.
|
||||||
|
|
||||||
You would think such an attack would come from non-free competitors, but
|
You would think such an attack would come from non-free competitors,
|
||||||
this attack was from packagers that packaged GNU Parallel for Debian
|
but this attack was from packagers that packaged GNU Parallel. Didier
|
||||||
and SuSE.
|
Raboud <odyx@debian.org> (Debian and by inheritance Ubuntu), Andreas
|
||||||
|
Stieger <astieger@suse.com> (SuSE) and Johannes Löthberg
|
||||||
|
<johannes@kyriasis.com> (Arch). These are all people sitting in jobs,
|
||||||
|
where they are paid to use free software, and you would think they
|
||||||
|
would understand the importance of getting paid.
|
||||||
|
|
||||||
GNU Parallel is funded by me having a job. It is easier to get a well
|
<<Check before sending
|
||||||
paid job that will allow for maintaining GNU Parallel if GNU Parallel
|
https://www.linkedin.com/in/didierraboud/
|
||||||
is cited, because that proves the tool is useful for serious work.
|
https://www.linkedin.com/in/andreas-stieger-74b68a72/
|
||||||
|
https://www.linkedin.com/in/johanneslothberg?originalSubdomain=se
|
||||||
|
Maintainer today:
|
||||||
|
Jan Engelhardt <jengelh@inai.de>
|
||||||
|
<<debian>>
|
||||||
|
<johannes@kyriasis.com>
|
||||||
|
|
||||||
|
>>
|
||||||
|
|
||||||
|
GNU Parallel is funded by me having a job. It is easier to get a paid
|
||||||
|
job that will allow for maintaining GNU Parallel if GNU Parallel is
|
||||||
|
cited, because that proves the tool is useful for serious work. This
|
||||||
|
is especially true in academia.
|
||||||
|
|
||||||
I saw GNU Parallel being used in scientific articles, which was great,
|
I saw GNU Parallel being used in scientific articles, which was great,
|
||||||
but without being cited, which was not ideal. So we discussed on the
|
but without being cited, which was not ideal. So we discussed on the
|
||||||
|
@ -110,23 +129,27 @@ So it was decided to make a notice similar to a do-show-this-again box
|
||||||
known from e.g. Firefox. The notice could be silenced in less than 10
|
known from e.g. Firefox. The notice could be silenced in less than 10
|
||||||
seconds.
|
seconds.
|
||||||
|
|
||||||
Unfortunately in a misguided act of short term gain in popularity SuSE
|
Unfortunately in a misguided act of short term gain in popularity
|
||||||
and Debian did a disservice to free software and disabled this notice
|
SuSE, Debian, and Arch did a disservice to free software and disabled
|
||||||
in the version they currently distribute.
|
this notice in the version they currently distribute.
|
||||||
|
|
||||||
As GNU Parallel is free software they are allowed to fork the
|
As GNU Parallel is free software they are allowed to fork the
|
||||||
software, but only if they make sure the forked version cannot be
|
software, but only if they make sure the forked version cannot be
|
||||||
mistaken for GNU Parallel. We have court cases showing this is the
|
mistaken for GNU Parallel. We have court cases showing this is the
|
||||||
case, but still Debian and SuSE refuse to back down, so the problem
|
case, but still Didier Raboud <odyx@debian.org> (Debian and by
|
||||||
still not resolved.
|
inheritance Ubuntu), Andreas Stieger <astieger@suse.com> (SUSE) and
|
||||||
|
Johannes Löthberg <johannes@kyriasis.com> (Arch) refuse to back down,
|
||||||
|
so the problem still not resolved.
|
||||||
|
|
||||||
If you would like to see GNU Parallel maintained in the future, please
|
If you would like to see GNU Parallel maintained in the future, please
|
||||||
help by raising this issue with SuSE and Debian. Their current stance
|
help by raising this issue with SUSE (current maintainer: Jan
|
||||||
hurts free software by making it harder to justify spending time on
|
Engelhardt <jengelh@inai.de>), Debian/Ubuntu (current maintainer:
|
||||||
maintaining GNU Parallel. Not having GNU Parallel distributed by
|
<<>>), and Arch (current maintainer: Johannes Löthberg
|
||||||
Debian and SuSE is actually preferable to the current situation,
|
<johannes@kyriasis.com>). Their current stance hurts free software by
|
||||||
though, the best outcome would be if they distributed the non-modified
|
making it harder to justify spending time on maintaining GNU
|
||||||
version.
|
Parallel. Not having GNU Parallel distributed by Debian/Ubuntu, Arch,
|
||||||
|
and SUSE is actually preferable to the current situation, though, the
|
||||||
|
best outcome would be if they distributed the non-modified version.
|
||||||
|
|
||||||
For users who are unwiling to spend the 10 seconds on silencing the
|
For users who are unwiling to spend the 10 seconds on silencing the
|
||||||
notice there is an easy solution: "Don't like it? Don't use it." A
|
notice there is an easy solution: "Don't like it? Don't use it." A
|
||||||
|
@ -153,14 +176,40 @@ read a full book to be able to use GNU Parallel".
|
||||||
Several people noted that GNU Parallel was missing a cheat sheet. So
|
Several people noted that GNU Parallel was missing a cheat sheet. So
|
||||||
in 2019 a one page cheat sheet was included in the package.
|
in 2019 a one page cheat sheet was included in the package.
|
||||||
|
|
||||||
=head2 Why all the options?
|
|
||||||
|
|
||||||
Instead of crappy wrapper scripts.
|
=head2 Why so many options?
|
||||||
|
|
||||||
|
GNU B<parallel> has a lot of options. A good part of them could be
|
||||||
|
written as wrapper scripts.
|
||||||
|
|
||||||
|
Normally it would not be in the UNIX philosophy to merge the wrapper
|
||||||
|
scripts into the tool itself. But experience showed that people could
|
||||||
|
not write these wrapper scripts without bugs.
|
||||||
|
|
||||||
|
By having them part of GNU B<parallel> the code will be tested by more
|
||||||
|
people and will in general be of better quality than code that was
|
||||||
|
just thrown together in a couple of hours.
|
||||||
|
|
||||||
|
An example of this is B<--nice>: For running local jobs the option is
|
||||||
|
not needed, you simply B<nice> everything:
|
||||||
|
|
||||||
|
nice parallel ...
|
||||||
|
|
||||||
|
But as soon as you run composed commands on remote systems,
|
||||||
|
it becomes much harder:
|
||||||
|
|
||||||
|
parallel -S .. nice bash -c "'cmd1; cmd2'"
|
||||||
|
|
||||||
|
When you combine that with other wrapper scripts (such as
|
||||||
|
B<--return>), it quickly becomes tricky to get right for all cases.
|
||||||
|
|
||||||
|
|
||||||
=head2 Convenience options --nice --basefile --transfer --return
|
=head2 Convenience options --nice --basefile --transfer --return
|
||||||
--cleanup --tmux --group --compress --cat --fifo --workdir --tag
|
--cleanup --tmux --group --compress --cat --fifo --workdir --tag
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=head2 The May 1st incident
|
=head2 The May 1st incident
|
||||||
|
|
||||||
I was at a May 1st event for computer professionals where I sat at a
|
I was at a May 1st event for computer professionals where I sat at a
|
||||||
|
@ -175,7 +224,8 @@ quite intimately.
|
||||||
|
|
||||||
"And it is written by a Dane," he said excited.
|
"And it is written by a Dane," he said excited.
|
||||||
|
|
||||||
"Oh. Are you aware that the author is sitting on my side of the table?"
|
"Oh. Are you aware that the author is sitting on my side of the
|
||||||
|
table?"
|
||||||
|
|
||||||
We were the only ones sitting at the table, but we had had a few
|
We were the only ones sitting at the table, but we had had a few
|
||||||
beers, so it took a while before it dawned to him, who I was.
|
beers, so it took a while before it dawned to him, who I was.
|
||||||
|
@ -184,6 +234,10 @@ beers, so it took a while before it dawned to him, who I was.
|
||||||
|
|
||||||
=head2 Underappreciated functionality
|
=head2 Underappreciated functionality
|
||||||
|
|
||||||
|
There is some functionality I am particularly proud of, but which is
|
||||||
|
currently not in wide use.
|
||||||
|
|
||||||
|
|
||||||
=head3 env_parallel
|
=head3 env_parallel
|
||||||
|
|
||||||
When I was shown you could encode variables into a single variable and
|
When I was shown you could encode variables into a single variable and
|
||||||
|
@ -203,11 +257,11 @@ system just because you want to run jobs on a remote system?
|
||||||
Some of GNU Parallel functionality is inspired by other people
|
Some of GNU Parallel functionality is inspired by other people
|
||||||
problems: How could this problem be solved in general?
|
problems: How could this problem be solved in general?
|
||||||
|
|
||||||
parset is one of those. It was inpired by a user who needed the output
|
B<parset> is one of those. It was inpired by a user who needed the
|
||||||
from different jobs to be stored in different variables. The jobs were
|
output from different jobs to be stored in different variables. The
|
||||||
slow and could be run in parallel. So while the running of the jobs
|
jobs were slow and could be run in parallel. So while the running of
|
||||||
were clearly a task for GNU Parallel, the storing in variables was not
|
the jobs were clearly a task for GNU Parallel, the storing in
|
||||||
so clear.
|
variables was not so clear.
|
||||||
|
|
||||||
It was fairly easy to code something that would work if the output was
|
It was fairly easy to code something that would work if the output was
|
||||||
a single line with no spaces, but GNU Parallel tries hard not to set
|
a single line with no spaces, but GNU Parallel tries hard not to set
|
||||||
|
@ -218,24 +272,24 @@ data.
|
||||||
|
|
||||||
=head3 --embed
|
=head3 --embed
|
||||||
|
|
||||||
Some of the functionality is inspired by other tools. --embed is one
|
Some of the functionality is inspired by other tools. B<--embed> is one
|
||||||
of those.
|
of those.
|
||||||
|
|
||||||
--embed was inspired by Lesser Parallel that in turn was inspired by
|
B<--embed> was inspired by Lesser Parallel that in turn was inspired
|
||||||
GNU Parallel. The major feature of Lesser Parallel is to be embedded
|
by GNU Parallel. The major feature of Lesser Parallel is to be
|
||||||
in any bash script. The developer will embed the code into his own
|
embedded in any bash script. The developer will embed the code into
|
||||||
bash script and distribute this script.
|
his own bash script and distribute this script.
|
||||||
|
|
||||||
So with --embed the users of the script will not have to install GNU
|
So with B<--embed> the users of the script will not have to install
|
||||||
Parallel to run it.
|
GNU Parallel to run it.
|
||||||
|
|
||||||
|
|
||||||
=head3 --pipepart with --fifo
|
=head3 --pipepart with --fifo
|
||||||
|
|
||||||
=head3 --bar
|
=head3 --bar
|
||||||
|
|
||||||
I see people using --bar too rarely. It is one of the easiest ways to
|
I see people using B<--bar> too rarely. It is one of the easiest ways
|
||||||
get a visual representation of when all the jobs are expected done.
|
to get a visual representation of when all the jobs are expected done.
|
||||||
|
|
||||||
|
|
||||||
=head3 Combining ::: with :::+
|
=head3 Combining ::: with :::+
|
||||||
|
@ -253,7 +307,7 @@ get a visual representation of when all the jobs are expected done.
|
||||||
Best ever
|
Best ever
|
||||||
|
|
||||||
|
|
||||||
=head2 Live strong
|
=head2 Vitality
|
||||||
|
|
||||||
On average there has been a new release of GNU Parallel every month
|
On average there has been a new release of GNU Parallel every month
|
||||||
since 2010-04-24.
|
since 2010-04-24.
|
||||||
|
@ -261,8 +315,8 @@ since 2010-04-24.
|
||||||
In the autumn of 2010 Henrik Sandklef teased me that he knew when the
|
In the autumn of 2010 Henrik Sandklef teased me that he knew when the
|
||||||
next release would be. GNU Parallel just happened to have been
|
next release would be. GNU Parallel just happened to have been
|
||||||
released twice in the 22nd, so he assumed the next release would also
|
released twice in the 22nd, so he assumed the next release would also
|
||||||
be on the 22nd. And why not? A few releases were not in line with
|
be on the 22nd. And why not? A few releases were not in line with this
|
||||||
this, but since 2011 there has been a release every month around the
|
rule, but since 2011 there has been a release every month around the
|
||||||
22nd.
|
22nd.
|
||||||
|
|
||||||
The fixed release cycle means there has been more than 100 releases
|
The fixed release cycle means there has been more than 100 releases
|
||||||
|
@ -283,6 +337,7 @@ Since the events are not always happy events, the names have now and
|
||||||
then stirred a bit of controversy. But if you want happier names, go
|
then stirred a bit of controversy. But if you want happier names, go
|
||||||
make a happier world :)
|
make a happier world :)
|
||||||
|
|
||||||
|
|
||||||
=head3 Competitors
|
=head3 Competitors
|
||||||
|
|
||||||
Apart from xargs no competitor has had the strength to live for 10
|
Apart from xargs no competitor has had the strength to live for 10
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
Check that documentation is updated (compare to web):
|
Check that documentation is updated (compare to web):
|
||||||
|
|
||||||
git grep -E '(alpha|beta) testing' | cat
|
git grep -E '(alpha|beta) testing' | cat
|
||||||
git diff last-release-commit
|
git diff $(date --date="last month" +%Y%m22)
|
||||||
Unmodified beta since last version => production
|
Unmodified beta since last version => production
|
||||||
Unmodified alpha since last version => beta
|
Unmodified alpha since last version => beta
|
||||||
Modified => alpha
|
Modified => alpha
|
||||||
|
@ -76,8 +76,6 @@ make alphaupload
|
||||||
== Update OpenSUSE build system ==
|
== Update OpenSUSE build system ==
|
||||||
|
|
||||||
cd ~/privat/parallel/packager/obs
|
cd ~/privat/parallel/packager/obs
|
||||||
# Update version number
|
|
||||||
em home:tange/parallel/parallel.spec
|
|
||||||
|
|
||||||
find home:tange/parallel/* -type f | grep -v parallel.spec | parallel -Xj1 osc rm {}
|
find home:tange/parallel/* -type f | grep -v parallel.spec | parallel -Xj1 osc rm {}
|
||||||
# This should not create new files
|
# This should not create new files
|
||||||
|
@ -119,8 +117,9 @@ cp src/*.pdf src/*.html ../parallel-web/parallel
|
||||||
cp src/parallel.html ../parallel-web/parallel/man.html
|
cp src/parallel.html ../parallel-web/parallel/man.html
|
||||||
|
|
||||||
pushd ../parallel-web/parallel
|
pushd ../parallel-web/parallel
|
||||||
cvs up
|
# Bug at Savannah makes this take 30 seconds
|
||||||
cvs ci -m "New release"
|
torsocks cvs up
|
||||||
|
torsocks cvs ci -m "New release"
|
||||||
pushd
|
pushd
|
||||||
|
|
||||||
== Commit released version ==
|
== Commit released version ==
|
||||||
|
@ -139,9 +138,9 @@ git commit -a -m "Released as $YYYYMMDD ('$TAG')"
|
||||||
git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $TAG
|
git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $TAG
|
||||||
git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $YYYYMMDD
|
git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $YYYYMMDD
|
||||||
|
|
||||||
git push
|
torsocks git push
|
||||||
git push origin $TAG
|
torsocks git push origin $TAG
|
||||||
git push origin $YYYYMMDD
|
torsocks git push origin $YYYYMMDD
|
||||||
|
|
||||||
|
|
||||||
== Update documentation ==
|
== Update documentation ==
|
||||||
|
@ -207,27 +206,68 @@ 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 20190322 ('FridayforFuture') released <<[stable]>>
|
Subject: GNU Parallel 20190422 ('Invitation Assange') released <<[stable]>>
|
||||||
|
|
||||||
GNU Parallel 20190322 ('FridayforFuture') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
|
GNU Parallel 20190422 ('Invitation') <<[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.
|
||||||
|
|
||||||
|
GNU Parallel is 10 years old in a year on 2020-04-22. You are here by invited to a reception on Friday 2020-04-17.
|
||||||
|
|
||||||
|
The primary reception will be held in Copenhagen, DK. Please reserve the date and email happybirthdaygnuparallel@tange.dk if you want to join.
|
||||||
|
|
||||||
|
If you cannot make it, you are encouraged to host a parallel party.
|
||||||
|
|
||||||
|
So far we hope to have parallel parties at:
|
||||||
|
|
||||||
|
+verbatim+
|
||||||
|
PROSA
|
||||||
|
Vester Farimagsgade 37A
|
||||||
|
DK-1606 København V
|
||||||
|
RSVP: happybirthdaygnuparallel@tange.dk
|
||||||
|
|
||||||
|
PROSA
|
||||||
|
Søren Frichs Vej 38 K th
|
||||||
|
DK-8230 Åbyhøj
|
||||||
|
RSVP: To be determined
|
||||||
|
|
||||||
|
PROSA
|
||||||
|
Overgade 54
|
||||||
|
DK-5000 Odense C
|
||||||
|
RSVP: To be determined
|
||||||
|
-verbatim-
|
||||||
|
|
||||||
|
If you want to host a party held in parallel (either in this or in a parallel universe), please let me know, so it can be announced.
|
||||||
|
|
||||||
|
If you have parallel ideas for how to celebrate GNU Parallel, please post on the email list parallel@gnu.org. So far we have the following ideas:
|
||||||
|
|
||||||
|
* Use GNU Parallel logo (the café wall illusion) as decoration everywhere – preferably in a moving version where the bars slide. Maybe we can borrow this https://www.youtube.com/watch?v=_XFDnFLqRFE or make an animation in javascript based on https://bl.ocks.org/Fil/13177d3c911fb8943cb0013086469b87? Other illusions might be fun, too.
|
||||||
|
* Only serve beverages in parallel (2 or more), which may or may not be the same kind of beverage, and may or may not be served to the same person, and may or may not be served by multiple waiters in parallel
|
||||||
|
* Let people drink in parallel with straws (2 or more straws)
|
||||||
|
* Serve popcorn as snack (funny because cores and kernels are the same word in Danish, and GNU Parallel keeps cores hot)
|
||||||
|
* Serve saltstænger and similar parallel snacks.
|
||||||
|
* Serve (snack friendly) cereal in parallel bowls.
|
||||||
|
* Live parallel streaming from parallel parties
|
||||||
|
* Play songs in parallel that use the same 4 chords: https://www.youtube.com/watch?v=5pidokakU4I
|
||||||
|
* Play songs named parallel, serial, mutex, race condition and similar
|
||||||
|
* Have RC racing cars to demonstrate race condition
|
||||||
|
* Put a counting semaphore on the toilets
|
||||||
|
* Only let people leave one at a time to simulate serialized output – UNLESS they swap some clothing (to simulate half line mixing)
|
||||||
|
|
||||||
|
If you have interesting stories about or uses of GNU Parallel, please post them, so can be part of the anniversary update.
|
||||||
|
|
||||||
The change in signalling makes this release experimental for users that send SIGTERM to GNU Parallel.
|
|
||||||
|
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
There are so many things to love about GNU parallel. You could honestly teach a whole parallel computing course with it and never have to leave it for a real language.
|
Y'all need some GNU parallel in your lives
|
||||||
-- Aubrey Bailey @DNAvinci@twitter
|
-- ChaKu @ChaiLovesChai@twitter
|
||||||
|
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
|
||||||
* GNU Parallel now includes a cheat sheet: parallel_cheat.pdf
|
* Invitation to the 10 years anniversary next year.
|
||||||
|
|
||||||
* High Throughput Computing on RMACC Summit and Beyond https://calendar.colorado.edu/event/high_throughput_computing_on_rmacc_summit_and_beyond#.XH2NBhB7mV4
|
* The Austin Linux Meetup: KVM as Hypervisor and GNU Parallel https://www.meetup.com/linuxaustin/events/jbxcnqyzgbpb/
|
||||||
|
|
||||||
* GNU Parallel Cheat Sheet by cpriest https://www.cheatography.com/cpriest/cheat-sheets/gnu-parallel/
|
|
||||||
|
|
||||||
* Use Multiple CPU Cores(Parallelize) with Single Threaded Linux Commands http://xensoft.com/use-multiple-cpu-cores-parallelize-with-single-threaded-linux-commands/
|
|
||||||
|
|
||||||
* Bug fixes and man page updates.
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@ all:
|
||||||
osc rm home\:tange/parallel/parallel_*.dsc || true
|
osc rm home\:tange/parallel/parallel_*.dsc || true
|
||||||
cp ../debian/parallel_*.dsc ../debian/parallel_*.tar.gz home\:tange/parallel/
|
cp ../debian/parallel_*.dsc ../debian/parallel_*.tar.gz home\:tange/parallel/
|
||||||
cp `ls ../../parallel-2*.tar.bz2|grep -v latest|tail -n1` home\:tange/parallel/
|
cp `ls ../../parallel-2*.tar.bz2|grep -v latest|tail -n1` home\:tange/parallel/
|
||||||
|
perl -i -pe '/Version:/ and s/20\d\d\d\d\d\d/$$ENV{YYYYMMDD}/g' home:tange/parallel/parallel.spec
|
||||||
|
cd home\:tange/parallel/ && osc diff
|
||||||
cd home\:tange/parallel/ && osc up
|
cd home\:tange/parallel/ && osc up
|
||||||
cd home\:tange/parallel/ && parallel osc add ::: *.spec *.dsc *.tar.gz *.tar.bz2 && echo Src added OK || true
|
cd home\:tange/parallel/ && parallel osc add ::: *.spec *.dsc *.tar.gz *.tar.bz2 && echo Src added OK || true
|
||||||
cd home\:tange/parallel/ && osc ci -m "New release"
|
cd home\:tange/parallel/ && osc ci -m "New release"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<directory name="parallel" rev="235" srcmd5="b56edf537125f4d80264c18ceb6f0a1d" vrev="3">
|
<directory name="parallel" rev="236" srcmd5="97d7526f816fcbd46f75c23d892a29f7" vrev="1">
|
||||||
<entry md5="bb69a30ebf19d93dda7b349d3ec6f09a" mtime="1553206993" name="parallel-20190322.tar.bz2" size="2010002" />
|
<entry md5="d355fb70b3d78985968e14d824b87246" mtime="1555853627" name="parallel-20190422.tar.bz2" size="2011149" />
|
||||||
<entry md5="f1e16853c46c9fdd844562fbaf845aa4" mtime="1553206994" name="parallel.spec" size="4738" />
|
<entry md5="d290340df54c5f9a287819ca61a98406" mtime="1555853628" name="parallel.spec" size="4738" />
|
||||||
<entry md5="38056b999a4b5c6b32dc85be7359e4da" mtime="1553206501" name="parallel_20190322.dsc" size="556" />
|
<entry md5="c513f6d69180cd4d02573d4679cae74f" mtime="1555853628" name="parallel_20190422.dsc" size="556" />
|
||||||
<entry md5="f787b5e843add718eafeb06163e7e496" mtime="1553206502" name="parallel_20190322.tar.gz" size="2193783" />
|
<entry md5="81678d2cc4c52387226826453217ca63" mtime="1555853628" name="parallel_20190422.tar.gz" size="2192091" />
|
||||||
</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: 20190322
|
Version: 20190422
|
||||||
Release: 1.2
|
Release: 1.2
|
||||||
License: GPL
|
License: GPL
|
||||||
Group: Productivity/File utilities
|
Group: Productivity/File utilities
|
||||||
|
|
|
@ -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: 20190322
|
Version: 20190422
|
||||||
Release: 1.2
|
Release: 1.2
|
||||||
License: GPL
|
License: GPL
|
||||||
Group: Productivity/File utilities
|
Group: Productivity/File utilities
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
$Global::progname="niceload";
|
$Global::progname="niceload";
|
||||||
$Global::version = 20190322;
|
$Global::version = 20190422;
|
||||||
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) {
|
||||||
|
|
|
@ -27,7 +27,7 @@ years.
|
||||||
|
|
||||||
The following features are in some of the comparable tools:
|
The following features are in some of the comparable tools:
|
||||||
|
|
||||||
Inputs
|
B<Inputs>
|
||||||
I1. Arguments can be read from stdin
|
I1. Arguments can be read from stdin
|
||||||
I2. Arguments can be read from a file
|
I2. Arguments can be read from a file
|
||||||
I3. Arguments can be read from multiple files
|
I3. Arguments can be read from multiple files
|
||||||
|
@ -36,7 +36,7 @@ Inputs
|
||||||
I6. Arguments can be read from the same file using #! (shebang)
|
I6. Arguments can be read from the same file using #! (shebang)
|
||||||
I7. Line oriented input as default (Quoting of special chars not needed)
|
I7. Line oriented input as default (Quoting of special chars not needed)
|
||||||
|
|
||||||
Manipulation of input
|
B<Manipulation of input>
|
||||||
M1. Composed command
|
M1. Composed command
|
||||||
M2. Multiple arguments can fill up an execution line
|
M2. Multiple arguments can fill up an execution line
|
||||||
M3. Arguments can be put anywhere in the execution line
|
M3. Arguments can be put anywhere in the execution line
|
||||||
|
@ -44,15 +44,18 @@ Manipulation of input
|
||||||
M5. Arguments can be replaced with context
|
M5. Arguments can be replaced with context
|
||||||
M6. Input can be treated as the complete command line
|
M6. Input can be treated as the complete command line
|
||||||
|
|
||||||
Outputs
|
B<Outputs>
|
||||||
O1. Grouping output so output from different jobs do not mix
|
O1. Grouping output so output from different jobs do not mix
|
||||||
O2. Send stderr (standard error) to stderr (standard error)
|
O2. Send stderr (standard error) to stderr (standard error)
|
||||||
O3. Send stdout (standard output) to stdout (standard output)
|
O3. Send stdout (standard output) to stdout (standard output)
|
||||||
O4. Order of output can be same as order of input
|
O4. Order of output can be same as order of input
|
||||||
O5. Stdout only contains stdout (standard output) from the command
|
O5. Stdout only contains stdout (standard output) from the command
|
||||||
O6. Stderr only contains stderr (standard error) from the command
|
O6. Stderr only contains stderr (standard error) from the command
|
||||||
|
O7. Buffering on disk
|
||||||
|
O8. Cleanup of file if killed
|
||||||
|
O9. Test if disk runs full during run
|
||||||
|
|
||||||
Execution
|
B<Execution>
|
||||||
E1. Running jobs in parallel
|
E1. Running jobs in parallel
|
||||||
E2. List running jobs
|
E2. List running jobs
|
||||||
E3. Finish running jobs, but do not start new jobs
|
E3. Finish running jobs, but do not start new jobs
|
||||||
|
@ -60,7 +63,7 @@ Execution
|
||||||
E5. Finish running jobs, but do not start new jobs after first failure
|
E5. Finish running jobs, but do not start new jobs after first failure
|
||||||
E6. Number of running jobs can be adjusted while running
|
E6. Number of running jobs can be adjusted while running
|
||||||
|
|
||||||
Remote execution
|
B<Remote execution>
|
||||||
R1. Jobs can be run on remote computers
|
R1. Jobs can be run on remote computers
|
||||||
R2. Basefiles can be transferred
|
R2. Basefiles can be transferred
|
||||||
R3. Argument files can be transferred
|
R3. Argument files can be transferred
|
||||||
|
@ -71,11 +74,11 @@ Remote execution
|
||||||
R8. Configurable SSH command
|
R8. Configurable SSH command
|
||||||
R9. Retry if connection breaks occasionally
|
R9. Retry if connection breaks occasionally
|
||||||
|
|
||||||
Semaphore
|
B<Semaphore>
|
||||||
S1. Possibility to work as a mutex
|
S1. Possibility to work as a mutex
|
||||||
S2. Possibility to work as a counting semaphore
|
S2. Possibility to work as a counting semaphore
|
||||||
|
|
||||||
Legend
|
B<Legend>
|
||||||
- = no
|
- = no
|
||||||
x = not applicable
|
x = not applicable
|
||||||
ID = yes
|
ID = yes
|
||||||
|
@ -87,7 +90,7 @@ BUGS).
|
||||||
parallel:
|
parallel:
|
||||||
I1 I2 I3 I4 I5 I6 I7
|
I1 I2 I3 I4 I5 I6 I7
|
||||||
M1 M2 M3 M4 M5 M6
|
M1 M2 M3 M4 M5 M6
|
||||||
O1 O2 O3 O4 O5 O6
|
O1 O2 O3 O4 O5 O6 O7 O8 O9
|
||||||
E1 E2 E3 E4 E5 E6
|
E1 E2 E3 E4 E5 E6
|
||||||
R1 R2 R3 R4 R5 R6 R7 R8 R9
|
R1 R2 R3 R4 R5 R6 R7 R8 R9
|
||||||
S1 S2
|
S1 S2
|
||||||
|
@ -1569,9 +1572,10 @@ emulated with GNU B<parallel>:
|
||||||
$ loop 'touch $COUNT.txt' --count-by 5
|
$ loop 'touch $COUNT.txt' --count-by 5
|
||||||
$ loopy touch '{= $_=seq()*5 =}'.txt
|
$ loopy touch '{= $_=seq()*5 =}'.txt
|
||||||
|
|
||||||
$ loop --until-contains 200 -- ./get_response_code.sh --site mysite.biz`
|
$ loop --until-contains 200 -- \
|
||||||
$ loopy --halt now,success=1 './get_response_code.sh --site mysite.biz |
|
./get_response_code.sh --site mysite.biz`
|
||||||
match 200'
|
$ loopy --halt now,success=1 \
|
||||||
|
'./get_response_code.sh --site mysite.biz | match 200'
|
||||||
|
|
||||||
$ loop './poke_server' --for-duration 8h
|
$ loop './poke_server' --for-duration 8h
|
||||||
$ time_out 8h loopy ./poke_server
|
$ time_out 8h loopy ./poke_server
|
||||||
|
@ -2137,7 +2141,8 @@ corresponding GNU B<sem> and GNU B<parallel> commands:
|
||||||
3$ for i in $(seq 1 100); do
|
3$ for i in $(seq 1 100); do
|
||||||
3$ lateral run -- command_still_outputs_but_wont_spam inputfile$i
|
3$ lateral run -- command_still_outputs_but_wont_spam inputfile$i
|
||||||
3$ done
|
3$ done
|
||||||
3$ lateral config -p 10; lateral wait # command output spam can commence
|
3$ # command output spam can commence
|
||||||
|
3$ lateral config -p 10; lateral wait
|
||||||
3$
|
3$
|
||||||
3$ for i in $(seq 1 100); do
|
3$ for i in $(seq 1 100); do
|
||||||
3$ echo "command inputfile$i" >> joblist
|
3$ echo "command inputfile$i" >> joblist
|
||||||
|
|
2
src/sql
2
src/sql
|
@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
||||||
exit ($err);
|
exit ($err);
|
||||||
|
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
$Global::version = 20190322;
|
$Global::version = 20190422;
|
||||||
$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
|
||||||
|
|
|
@ -161,7 +161,8 @@ par_k() {
|
||||||
parallel -j1 -kq echo "sleep 1; echo {}";
|
parallel -j1 -kq echo "sleep 1; echo {}";
|
||||||
echo "echo end") |
|
echo "echo end") |
|
||||||
stdout nice parallel -k -j0 |
|
stdout nice parallel -k -j0 |
|
||||||
grep -Ev 'No more file handles.|Raising ulimit -n'
|
grep -Ev 'No more file handles.|Raising ulimit -n' |
|
||||||
|
perl -pe '/parallel:/ and s/\d/X/g'
|
||||||
}
|
}
|
||||||
|
|
||||||
par_k_linebuffer() {
|
par_k_linebuffer() {
|
||||||
|
|
|
@ -466,7 +466,7 @@ cache_alignment : 64
|
||||||
address sizes : 38 bits physical, 48 bits virtual
|
address sizes : 38 bits physical, 48 bits virtual
|
||||||
power management:
|
power management:
|
||||||
";
|
";
|
||||||
# Core i7 Acer laptop
|
# Core i7-3632QM Acer laptop
|
||||||
cpuinfo2="
|
cpuinfo2="
|
||||||
processor : 0
|
processor : 0
|
||||||
vendor_id : GenuineIntel
|
vendor_id : GenuineIntel
|
||||||
|
@ -684,7 +684,7 @@ cache_alignment : 64
|
||||||
address sizes : 36 bits physical, 48 bits virtual
|
address sizes : 36 bits physical, 48 bits virtual
|
||||||
power management:
|
power management:
|
||||||
";
|
";
|
||||||
# Core i5 laptop firewall
|
# Core i5-2410M laptop firewall
|
||||||
cpuinfo3="
|
cpuinfo3="
|
||||||
processor : 0
|
processor : 0
|
||||||
vendor_id : GenuineIntel
|
vendor_id : GenuineIntel
|
||||||
|
@ -2221,13 +2221,13 @@ CPU revision : 4
|
||||||
";
|
";
|
||||||
test_one() {
|
test_one() {
|
||||||
export PARALLEL_CPUINFO="$1"
|
export PARALLEL_CPUINFO="$1"
|
||||||
echo $(ppar --number-of-sockets) \
|
echo $(parallel --number-of-sockets) \
|
||||||
$(ppar --number-of-cores) \
|
$(parallel --number-of-cores) \
|
||||||
$(ppar --number-of-threads) \
|
$(parallel --number-of-threads) \
|
||||||
$(ppar --number-of-cpus)
|
$(parallel --number-of-cpus)
|
||||||
}
|
}
|
||||||
export -f test_one
|
export -f test_one
|
||||||
ppar -j0 -0 -k --tagstring {2} test_one {1} \
|
parallel -j0 -0 -k --tagstring {2} test_one {1} \
|
||||||
::: "$cpuinfo1" "$cpuinfo2" "$cpuinfo3" "$cpuinfo4" "$cpuinfo5" "$cpuinfo6" "$cpuinfo7" \
|
::: "$cpuinfo1" "$cpuinfo2" "$cpuinfo3" "$cpuinfo4" "$cpuinfo5" "$cpuinfo6" "$cpuinfo7" \
|
||||||
:::+ "2-8-8-8" "1-4-8-4" "1-2-4-2" "1-2-2-2" "2-24-48-24" "1-2-2-2" "1-8-8-8"
|
:::+ "2-8-8-8" "1-4-8-4" "1-2-4-2" "1-2-2-2" "2-24-48-24" "1-2-2-2" "1-8-8-8"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,9 @@ unset TIMEOUT
|
||||||
env_parallel --session
|
env_parallel --session
|
||||||
|
|
||||||
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax ultrix minix irix hurd beaglebone cubieboard2"
|
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax ultrix minix irix hurd beaglebone cubieboard2"
|
||||||
# Skip irix until Perl is upgraded
|
# Skip ultrix
|
||||||
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax ultrix minix hurd beaglebone cubieboard2"
|
# Skip irix until Perl is upgraded (I cannot due to too small disk quota)
|
||||||
|
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax minix hurd beaglebone cubieboard2"
|
||||||
P="$P_ALL"
|
P="$P_ALL"
|
||||||
|
|
||||||
# tru64 takes 22s to run 4 parallels
|
# tru64 takes 22s to run 4 parallels
|
||||||
|
|
|
@ -27,8 +27,8 @@ par_interactive sleep 0.1; echo opt-p 2 ?...n
|
||||||
par_interactive sleep 0.1; echo opt-p 3 ?...y
|
par_interactive sleep 0.1; echo opt-p 3 ?...y
|
||||||
par_interactive spawn /tmp/parallel-script-for-expect
|
par_interactive spawn /tmp/parallel-script-for-expect
|
||||||
par_k ### Test -k
|
par_k ### Test -k
|
||||||
par_k parallel: Warning: Only enough file handles to run 8 jobs in parallel.
|
par_k parallel: Warning: Only enough file handles to run X jobs in parallel.
|
||||||
par_k parallel: Warning: Running 'parallel -j0 -N 8 --pipe parallel -j0' or
|
par_k parallel: Warning: Running 'parallel -jX -N X --pipe parallel -jX' or
|
||||||
par_k parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
|
par_k parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
|
||||||
par_k parallel: Warning: or /proc/sys/fs/file-max may help.
|
par_k parallel: Warning: or /proc/sys/fs/file-max may help.
|
||||||
par_k begin
|
par_k begin
|
||||||
|
|
|
@ -61,7 +61,7 @@ echo '### Check that 4 processes are really used'
|
||||||
echo '### --version must have higher priority than retired options'
|
echo '### --version must have higher priority than retired options'
|
||||||
### --version must have higher priority than retired options
|
### --version must have higher priority than retired options
|
||||||
$NICEPAR --version -g -Y -U -W -T | tail
|
$NICEPAR --version -g -Y -U -W -T | tail
|
||||||
GNU parallel 20190223
|
GNU parallel 20190422
|
||||||
Copyright (C) 2007-2019 Ole Tange and Free Software Foundation, Inc.
|
Copyright (C) 2007-2019 Ole Tange and Free Software 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.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
MAXTIME=50 RETRIES=3 MAXPROC=84 MAXINNERPROC=3
|
MAXTIME=50 RETRIES=3 MAXPROC=100 MAXINNERPROC=3
|
||||||
### Filter out working servers
|
### Filter out working servers
|
||||||
1d0
|
1d0
|
||||||
< openstep
|
< openstep
|
||||||
|
@ -6,10 +6,10 @@ MAXTIME=50 RETRIES=3 MAXPROC=84 MAXINNERPROC=3
|
||||||
< alpha
|
< alpha
|
||||||
7d4
|
7d4
|
||||||
< syllable
|
< syllable
|
||||||
28,31d24
|
28,29d24
|
||||||
< dragonfly
|
< dragonfly
|
||||||
< vax
|
< vax
|
||||||
< ultrix
|
31,34d25
|
||||||
< minix
|
< minix
|
||||||
33,34d25
|
33,34d25
|
||||||
< beaglebone
|
< beaglebone
|
||||||
|
@ -618,6 +618,16 @@ unixware UX:sh (/bin/sh): ERROR: source: Not found
|
||||||
### Does exporting a bash function make parallel fail?
|
### Does exporting a bash function make parallel fail?
|
||||||
If login shell is not bash compatible it fails
|
If login shell is not bash compatible it fails
|
||||||
|
|
||||||
|
cat <(echo bash only A)
|
||||||
|
cat <(echo bash only A)
|
||||||
|
bin/parallel funcA ::: 1
|
||||||
|
bin/parallel funcA ::: 1
|
||||||
|
export -f funcA;
|
||||||
|
export -f funcA;
|
||||||
|
funcA() {
|
||||||
|
funcA() {
|
||||||
|
}
|
||||||
|
}
|
||||||
aix bash only A
|
aix bash only A
|
||||||
aix test funcA
|
aix test funcA
|
||||||
centos bash only A
|
centos bash only A
|
||||||
|
|
|
@ -1205,7 +1205,7 @@ parallel: Error: echo is not a valid DBURL
|
||||||
cat num1000000 | parallel --pipe --block 2M wc
|
cat num1000000 | parallel --pipe --block 2M wc
|
||||||
999999 999999 9999999
|
999999 999999 9999999
|
||||||
85349 85349 597444
|
85349 85349 597444
|
||||||
cat num1000000 | parallel --pipe -j4 --round-robin wc
|
cat num1000000 | parallel --pipe -j4 --roundrobin wc
|
||||||
999999 999999 9999999
|
999999 999999 9999999
|
||||||
cat num1000000 | parallel --pipe -N140000 wc
|
cat num1000000 | parallel --pipe -N140000 wc
|
||||||
140000 140000 868895
|
140000 140000 868895
|
||||||
|
@ -1418,6 +1418,7 @@ The second finished running in the foreground
|
||||||
First started
|
First started
|
||||||
First done
|
First done
|
||||||
sem --id my_id -u 'echo Second started; sleep 10; echo Second done'
|
sem --id my_id -u 'echo Second started; sleep 10; echo Second done'
|
||||||
|
Second done
|
||||||
sem --jobs 3 --id my_id -u 'echo Start 1; sleep 5; echo 1 done' &&
|
sem --jobs 3 --id my_id -u 'echo Start 1; sleep 5; echo 1 done' &&
|
||||||
sem --jobs 3 --id my_id -u 'echo Start 2; sleep 6; echo 2 done' &&
|
sem --jobs 3 --id my_id -u 'echo Start 2; sleep 6; echo 2 done' &&
|
||||||
sem --jobs 3 --id my_id -u 'echo Start 3; sleep 7; echo 3 done' &&
|
sem --jobs 3 --id my_id -u 'echo Start 3; sleep 7; echo 3 done' &&
|
||||||
|
@ -1438,8 +1439,8 @@ Start 4
|
||||||
Slow started
|
Slow started
|
||||||
Forced running after 1 sec
|
Forced running after 1 sec
|
||||||
Slow ended
|
Slow ended
|
||||||
Give up after 2 secs
|
|
||||||
parallel: Warning: Semaphore timed out. Stealing the semaphore.
|
parallel: Warning: Semaphore timed out. Stealing the semaphore.
|
||||||
|
parallel: Warning: Semaphore timed out. Exiting.
|
||||||
parallel --help
|
parallel --help
|
||||||
Usage:
|
Usage:
|
||||||
|
|
||||||
|
@ -1515,7 +1516,9 @@ 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.
|
||||||
|
|
||||||
More about funding GNU Parallel and the citation notice:
|
More about funding GNU Parallel and the citation notice:
|
||||||
|
https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html
|
||||||
https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
||||||
|
https://git.savannah.gnu.org/cgit/parallel.git/tree/doc/citation-notice-faq.txt
|
||||||
|
|
||||||
If you send a copy of your published article to tange@gnu.org, it will be
|
If you send a copy of your published article to tange@gnu.org, it will be
|
||||||
mentioned in the release notes of next version of GNU Parallel.
|
mentioned in the release notes of next version of GNU Parallel.
|
||||||
|
|
Loading…
Reference in a new issue