Released as 20190322 ('FridayforFuture')

This commit is contained in:
Ole Tange 2019-03-21 23:27:39 +01:00
parent 0fa1bbff20
commit dbc36fb062
17 changed files with 405 additions and 76 deletions

23
NEWS
View file

@ -1,3 +1,26 @@
20190322
* SIGTERM is changed to SIGHUP, so sending SIGHUP will make GNU
Parallel start no more jobs, but wait for running jobs to finish.
* SIGTERM SIGTERM is changed to SIGTERM, so sending SIGTERM will make
GNU Parallel kill all running jobs.
* GNU Parallel now includes a cheat sheet: parallel_cheat.pdf
* High Throughput Computing on RMACC Summit and Beyond
https://calendar.colorado.edu/event/high_throughput_computing_on_rmacc_summit_and_beyond#.XH2NBhB7mV4
* 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.
20190222
* --shard makes it possible to send input to a the same jobslot based

12
README
View file

@ -44,9 +44,9 @@ document.
Full installation of GNU Parallel is as simple as:
wget https://ftpmirror.gnu.org/parallel/parallel-20190222.tar.bz2
bzip2 -dc parallel-20190222.tar.bz2 | tar xvf -
cd parallel-20190222
wget https://ftpmirror.gnu.org/parallel/parallel-20190322.tar.bz2
bzip2 -dc parallel-20190322.tar.bz2 | tar xvf -
cd parallel-20190322
./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
~/bin and ~/share:
wget https://ftpmirror.gnu.org/parallel/parallel-20190222.tar.bz2
bzip2 -dc parallel-20190222.tar.bz2 | tar xvf -
cd parallel-20190222
wget https://ftpmirror.gnu.org/parallel/parallel-20190322.tar.bz2
bzip2 -dc parallel-20190322.tar.bz2 | tar xvf -
cd parallel-20190322
./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel

20
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for parallel 20190310.
# Generated by GNU Autoconf 2.69 for parallel 20190322.
#
# Report bugs to <bug-parallel@gnu.org>.
#
@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20190310'
PACKAGE_STRING='parallel 20190310'
PACKAGE_VERSION='20190322'
PACKAGE_STRING='parallel 20190322'
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
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.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures parallel 20190310 to adapt to many kinds of systems.
\`configure' configures parallel 20190322 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1281,7 +1281,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20190310:";;
short | recursive ) echo "Configuration of parallel 20190322:";;
esac
cat <<\_ACEOF
@ -1357,7 +1357,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
parallel configure 20190310
parallel configure 20190322
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20190310, which was
It was created by parallel $as_me 20190322, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2237,7 +2237,7 @@ fi
# Define the identity of the package.
PACKAGE='parallel'
VERSION='20190310'
VERSION='20190322'
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
# values after options handling.
ac_log="
This file was extended by parallel $as_me 20190310, which was
This file was extended by parallel $as_me 20190322, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -2942,7 +2942,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
parallel config.status 20190310
parallel config.status 20190322
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20190310], [bug-parallel@gnu.org])
AC_INIT([parallel], [20190322], [bug-parallel@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([

View file

@ -1,8 +1,5 @@
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.
-- Aubrey Bailey @DNAvinci@twitter
Parallel is a life send, what an awesome piece of software.
-- Blaze9@reddit.com
@ -34,6 +31,10 @@ It's the MapReduce of our generation!
=== Used ===
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
With GNU Parallel you sure can!
I like getting things done

301
doc/promo
View file

@ -1,3 +1,304 @@
=head1 GNU Parallel 10 year anniversery - 2020-04-22
"""
Author: Ole Tange <ole@tange.dk>
Date: Thu Apr 22 01:23:00 2010 +0200
Name change: Parallel is now GNU Parallel.
Basic structure for sshlogin and sshloginfile.
"""
Wow. It has been 10 years since my parallel program was officially
renamed GNU Parallel. It has been quite a ride.
So it is a probably a good time to take stock.
=head2 The design
The user interface of GNU Parallel has changed very little during the
last 10 years. In total around 10 things have changed in a way that
was not backwards compatible - most of them corner cases that very few
use.
=head2 Videos
In 2010 one of the competitors was PPSS. My colleague, Hans Schou,
saw louwrentius' video showing off PPSS
(https://www.youtube.com/watch?v=32PwsARbePw) and nudged me to make my
own videos and most of the information in those still applies to the
newest version.
=head2 Complete rewrite
Before GNU Parallel was a GNU tool, it started as a wrapper around
`make -j`. But GNU Parallel grew, and was no longer just a small
hack. To make the code easier to maintain it was rewritten to object
orientation.
This would not have been possible if the test suite had not been so
thorough: It made it much easier to see if
=head2 --tollef
Tollef's parallel from moreutils was a headache: Before Tollef's
parallel was adopted by moreutils I tried getting Parallel adopted in
moreutils. So it was a bit of a disappointment seeing another program
called exactly the same included some months later.
--tollef was added to make GNU Parallel compatible with Tollef's
parallel, so that if you depended on Tollef's parallel, then you could
drop in GNU Parallel as a replacement.
I honestly don't think anyone used this. Ever. But it silenced the
argument that GNU Parallel would break existing usage.
Unfortunately distributions enabled --tollef by default and did not
stress this to the user. So users experienced no end of frustration
when the examples from GNU Parallel's man page did not work.
moreutils is now generally packaged with Tollef's parallel split off
into a separate package, and the frustration seems to be lower today.
=head2 GNU Paralel on NASA Pleiades supercomputer
In 2013 I stumbled on a happy surprise: NASA seemed to have installed
GNU Parallel on their Pleiades supercomputer.
https://web.archive.org/web/20130221072030/https://www.nas.nasa.gov/hecc/support/kb/using-gnu-parallel-to-package-multiple-jobs-in-a-single-pbs-job_303.html
"""On Pleiades, a copy of GNU parallel is available under /usr/bin."""
Pleiades was 16th on top500.org in 2013.
I have the feeling that GNU Parallel is also used on some of the
bigger supercomputers, but I have found no confirmation of that.
=head2 GNU Parallel on Termux and OpenWRT
At the other end of the system size is Termux on Android and OpenWRT
for accesspoints. GNU Parallel runs on both of them, and while I can
see why you might run GNU Parallel on an access point I still do not
know why you would do it on an Android device.
It is still cool that it can be done at all.
=head2 Attack on funding
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
this attack was from packagers that packaged GNU Parallel for Debian
and SuSE.
GNU Parallel is funded by me having a job. It is easier to get a well
paid job that will allow for maintaining GNU Parallel if GNU Parallel
is cited, because that proves the tool is useful for serious work.
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
email list how to make users aware that citing is how GNU Parallel is
financed and why this is important.
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
seconds.
Unfortunately in a misguided act of short term gain in popularity SuSE
and Debian did a disservice to free software and disabled this notice
in the version they currently distribute.
As GNU Parallel is free software they are allowed to fork the
software, but only if they make sure the forked version cannot be
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
still not resolved.
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
hurts free software by making it harder to justify spending time on
maintaining GNU Parallel. Not having GNU Parallel distributed by
Debian 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
notice there is an easy solution: "Don't like it? Don't use it." A
considerable amount of time has been spent on mapping the
alternatives, so there is really no excuse. See `man
parallel_alternatives`.
=head2 The GNU Parallel 2018 book
Hans Schou teased me by calling the man page "the book". In 2018 I
took the consequence of that and wrote a book. The book is available
online (https://doi.org/10.5281/zenodo.1146014) and in print
(http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html).
=head2 Cheatsheet
A lot of hours has been put into documentation, but the problem with
having a lot of documentation is that is can make some people think
the program is hard to use giving rise to the myth that "You have to
read a full book to be able to use GNU Parallel".
Several people noted that GNU Parallel was missing a cheat sheet. So
in 2019 a one page cheat sheet was included in the package.
=head2 Why all the options?
Instead of crappy wrapper scripts.
=head2 Convenience options --nice --basefile --transfer --return
--cleanup --tmux --group --compress --cat --fifo --workdir --tag
=head2 The May 1st incident
I was at a May 1st event for computer professionals where I sat at a
long table opposite a guy. At some point the discussion turned to
parallelism.
"I have found the brilliant program," he said. "It does everything if
you want to parallelize."
The more he explained the more certain was I that I knew this program
quite intimately.
"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?"
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.
=head2 Underappreciated functionality
=head3 env_parallel
When I was shown you could encode variables into a single variable and
move that to a remote system I was intrigued. But why stop at
variables? Why not include aliases, functions, and arrays?
env_parallel started out as a technical challenge: How much can be
copied transparently?
But it quickly got a more practical side: Why should you not be able
to use the variables, aliases and functions defined on the local
system just because you want to run jobs on a remote system?
=head3 parset
Some of GNU Parallel functionality is inspired by other people
problems: How could this problem be solved in general?
parset is one of those. It was inpired by a user who needed the output
from different jobs to be stored in different variables. The jobs were
slow and could be run in parallel. So while the running of the jobs
were clearly a task for GNU Parallel, the storing in variables was not
so clear.
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
artifical limits: It is much preferable to a bit slower if the outcome
is predictable - whether the output is a single word or some binary
data.
=head3 --embed
Some of the functionality is inspired by other tools. --embed is one
of those.
--embed was inspired by Lesser Parallel that in turn was inspired by
GNU Parallel. The major feature of Lesser Parallel is to be embedded
in any bash script. The developer will embed the code into his own
bash script and distribute this script.
So with --embed the users of the script will not have to install GNU
Parallel to run it.
=head3 --pipepart with --fifo
=head3 --bar
I see people using --bar too rarely. It is one of the easiest ways to
get a visual representation of when all the jobs are expected done.
=head3 Combining ::: with :::+
=head3 --rpl with dynamic replacement strings
=head3 --results with replacement strings
=head3 --tagstring with replacement strings
=head2 Feedback
Best ever
=head2 Live strong
On average there has been a new release of GNU Parallel every month
since 2010-04-24.
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
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
this, but since 2011 there has been a release every month around the
22nd.
The fixed release cycle means there has been more than 100 releases
making GNU Parallel in the top 5 of GNU tools with the most releases.
=head3 Naming releases
At the presenatation at FOSDEM (20110205) I found it might be fun to
give each release code name, so this release was named FOSDEM. After
the Japan release a naming convention started to emerge. And since
then each release has had a name related to an event in the past
month.
I will be honest: Some releases were easier to name than others.
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
make a happier world :)
=head3 Competitors
Apart from xargs no competitor has had the strength to live for 10
years. And even xargs has not had a steady release cycle with a new
release every month.
=head2 The next 10 years
Parallization has come to stay, and there are a lot of competitors to
GNU Parallel that do specialized tasks better. But I have a feeling
that there is room for a generalized tool like GNU Parallel also in 10
years.
=head1 top photos
http://www.flickr.com/photos/dexxus/5499821986/in/photostream/

View file

@ -207,25 +207,27 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20190322 (climatestrike FridayforFuture
Christchurch 'Max 8' fly i etiopien 737Max 8 indien pakistan Kashmir') released <<[stable]>>
Subject: GNU Parallel 20190322 ('FridayforFuture') released <<[stable]>>
GNU Parallel 20190322 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20190322 ('FridayforFuture') <<[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.>>
The change in signalling makes this release experimental for users that send SIGTERM to GNU Parallel.
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.
-- Aubrey Bailey @DNAvinci@twitter
New in this release:
* GNU Parallel now includes a cheat sheet: parallel_cheat.pdf
https://calendar.colorado.edu/event/high_throughput_computing_on_rmacc_summit_and_beyond#.XH2NBhB7mV4
* High Throughput Computing on RMACC Summit and Beyond https://calendar.colorado.edu/event/high_throughput_computing_on_rmacc_summit_and_beyond#.XH2NBhB7mV4
https://www.cheatography.com/cpriest/cheat-sheets/gnu-parallel/
* 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.

View file

@ -1,6 +1,6 @@
<directory name="parallel" rev="232" srcmd5="45591c7f6bfc52dfd9aa690a14a31a4c" vrev="2">
<entry md5="58a492714cee48a39d785e4efb597a83" mtime="1550870169" name="parallel-20190222.tar.bz2" size="1836447" />
<entry md5="dc24d3784e8be2bcd01dafbd7ee3b918" mtime="1550870135" name="parallel.spec" size="4667" />
<entry md5="9090ce7615a2d675f6b5d238ba5ffe41" mtime="1550870135" name="parallel_20190222.dsc" size="556" />
<entry md5="847f864bd968638882ddfc0d43bd2115" mtime="1550870136" name="parallel_20190222.tar.gz" size="2032210" />
<directory name="parallel" rev="235" srcmd5="b56edf537125f4d80264c18ceb6f0a1d" vrev="3">
<entry md5="bb69a30ebf19d93dda7b349d3ec6f09a" mtime="1553206993" name="parallel-20190322.tar.bz2" size="2010002" />
<entry md5="f1e16853c46c9fdd844562fbaf845aa4" mtime="1553206994" name="parallel.spec" size="4738" />
<entry md5="38056b999a4b5c6b32dc85be7359e4da" mtime="1553206501" name="parallel_20190322.dsc" size="556" />
<entry md5="f787b5e843add718eafeb06163e7e496" mtime="1553206502" name="parallel_20190322.tar.gz" size="2193783" />
</directory>

View file

@ -1,7 +1,7 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20190222
Version: 20190322
Release: 1.2
License: GPL
Group: Productivity/File utilities
@ -88,6 +88,7 @@ rm $RPM_BUILD_ROOT%{_docdir}/sem.pdf
rm $RPM_BUILD_ROOT%{_docdir}/sql.pdf
rm $RPM_BUILD_ROOT%{_docdir}/parcat.pdf
rm $RPM_BUILD_ROOT%{_docdir}/parset.pdf
rm $RPM_BUILD_ROOT%{_docdir}/parallel_cheat.pdf
%clean
rm -rf $RPM_BUILD_ROOT
@ -97,7 +98,7 @@ rm -rf $RPM_BUILD_ROOT
/usr/bin/*
/usr/share/man/man1/*
/usr/share/man/man7/*
%doc README NEWS src/parallel.html src/env_parallel.html src/parallel_tutorial.html src/parallel_design.html src/parallel_alternatives.html src/parallel_book.html src/sem.html src/sql.html src/parcat.html src/parset.html src/niceload.html src/parallel.texi src/env_parallel.texi src/parallel_tutorial.texi src/parallel_design.texi src/parallel_alternatives.texi src/parallel_book.texi src/niceload.texi src/sem.texi src/sql.texi src/parcat.texi src/parset.texi src/parallel.pdf src/env_parallel.pdf src/parallel_tutorial.pdf src/parallel_design.pdf src/parallel_alternatives.pdf src/parallel_book.pdf src/niceload.pdf src/sem.pdf src/sql.pdf src/parcat.pdf src/parset.pdf
%doc README NEWS src/parallel.html src/env_parallel.html src/parallel_tutorial.html src/parallel_design.html src/parallel_alternatives.html src/parallel_book.html src/sem.html src/sql.html src/parcat.html src/parset.html src/niceload.html src/parallel.texi src/env_parallel.texi src/parallel_tutorial.texi src/parallel_design.texi src/parallel_alternatives.texi src/parallel_book.texi src/niceload.texi src/sem.texi src/sql.texi src/parcat.texi src/parset.texi src/parallel.pdf src/env_parallel.pdf src/parallel_tutorial.pdf src/parallel_design.pdf src/parallel_alternatives.pdf src/parallel_book.pdf src/niceload.pdf src/sem.pdf src/sql.pdf src/parcat.pdf src/parset.pdf src/parallel_cheat.pdf
%changelog
* Sat Jan 22 2011 Ole Tange

View file

@ -1,7 +1,7 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20190222
Version: 20190322
Release: 1.2
License: GPL
Group: Productivity/File utilities
@ -88,6 +88,7 @@ rm $RPM_BUILD_ROOT%{_docdir}/sem.pdf
rm $RPM_BUILD_ROOT%{_docdir}/sql.pdf
rm $RPM_BUILD_ROOT%{_docdir}/parcat.pdf
rm $RPM_BUILD_ROOT%{_docdir}/parset.pdf
rm $RPM_BUILD_ROOT%{_docdir}/parallel_cheat.pdf
%clean
rm -rf $RPM_BUILD_ROOT
@ -97,7 +98,7 @@ rm -rf $RPM_BUILD_ROOT
/usr/bin/*
/usr/share/man/man1/*
/usr/share/man/man7/*
%doc README NEWS src/parallel.html src/env_parallel.html src/parallel_tutorial.html src/parallel_design.html src/parallel_alternatives.html src/parallel_book.html src/sem.html src/sql.html src/parcat.html src/parset.html src/niceload.html src/parallel.texi src/env_parallel.texi src/parallel_tutorial.texi src/parallel_design.texi src/parallel_alternatives.texi src/parallel_book.texi src/niceload.texi src/sem.texi src/sql.texi src/parcat.texi src/parset.texi src/parallel.pdf src/env_parallel.pdf src/parallel_tutorial.pdf src/parallel_design.pdf src/parallel_alternatives.pdf src/parallel_book.pdf src/niceload.pdf src/sem.pdf src/sql.pdf src/parcat.pdf src/parset.pdf
%doc README NEWS src/parallel.html src/env_parallel.html src/parallel_tutorial.html src/parallel_design.html src/parallel_alternatives.html src/parallel_book.html src/sem.html src/sql.html src/parcat.html src/parset.html src/niceload.html src/parallel.texi src/env_parallel.texi src/parallel_tutorial.texi src/parallel_design.texi src/parallel_alternatives.texi src/parallel_book.texi src/niceload.texi src/sem.texi src/sql.texi src/parcat.texi src/parset.texi src/parallel.pdf src/env_parallel.pdf src/parallel_tutorial.pdf src/parallel_design.pdf src/parallel_alternatives.pdf src/parallel_book.pdf src/niceload.pdf src/sem.pdf src/sql.pdf src/parcat.pdf src/parset.pdf src/parallel_cheat.pdf
%changelog
* Sat Jan 22 2011 Ole Tange

View file

@ -23,7 +23,7 @@
use strict;
use Getopt::Long;
$Global::progname="niceload";
$Global::version = 20190223;
$Global::version = 20190322;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -1695,7 +1695,7 @@ sub check_invalid_option_combinations() {
sub init_globals() {
# Defaults:
$Global::version = 20190223;
$Global::version = 20190322;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;

View file

@ -2076,7 +2076,7 @@ Only supported in B<Ash, Bash, Dash, Ksh, Sh, and Zsh>.
See also B<--env>, B<--record-env>.
=item B<--shard> I<shardkey> (alpha testing)
=item B<--shard> I<shardkey> (beta testing)
Use column I<shardkey> as shard key and shard input to the jobs.
@ -2152,7 +2152,7 @@ E.g.
B<--shebang-wrap> must be set as the first option.
=item B<--shellquote> (beta testing)
=item B<--shellquote>
Does not run the command but quotes it. Useful for making quoted
composed commands for GNU B<parallel>.
@ -4513,9 +4513,9 @@ GNU B<parallel> will then print the currently running jobs on stderr
If you regret starting a lot of jobs you can simply break GNU B<parallel>,
but if you want to make sure you do not have half-completed jobs you
should send the signal B<SIGTERM> to GNU B<parallel>:
should send the signal B<SIGHUP> to GNU B<parallel>:
killall -TERM parallel
killall -HUP parallel
This will tell GNU B<parallel> to not start any new jobs, but wait until
the currently running jobs are finished before exiting.
@ -4540,7 +4540,7 @@ shell.
B<Example:> If each of the jobs tests a solution and one of jobs finds
the solution the job can tell GNU B<parallel> not to start more jobs
by: B<kill -TERM $PARALLEL_PID>. This only works on the local
by: B<kill -HUP $PARALLEL_PID>. This only works on the local
computer.

View file

@ -495,7 +495,8 @@ B<--pipepart>/B<--pipe> should be done on the local machine inside B<--tmux>
=head2 Convenience options --nice --basefile --transfer --return
--cleanup --tmux --group --compress --cat --fifo --workdir
--cleanup --tmux --group --compress --cat --fifo --workdir --tag
--tagstring
These are all convenience options that make it easier to do a
task. But more importantly: They are tested to work on corner cases,

View file

@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20190223;
$Global::version = 20190322;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -204,24 +204,24 @@ par_shellquote csh \\\\\\\\ "\
par_shellquote csh "\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote tcsh \\\\\\\\ "\
par_shellquote tcsh "\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_sigterm ### Test SIGTERM
par_sigterm 1
par_sigterm 10
par_sigterm 2
par_sigterm 3
par_sigterm 4
par_sigterm 5
par_sigterm 6
par_sigterm 7
par_sigterm 8
par_sigterm 9
par_sigterm parallel: SIGTERM received. No new jobs will be started.
par_sigterm parallel: Waiting for these 5 jobs to finish. Send SIGTERM again to stop now.
par_sigterm parallel: sleep 15; echo 10
par_sigterm parallel: sleep 15; echo 6
par_sigterm parallel: sleep 15; echo 7
par_sigterm parallel: sleep 15; echo 8
par_sigterm parallel: sleep 15; echo 9
par_sighup ### Test SIGHUP
par_sighup 1
par_sighup 10
par_sighup 2
par_sighup 3
par_sighup 4
par_sighup 5
par_sighup 6
par_sighup 7
par_sighup 8
par_sighup 9
par_sighup parallel: SIGHUP received. No new jobs will be started.
par_sighup parallel: Waiting for these 5 jobs to finish. Send SIGTERM to stop now.
par_sighup parallel: sleep 15; echo 10
par_sighup parallel: sleep 15; echo 6
par_sighup parallel: sleep 15; echo 7
par_sighup parallel: sleep 15; echo 8
par_sighup parallel: sleep 15; echo 9
par_test_detected_shell ### bug #42913: Dont use $SHELL but the shell currently running
par_test_detected_shell test_unknown_shell ash Global::shell /bin/bash
par_test_detected_shell test_unknown_shell bash Global::shell /bin/bash

View file

@ -49,19 +49,22 @@ par_exitval_signal exitval=128+6 OK
par_exitval_signal signal OK
par_keeporder_roundrobin bug #50081: --keep-order --round-robin should give predictable results
par_keeporder_roundrobin OK
par_kill_hup ### Are children killed if GNU Parallel receives HUP? There should be no sleep at the end
par_kill_hup bash-+-perl---2*[bash---sleep]
par_kill_hup `-pstree
par_kill_hup parallel: SIGHUP received. No new jobs will be started.
par_kill_hup parallel: Waiting for these 2 jobs to finish. Send SIGTERM to stop now.
par_kill_hup parallel: bash -c 'sleep 1 & pid=$!; wait $pid'
par_kill_hup parallel: bash -c 'sleep 1 & pid=$!; wait $pid'
par_kill_hup bash---pstree
par_kill_int_twice ### Are children killed if GNU Parallel receives INT twice? There should be no sleep at the end
par_kill_int_twice bash-+-perl---bash---sleep
par_kill_int_twice `-pstree
par_kill_int_twice bash---pstree
par_kill_term_twice ### Are children killed if GNU Parallel receives TERM twice? There should be no sleep at the end
par_kill_term_twice bash-+-perl---bash---sleep
par_kill_term_twice `-pstree
par_kill_term_twice parallel: SIGTERM received. No new jobs will be started.
par_kill_term_twice parallel: Waiting for these 1 jobs to finish. Send SIGTERM again to stop now.
par_kill_term_twice parallel: bash -c 'sleep 120 & pid=$!; wait $pid' 1
par_kill_term_twice bash-+-perl---bash---sleep
par_kill_term_twice `-pstree
par_kill_term_twice bash---pstree
par_kill_term ### Are children killed if GNU Parallel receives TERM? There should be no sleep at the end
par_kill_term bash-+-perl---bash---sleep
par_kill_term `-pstree
par_kill_term bash---pstree
par_lb_mem_usage 1
par_lb_mem_usage 1
par_lb_mem_usage 2
@ -80,10 +83,6 @@ par_nice Check that --nice works
par_nice load_10
par_nice bzip2 18
par_nice bzip2 18
par_nice parallel: SIGTERM received. No new jobs will be started.
par_nice parallel: Waiting for these 2 jobs to finish. Send SIGTERM again to stop now.
par_nice parallel: bzip2 < /dev/zero
par_nice parallel: bzip2 < /dev/zero
par_pipe_unneeded_procs ### Test bug #34241: --pipe should not spawn unneeded processes
par_pipe_unneeded_procs 1
par_pipe_unneeded_procs 2