parallel: Partial Reuse licensing support.

This commit is contained in:
Ole Tange 2021-03-22 21:16:35 +01:00
parent 7f9cdda185
commit eba8a4d13e
130 changed files with 1264 additions and 758 deletions

View file

@ -1,13 +1,6 @@
#!/bin/bash
true <<'EOF'
<p>
Copyright (C) 2013-2020 Ole Tange and Free Software Foundation, Inc.
<p>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3 of
the License, or (at your option) any later version.
<p>
This script downloads the latest version of GNU Parallel, checks
the signature and installs it.
@ -33,6 +26,15 @@ true <<'EOF'
<br><br><br><br>
EOF
# SPDX-FileCopyrightText: 2013-2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 3 of
# the License, or (at your option) any later version.
run() {
# FreeBSD prefers 'fetch', MacOS prefers 'curl', Linux prefers 'wget'
get=$(
@ -43,11 +45,11 @@ run() {
echo 'No lynx, wget, curl, fetch: Please inform parallel@gnu.org what you use for downloading URLs' >&2
)
if test "$get" = ""; then
exit 1
exit 1
fi
if ! perl -e 1; then
echo No perl installed. GNU Parallel depends on perl. Install perl and retry.
echo No perl installed. GNU Parallel depends on perl. Install perl and retry.
exit 1
fi
@ -66,7 +68,7 @@ run() {
if gpg -h 2>/dev/null >/dev/null ; then
# GnuPG installed
# Setup .gnupg/gpg.conf if not already done
echo | gpg 2>/dev/null >/dev/null
echo | gpg 2>/dev/null >/dev/null
if gpg --list-keys 0xFFFFFFF1 && gpg --list-keys 0x88888888 ; then
echo Keys fetched
# OK
@ -90,12 +92,12 @@ run() {
echo "Cannot fetch keyID 0xFFFFFFF1, so the signature cannot be checked."
return 1
fi
fi
fi
else
# GnuPG not installed
echo
echo "GnuPG (gpg) is not installed so the signature cannot be checked."
return 1
return 1
fi
}
@ -104,7 +106,7 @@ run() {
if gpg --with-fingerprint "$latest".tar.bz2.sig 2>&1 |
perl -e 'exit not grep /^Primary key fingerprint: BE9C B493 81DE 3166 A3BC 66C1 2C62 29E2 FFFF FFF1|^Primary key fingerprint: CDA0 1A42 08C4 F745 0610 7E7B D1AB 4516 8888 8888/, <>'; then
# Source code signed by Ole Tange <ole@tange.dk>
# KeyID FFFFFFF1/88888888
# KeyID FFFFFFF1/88888888
true
else
# GnuPG signature failed
@ -116,17 +118,17 @@ run() {
exit 1
fi
else
# GnuPG not installed or public keys not downloaded
# GnuPG not installed or public keys not downloaded
echo "This means that if the code has been changed by criminals, you will not discover that!"
echo
echo "Continue anyway? (y/n)"
echo "Continue anyway? (y/n)"
read YN </dev/tty
if test "$YN" = "n"; then
# Stop
exit 2
else
# Continue
true
true
fi
fi
@ -165,7 +167,7 @@ run() {
# Add $HOME/share/man to $MANPATH for both bash and csh
echo 'export MANPATH=$MANPATH:$HOME/share/man' >> "$HOME"/.bashrc
echo 'setenv MANPATH ${MANPATH}:${HOME}/share/man' >> "$HOME"/.cshrc
fi
fi
fi
}

View file

@ -1,3 +1,7 @@
# SPDX-FileCopyrightText: 2002-2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
SUBDIRS = src
test:
@ -119,6 +123,22 @@ monitorman:
# If man page changed: open new pdfman
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &'
reuse:
rm -rf /tmp/reuse
mkdir /tmp/reuse
git commit -a -m dummy
(wd=`pwd`; \
cd /tmp/reuse; \
git clone "$$wd"; \
reuse lint || \
(echo Use; \
echo ' reuse addheader --copyright="Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc." --license="GPL-3.0-or-later" source-files'; \
echo or; \
echo ' reuse addheader --copyright="Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc." --license="GPL-3.0-or-later" --explicit-license bin-files' \
) )
git reset HEAD~ >/dev/null
git commit -c ORIG_HEAD >/dev/null
testurls:
mkdir -p urls
cd urls && grep -v '(dead)' ../src/* | grep -h -Po 'https?://[^ $$<>")}]+' | perl -pe 's/(&gt|\{).*//;s/\\-/-/g;s/\\n//g;s/&amp;/&/g;s/&#.*//;'"s/'.*//" | grep -Ev 'parallel-(20)?$$|coolwebsite.biz' | sort -u | egrep -v 'example.com|##|\*\(' | parallel -j0 --timeout 33 --bar --tag --joblog joblog --retries 3 neno wget -m -l1 -Q1 '{=$$_=Q($$_)=}'

View file

@ -13,6 +13,10 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
# SPDX-FileCopyrightText: 2002-2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@ -870,6 +874,22 @@ monitorman:
# If man page changed: open new pdfman
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &'
reuse:
rm -rf /tmp/reuse
mkdir /tmp/reuse
git commit -a -m dummy
(wd=`pwd`; \
cd /tmp/reuse; \
git clone "$$wd"; \
reuse lint || \
(echo Use; \
echo ' reuse addheader --copyright="Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc." --license="GPL-3.0-or-later" source-files'; \
echo or; \
echo ' reuse addheader --copyright="Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc." --license="GPL-3.0-or-later" --explicit-license bin-files' \
) )
git reset HEAD~ >/dev/null
git commit -c ORIG_HEAD >/dev/null
testurls:
mkdir -p urls
cd urls && grep -v '(dead)' ../src/* | grep -h -Po 'https?://[^ $$<>")}]+' | perl -pe 's/(&gt|\{).*//;s/\\-/-/g;s/\\n//g;s/&amp;/&/g;s/&#.*//;'"s/'.*//" | grep -Ev 'parallel-(20)?$$|coolwebsite.biz' | sort -u | egrep -v 'example.com|##|\*\(' | parallel -j0 --timeout 33 --bar --tag --joblog joblog --retries 3 neno wget -m -l1 -Q1 '{=$$_=Q($$_)=}'

37
NEWS
View file

@ -1,3 +1,40 @@
20210322
* Bug fixes and man page updates.
News about GNU Parallel:
* The very first version of Parallel dated 2002-01-06 was found in an
old backup:
#!/usr/bin/perl
$processes=shift;
chomp(@jobs=<>);
for (@jobs) {
$jobnr++;
push @makefile,
(".PHONY : job$jobnr\n",
"job$jobnr :\n",
"\t$_\n");
}
unshift @makefile, "all : ",(map { "job$_ " } 1 .. $jobnr),"\n";
open (MAKE, "| make -k -f - -j $processes") || die;
print MAKE @makefile;
close MAKE;
* Introduction to GNU Parallel
https://www.youtube.com/watch?v=Kj-6JkAqw-8
* Using GNU Parallel with GooseSLURM
https://readthedocs.org/projects/gooseslurm/downloads/pdf/latest/#chapter.7
* Why GNU-parallel?
https://github.com/lijingbu/omics/blob/main/why_gnu_parallel.md
20210222
* --filter only run jobs where the filter is true. The filter can

6
configure vendored
View file

@ -10,6 +10,12 @@
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##

View file

@ -121,7 +121,10 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html
=== Used ===
GNU Parallel is a priceless timesaver
GNU Parallel is my new favorite thing
-- Will Tejeda @thewilltejeda
GNU Parallel is a priceless timesaver
-- June "Wakalix" @TWakalix@twitter
I think many people would be surprised to learn that GNU parallel is

View file

@ -98,7 +98,8 @@ cp src/parallel.html ../parallel-web/parallel/man.html
pushd ../parallel-web/parallel
# Bug at Savannah makes this take 30 seconds
(cd ..; cvs -z3 -d:ext:tange@cvs.savannah.gnu.org:/web/parallel co parallel)
(cd ..;
torsocks cvs -z3 -d:ext:tange@cvs.savannah.gnu.org:/web/parallel co parallel)
torsocks cvs up
torsocks cvs ci -m "New release"
pushd
@ -148,6 +149,12 @@ Modified => alpha
make testurls
== Check REUSE ==
make reuse
https://api.reuse.software/info/git.savannah.gnu.org/git/parallel
https://api.reuse.software/status/git.savannah.gnu.org/git/parallel
== Update Savannah ==
@ -194,9 +201,9 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20210222 ('AngSangSuKyi<<>>') released <<[stable]>>
Subject: GNU Parallel 20210322 ('Sarkozy/Sarah Everard/AstraZeneca/ Meghan<<>>') released <<[stable]>>
GNU Parallel 20210222 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20210322 ('2002-01-06') <<[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.>>
@ -206,43 +213,42 @@ It does not have to be as detailed as Juan's. It is perfectly fine if you just s
Quote of the month:
GNU Parallel is a priceless timesaver
-- June "Wakalix" @TWakalix@twitter
GNU Parallel is my new favorite thing
-- Will Tejeda @thewilltejeda
New in this release:
* --filter only run jobs where the filter is true. The filter can contain replacement strings and Perl code such as: '{1} < {2}+1'
* --template takes a text file as a template with replacement strings. Then it replaces the replacement strings and saves it under a new filename.
* --plus implements {0%} {0#} replacement string for zero padded slot and sequence.
* Warn that you probably mean -d '\r\n' if the first 3 values end in \r\n (DOS newline).
* {= perlexpression =} must return the same value, if run twice on the same input.
* Man pages available as .rst-format.
* Bug fixes and man page updates.
News about GNU Parallel:
* A short tutorial on Gnu Parallel https://www.polarmicrobes.org/a-short-tutorial-on-gnu-parallel/
* The very first version of Parallel dated 2002-01-06 was found in an
old backup:
* 5 reasons why I love coding on Linux https://opensource.com/article/21/2/linux-programming
#!/usr/bin/perl
* Simple Tutorial to install & use GNU Parallel https://medium.com/analytics-vidhya/simple-tutorial-to-install-use-gnu-parallel-79251120d618
$processes=shift;
* LiDO3 - first contact https://www.lido.tu-dortmund.de/cms/de/LiDO3/LiDO3_first_contact_handout.pdf
chomp(@jobs=<>);
for (@jobs) {
$jobnr++;
push @makefile,
(".PHONY : job$jobnr\n",
"job$jobnr :\n",
"\t$_\n");
}
unshift @makefile, "all : ",(map { "job$_ " } 1 .. $jobnr),"\n";
open (MAKE, "| make -k -f - -j $processes") || die;
print MAKE @makefile;
close MAKE;
* Rill Stage 2-1: Ways of command-line data analysis https://blog.jastix.biz/post/rill-stage-2-1-cli-data-analysis/
* Introduction to GNU Parallel https://www.youtube.com/watch?v=Kj-6JkAqw-8
* Introduction to GNU Parallel https://blog.knoldus.com/introduction-to-gnu-parallel/
* Using GNU Parallel with GooseSLURM https://readthedocs.org/projects/gooseslurm/downloads/pdf/latest/#chapter.7
* GNU Parallel https://www.hahwul.com/cullinan/parallel/
* <<>>
* Why GNU-parallel?
https://github.com/lijingbu/omics/blob/main/why_gnu_parallel.md
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html

451
fdl.txt
View file

@ -1,451 +0,0 @@
GNU Free Documentation License
Version 1.3, 3 November 2008
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
<http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as "you". You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies of
the Document to the public.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no
other conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to
give them a chance to provide you with an updated version of the
Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled "History" in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements"
or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy
that is included in the collection, provided that you follow the rules
of this License for verbatim copying of each of the documents in all
other respects.
You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a
copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation. If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.
11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
"Massive Multiauthor Collaboration" (or "MMC") contained in the site
means any set of copyrightable works thus published on the MMC site.
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
"Incorporate" means to publish or republish a Document, in whole or in
part, as part of another Document.
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole or
in part into the MMC, (1) had no cover texts or invariant sections, and
(2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {
# based on env_parallel.sh
@ -382,7 +385,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20210222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20210223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {
# env_parallel.bash
@ -384,7 +387,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20210222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20210223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
set _parallel_exit_CODE=0
if ("`alias env_parallel`" == '' || ! $?PARALLEL_CSH) then

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {
# based on env_parallel.sh
@ -382,7 +385,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20210222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20210223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# If you are a fisherman feel free to improve the code
#

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {
# env_parallel.ksh
@ -365,7 +368,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20210222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20210223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {
# env_parallel.mksh
@ -368,7 +371,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20210222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20210223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {
# env_parallel.pdksh

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=encoding utf8
=head1 NAME
@ -824,11 +828,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
=head2 Documentation license I
Permission is granted to copy, distribute and/or modify this documentation
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the file fdl.txt.
Permission is granted to copy, distribute and/or modify this
documentation under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
file LICENSES/GFDL-1.3-or-later.txt.
=head2 Documentation license II
@ -911,7 +917,8 @@ license terms of this work.
=back
A copy of the full license is included in the file as cc-by-sa.txt.
A copy of the full license is included in the file as
LICENCES/CC-BY-SA-4.0.txt
=head1 DEPENDENCIES

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {
# env_parallel.sh

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
set _parallel_exit_CODE=0
if ("`alias env_parallel`" == '' || ! $?PARALLEL_CSH) then

View file

@ -24,6 +24,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {
# env_parallel.zsh
@ -359,7 +362,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20210222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20210223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -19,11 +19,14 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
use strict;
use Getopt::Long;
$Global::progname="niceload";
$Global::version = 20210222;
$Global::version = 20210223;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=head1 NAME
niceload - slow down a program when the load average is above a certain limit
@ -325,11 +329,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
=head2 Documentation license I
Permission is granted to copy, distribute and/or modify this documentation
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the file fdl.txt.
Permission is granted to copy, distribute and/or modify this
documentation under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
file LICENSES/GFDL-1.3-or-later.txt.
=head2 Documentation license II
@ -412,7 +417,9 @@ license terms of this work.
=back
A copy of the full license is included in the file as cc-by-sa.txt.
A copy of the full license is included in the file as
LICENCES/CC-BY-SA-4.0.txt
=head1 DEPENDENCIES

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=encoding utf8
=head1 NAME
@ -299,7 +303,7 @@ directory (if any) and extension removed.
To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{=>I<perl expression>B<=}> (alpha testing)
=item B<{=>I<perl expression>B<=}> (beta testing)
Replace with calculated I<perl expression>. B<$_> will contain the
same as B<{}>. After evaluating I<perl expression> B<$_> will be used
@ -869,7 +873,7 @@ Implies B<--pipe> unless B<--pipepart> is used.
See also: B<--cat>.
=item B<--filter> I<filter> (alpha testing)
=item B<--filter> I<filter> (beta testing)
Only run jobs where I<filter> is true. I<filter> can contain
replacement strings and Perl code. Example:
@ -1107,9 +1111,9 @@ B<--header :> is an alias for B<--header '.*\n'>.
If I<regexp> is a number, it is a fixed number of lines.
=item B<--hostgroups> (beta testing)
=item B<--hostgroups>
=item B<--hgrp> (beta testing)
=item B<--hgrp>
Enable hostgroups on arguments. If an argument contains '@' the string
after '@' will be removed and treated as a list of hostgroups on which
@ -1369,9 +1373,9 @@ mix. Compare:
See also: B<--group> B<--ungroup>
=item B<--xapply> (alpha testing)
=item B<--xapply> (beta testing)
=item B<--link> (alpha testing)
=item B<--link> (beta testing)
Link input sources. Read multiple input sources like B<xapply>. If
multiple input sources are given, one argument will be read from each
@ -1446,7 +1450,7 @@ should retry a given job.
See also: B<--memsuspend>
=item B<--memsuspend> I<size> (beta testing)
=item B<--memsuspend> I<size>
Suspend jobs when there is less than 2 * I<size> memory free. The
I<size> can be postfixed with K, M, G, T, P, k, m, g, t, or p which
@ -2634,9 +2638,9 @@ Silent. The job to be run will not be printed. This is the default.
Can be reversed with B<-v>.
=item B<--template> I<file>=I<repl> (alpha testing)
=item B<--template> I<file>=I<repl> (beta testing)
=item B<--tmpl> I<file>=I<repl> (alpha testing)
=item B<--tmpl> I<file>=I<repl> (beta testing)
Copy I<file> to I<repl>. All replacement strings in the contents of
I<file> will be replaced. All replacement strings in the name I<repl>
@ -3149,7 +3153,7 @@ solution is to quote the whole command:
parallel "zcat {} >{.}" ::: *.gz
Other special shell characters (such as * ; $ > < | >> <<) also need
Other special shell characters (such as * ; $ > < | >> <<) also need
to be put in quotes, as they may otherwise be interpreted by the shell
and not given to GNU B<parallel>.
@ -4690,14 +4694,16 @@ changes.
There is a a small issue when using GNU B<parallel> as queue
system/batch manager: You have to submit JobSlot number of jobs before
they will start, and after that you can submit one at a time, and job
will start immediately if free slots are available. Output from the
running or completed jobs are held back and will only be printed when
JobSlots more jobs has been started (unless you use --ungroup or
will start immediately if free slots are available.
Output from the running or completed jobs are held back and will only
be printed when the next job is started (unless you use --ungroup or
--line-buffer, in which case the output from the jobs are printed
immediately). E.g. if you have 10 jobslots then the output from the
first completed job will only be printed when job 11 has started, and
the output of second completed job will only be printed when job 12
has started.
immediately).
E.g. if you have 10 jobslots then the output from the first completed
job will only be printed when job 11 has started, and the output of
second completed job will only be printed when job 12 has started.
=head2 EXAMPLE: GNU Parallel as dir processor
@ -4952,7 +4958,7 @@ Dir where GNU B<parallel> stores config files, semaphores, and caches
information between invocations. Default: $HOME/.parallel.
=item $PARALLEL_ARGHOSTGROUPS (beta testing)
=item $PARALLEL_ARGHOSTGROUPS
When using B<--hostgroups> GNU B<parallel> sets this to the hostgroups
of the job.
@ -5320,6 +5326,11 @@ not exist with PostgreSQL.
Report bugs to <bug-parallel@gnu.org> or
https://savannah.gnu.org/bugs/?func=additem&group=parallel
When you write your report, please keep in mind, that you must give
the reader enough information to be able to run exactly what you
run. So you need to include all data and programs that you use to
show the problem.
See a perfect bug report on
https://lists.gnu.org/archive/html/bug-parallel/2015-01/msg00000.html
@ -5348,17 +5359,22 @@ https://stackoverflow.com/help/mcve).
It should be a complete example that others can run which shows the
problem including all files needed to run the example. This should
preferably be small and simple, so try to remove as many options as
possible. A combination of B<yes>, B<seq>, B<cat>, B<echo>, B<wc>, and
B<sleep> can reproduce most errors. If your example requires large
files, see if you can make them with something like B<seq 100000000> >
B<bigfile> or B<yes | head -n 1000000000> > B<file>. If you need
multiple columns: B<paste <(seq 1000) <(seq 1000 1999)>
possible.
A combination of B<yes>, B<seq>, B<cat>, B<echo>, B<wc>, and B<sleep>
can reproduce most errors.
If your example requires large files, see if you can make them with
something like B<seq 100000000> > B<bigfile> or B<yes | head -n
1000000000> > B<file>. If you need multiple columns: B<paste <(seq
1000) <(seq 1000 1999)>
If your example requires remote execution, see if you can use
B<localhost> - maybe using another login.
If you have access to a different system (maybe a VirtualBox on your
own machine), test if the MCVE shows the problem on that system.
own machine), test if your MCVE shows the problem on that system. If
it does not, read below.
=item *
@ -5391,6 +5407,31 @@ important you give any information that help. In general the problem
will be fixed faster and with less work for you if you can reproduce
the error on a VirtualBox.
=head2 In summary
Your report must include:
=over 2
=item *
B<parallel --version>
=item *
output + error message
=item *
full example including all files
=item *
VirtualBox image, if you cannot reproduce it on other systems
=back
=head1 AUTHOR
@ -5430,11 +5471,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
=head2 Documentation license I
Permission is granted to copy, distribute and/or modify this documentation
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the file fdl.txt.
Permission is granted to copy, distribute and/or modify this
documentation under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
file LICENSES/GFDL-1.3-or-later.txt.
=head2 Documentation license II
@ -5517,7 +5559,8 @@ license terms of this work.
=back
A copy of the full license is included in the file as cc-by-sa.txt.
A copy of the full license is included in the file as
LICENCES/CC-BY-SA-4.0.txt
=head1 DEPENDENCIES

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=encoding utf8
=head1 NAME
@ -27,86 +31,184 @@ years.
The following features are in some of the comparable tools:
B<Inputs>
I1. Arguments can be read from stdin
I2. Arguments can be read from a file
I3. Arguments can be read from multiple files
I4. Arguments can be read from command line
I5. Arguments can be read from a table
I6. Arguments can be read from the same file using #! (shebang)
I7. Line oriented input as default (Quoting of special chars not needed)
=head3 Inputs
B<Manipulation of input>
M1. Composed command
M2. Multiple arguments can fill up an execution line
M3. Arguments can be put anywhere in the execution line
M4. Multiple arguments can be put anywhere in the execution line
M5. Arguments can be replaced with context
M6. Input can be treated as the complete command line
=over
B<Outputs>
O1. Grouping output so output from different jobs do not mix
O2. Send stderr (standard error) to stderr (standard error)
O3. Send stdout (standard output) to stdout (standard output)
O4. Order of output can be same as order of input
O5. Stdout only contains stdout (standard output) from the command
O6. Stderr only contains stderr (standard error) from the command
O7. Buffering on disk
O8. Cleanup of temporary files if killed
O9. Test if disk runs full during run
O10. Output of a line bigger than 4 GB
=item I1. Arguments can be read from stdin
B<Execution>
E1. Running jobs in parallel
E2. List running jobs
E3. Finish running jobs, but do not start new jobs
E4. Number of running jobs can depend on number of cpus
E5. Finish running jobs, but do not start new jobs after first failure
E6. Number of running jobs can be adjusted while running
E7. Only spawn new jobs if load is less than a limit
=item I2. Arguments can be read from a file
B<Remote execution>
R1. Jobs can be run on remote computers
R2. Basefiles can be transferred
R3. Argument files can be transferred
R4. Result files can be transferred
R5. Cleanup of transferred files
R6. No config files needed
R7. Do not run more than SSHD's MaxStartups can handle
R8. Configurable SSH command
R9. Retry if connection breaks occasionally
=item I3. Arguments can be read from multiple files
B<Semaphore>
S1. Possibility to work as a mutex
S2. Possibility to work as a counting semaphore
=item I4. Arguments can be read from command line
B<Legend>
- = no
x = not applicable
ID = yes
=item I5. Arguments can be read from a table
=item I6. Arguments can be read from the same file using #! (shebang)
=item I7. Line oriented input as default (Quoting of special chars not needed)
=back
=head3 Manipulation of input
=over
=item M1. Composed command
=item M2. Multiple arguments can fill up an execution line
=item M3. Arguments can be put anywhere in the execution line
=item M4. Multiple arguments can be put anywhere in the execution line
=item M5. Arguments can be replaced with context
=item M6. Input can be treated as the complete command line
=back
=head3 Outputs
=over
=item O1. Grouping output so output from different jobs do not mix
=item O2. Send stderr (standard error) to stderr (standard error)
=item O3. Send stdout (standard output) to stdout (standard output)
=item O4. Order of output can be same as order of input
=item O5. Stdout only contains stdout (standard output) from the command
=item O6. Stderr only contains stderr (standard error) from the command
=item O7. Buffering on disk
=item O8. Cleanup of temporary files if killed
=item O9. Test if disk runs full during run
=item O10. Output of a line bigger than 4 GB
=back
=head3 Execution
=over
=item E1. Running jobs in parallel
=item E2. List running jobs
=item E3. Finish running jobs, but do not start new jobs
=item E4. Number of running jobs can depend on number of cpus
=item E5. Finish running jobs, but do not start new jobs after first failure
=item E6. Number of running jobs can be adjusted while running
=item E7. Only spawn new jobs if load is less than a limit
=back
=head3 Remote execution
=over
=item R1. Jobs can be run on remote computers
=item R2. Basefiles can be transferred
=item R3. Argument files can be transferred
=item R4. Result files can be transferred
=item R5. Cleanup of transferred files
=item R6. No config files needed
=item R7. Do not run more than SSHD's MaxStartups can handle
=item R8. Configurable SSH command
=item R9. Retry if connection breaks occasionally
=back
=head3 Semaphore
=over
=item S1. Possibility to work as a mutex
=item S2. Possibility to work as a counting semaphore
=back
=head3 Legend
=over
=item - = no
=item x = not applicable
=item ID = yes
=back
As every new version of the programs are not tested the table may be
outdated. Please file a bug report if you find errors (See REPORTING
BUGS).
parallel:
I1 I2 I3 I4 I5 I6 I7
M1 M2 M3 M4 M5 M6
O1 O2 O3 O4 O5 O6 O7 O8 O9 O10
E1 E2 E3 E4 E5 E6 E7
R1 R2 R3 R4 R5 R6 R7 R8 R9
S1 S2
=over
=item I1 I2 I3 I4 I5 I6 I7
=item M1 M2 M3 M4 M5 M6
=item O1 O2 O3 O4 O5 O6 O7 O8 O9 O10
=item E1 E2 E3 E4 E5 E6 E7
=item R1 R2 R3 R4 R5 R6 R7 R8 R9
=item S1 S2
=back
=head2 DIFFERENCES BETWEEN xargs AND GNU Parallel
Summary (see legend above):
I1 I2 - - - - -
- M2 M3 - - -
- O2 O3 - O5 O6
E1 - - - - - -
- - - - - x - - -
- -
=over
=item I1 I2 - - - - -
=item - M2 M3 - - -
=item - O2 O3 - O5 O6
=item E1 - - - - - -
=item - - - - - x - - -
=item - -
=back
B<xargs> offers some of the same possibilities as GNU B<parallel>.
@ -197,12 +299,22 @@ https://www.gnu.org/software/findutils/
=head2 DIFFERENCES BETWEEN find -exec AND GNU Parallel
Summary (see legend above):
- - - x - x -
- M2 M3 - - - -
- O2 O3 O4 O5 O6
- - - - - - -
- - - - - - - - -
x x
=over
=item - - - x - x -
=item - M2 M3 - - - -
=item - O2 O3 O4 O5 O6
=item - - - - - - -
=item - - - - - - - - -
=item x x
=back
B<find -exec> offers some of the same possibilities as GNU B<parallel>.
@ -216,12 +328,22 @@ https://www.gnu.org/software/findutils/ (Last checked: 2019-01)
=head2 DIFFERENCES BETWEEN make -j AND GNU Parallel
Summary (see legend above):
- - - - - - -
- - - - - -
O1 O2 O3 - x O6
E1 - - - E5 -
- - - - - - - - -
- -
=over
=item - - - - - - -
=item - - - - - -
=item O1 O2 O3 - x O6
=item E1 - - - E5 -
=item - - - - - - - - -
=item - -
=back
B<make -j> can run jobs in parallel, but requires a crafted Makefile
to do this. That results in extra quoting to get filenames containing
@ -239,12 +361,22 @@ https://www.gnu.org/software/make/ (Last checked: 2019-01)
=head2 DIFFERENCES BETWEEN ppss AND GNU Parallel
Summary (see legend above):
I1 I2 - - - - I7
M1 - M3 - - M6
O1 - - x - -
E1 E2 ?E3 E4 - - -
R1 R2 R3 R4 - - ?R7 ? ?
- -
=over
=item I1 I2 - - - - I7
=item M1 - M3 - - M6
=item O1 - - x - -
=item E1 E2 ?E3 E4 - - -
=item R1 R2 R3 R4 - - ?R7 ? ?
=item - -
=back
B<ppss> is also a tool for running jobs in parallel.
@ -324,12 +456,22 @@ https://github.com/louwrentius/PPSS
=head2 DIFFERENCES BETWEEN pexec AND GNU Parallel
Summary (see legend above):
I1 I2 - I4 I5 - -
M1 - M3 - - M6
O1 O2 O3 - O5 O6
E1 - - E4 - E6 -
R1 - - - - R6 - - -
S1 -
=over
=item I1 I2 - I4 I5 - -
=item M1 - M3 - - M6
=item O1 O2 O3 - O5 O6
=item E1 - - E4 - E6 -
=item R1 - - - - R6 - - -
=item S1 -
=back
B<pexec> is also a tool for running jobs in parallel.
@ -647,12 +789,22 @@ https://github.com/cheusov/paexec
=head2 DIFFERENCES BETWEEN map(sitaramc) AND GNU Parallel
Summary (see legend above):
I1 - - I4 - - (I7)
M1 (M2) M3 (M4) M5 M6
- O2 O3 - O5 - - N/A N/A O10
E1 - - - - - -
- - - - - - - - -
- -
=over
=item I1 - - I4 - - (I7)
=item M1 (M2) M3 (M4) M5 M6
=item - O2 O3 - O5 - - N/A N/A O10
=item E1 - - - - - -
=item - - - - - - - - -
=item - -
=back
(I7): Only under special circumstances. See below.
@ -1963,12 +2115,22 @@ https://github.com/fd0/machma (Last checked: 2019-06)
=head2 DIFFERENCES BETWEEN interlace AND GNU Parallel
Summary (see legend above):
- I2 I3 I4 - - -
M1 - M3 - - M6
- O2 O3 - - - - x x
E1 E2 - - - - -
- - - - - - - - -
- -
=over
=item - I2 I3 I4 - - -
=item M1 - M3 - - M6
=item - O2 O3 - - - - x x
=item E1 E2 - - - - -
=item - - - - - - - - -
=item - -
=back
B<interlace> is built for network analysis to run network tools in parallel.
@ -2340,12 +2502,22 @@ https://github.com/amritb/with-this.git (Last checked: 2019-03)
=head2 DIFFERENCES BETWEEN Tollef's parallel (moreutils) AND GNU Parallel
Summary (see legend above):
- - - I4 - - I7
- - M3 - - M6
- O2 O3 - O5 O6 - x x
E1 - - - - - E7
- x x x x x x x x
- -
=over
=item - - - I4 - - I7
=item - - M3 - - M6
=item - O2 O3 - O5 O6 - x x
=item E1 - - - - - E7
=item - x x x x x x x x
=item - -
=back
=head3 EXAMPLES FROM Tollef's parallel MANUAL
@ -2366,12 +2538,22 @@ B<GNU> parallel -j 3 ::: ls df "echo hi"
=head2 DIFFERENCES BETWEEN rargs AND GNU Parallel
Summary (see legend above):
I1 - - - - - I7
- - M3 M4 - -
- O2 O3 - O5 O6 - O8 -
E1 - - E4 - - -
- - - - - - - - -
- -
=over
=item I1 - - - - - I7
=item - - M3 M4 - -
=item - O2 O3 - O5 O6 - O8 -
=item E1 - - E4 - - -
=item - - - - - - - - -
=item - -
=back
B<rargs> has elegant ways of doing named regexp capture and field ranges.
@ -2425,12 +2607,22 @@ https://github.com/lotabout/rargs (Last checked: 2020-01)
=head2 DIFFERENCES BETWEEN threader AND GNU Parallel
Summary (see legend above):
I1 - - - - - -
M1 - M3 - - M6
O1 - O3 - O5 - - N/A N/A
E1 - - E4 - - -
- - - - - - - - -
- -
=over
=item I1 - - - - - -
=item M1 - M3 - - M6
=item O1 - O3 - O5 - - N/A N/A
=item E1 - - E4 - - -
=item - - - - - - - - -
=item - -
=back
Newline separates arguments, but newline at the end of file is treated
as an empty argument. So this runs 2 jobs:
@ -2447,12 +2639,22 @@ https://github.com/voodooEntity/threader (Last checked: 2020-04)
=head2 DIFFERENCES BETWEEN runp AND GNU Parallel
Summary (see legend above):
I1 I2 - - - - -
M1 - (M3) - - M6
O1 O2 O3 - O5 O6 - N/A N/A -
E1 - - - - - -
- - - - - - - - -
- -
=over
=item I1 I2 - - - - -
=item M1 - (M3) - - M6
=item O1 O2 O3 - O5 O6 - N/A N/A -
=item E1 - - - - - -
=item - - - - - - - - -
=item - -
=back
(M3): You can add a prefix and a postfix to the input, so it means you can
only insert the argument on the command line once.
@ -2575,12 +2777,22 @@ https://github.com/jreisinger/runp (Last checked: 2020-04)
=head2 DIFFERENCES BETWEEN papply AND GNU Parallel
Summary (see legend above):
- - - I4 - - -
M1 - M3 - - M6
- - O3 - O5 - - N/A N/A O10
E1 - - E4 - - -
- - - - - - - - -
- -
=over
=item - - - I4 - - -
=item M1 - M3 - - M6
=item - - O3 - O5 - - N/A N/A O10
=item E1 - - E4 - - -
=item - - - - - - - - -
=item - -
=back
B<papply> does not print the output if the command fails:
@ -2621,12 +2833,22 @@ https://pypi.org/project/papply/ (Last checked: 2020-04)
=head2 DIFFERENCES BETWEEN async AND GNU Parallel
Summary (see legend above):
- - - I4 - - I7
- - - - - M6
- O2 O3 - O5 O6 - N/A N/A O10
E1 - - E4 - E6 -
- - - - - - - - -
S1 S2
=over
=item - - - I4 - - I7
=item - - - - - M6
=item - O2 O3 - O5 O6 - N/A N/A O10
=item E1 - - E4 - E6 -
=item - - - - - - - - -
=item S1 S2
=back
B<async> is very similary to GNU B<parallel>'s B<--semaphore> mode
(aka B<sem>). B<async> requires the user to start a server process.
@ -2698,12 +2920,22 @@ https://github.com/ctbur/async/ (Last checked: 2020-11)
=head2 DIFFERENCES BETWEEN pardi AND GNU Parallel
Summary (see legend above):
I1 I2 - - - - I7
M1 - - - - M6
O1 O2 O3 O4 O5 - O7 - - O10
E1 - - E4 - - -
- - - - - - - - -
- -
=over
=item I1 I2 - - - - I7
=item M1 - - - - M6
=item O1 O2 O3 O4 O5 - O7 - - O10
=item E1 - - E4 - - -
=item - - - - - - - - -
=item - -
=back
B<pardi> is very similar to B<parallel --pipe --cat>: It reads blocks
of data and not arguments. So it cannot insert an argument in the
@ -2756,12 +2988,22 @@ https://github.com/UnixJunkie/pardi (Last checked: 2021-01)
=head2 DIFFERENCES BETWEEN bthread AND GNU Parallel
Summary (see legend above):
- - - I4 - - -
- - - - - M6
O1 - O3 - - - O7 O8 - -
E1 - - - - - -
- - - - - - - - -
- -
=over
=item - - - I4 - - -
=item - - - - - M6
=item O1 - O3 - - - O7 O8 - -
=item E1 - - - - - -
=item - - - - - - - - -
=item - -
=back
B<bthread> takes around 1 sec per MB of output. The maximal output
line length is 1073741759.
@ -2775,12 +3017,22 @@ https://gitlab.com/netikras/bthread (Last checked: 2021-01)
=head2 DIFFERENCES BETWEEN simple_gpu_scheduler AND GNU Parallel
Summary (see legend above):
I1 - - - - - I7
M1 - - - - M6
- O2 O3 - - O6 - x x O10
E1 - - - - - -
- - - - - - - - -
- -
=over
=item I1 - - - - - I7
=item M1 - - - - M6
=item - O2 O3 - - O6 - x x O10
=item E1 - - - - - -
=item - - - - - - - - -
=item - -
=back
=head3 EXAMPLES FROM simple_gpu_scheduler MANUAL
@ -2888,12 +3140,22 @@ https://github.com/eviatarbach/parasweep (Last checked: 2021-01)
=head2 DIFFERENCES BETWEEN parallel-bash AND GNU Parallel
Summary (see legend above):
I1 I2 - - - - -
- - M3 - - M6
- O2 O3 - O5 O6 - O8 x O10
E1 - - - - - -
- - - - - - - - -
- -
=over
=item I1 I2 - - - - -
=item - - M3 - - M6
=item - O2 O3 - O5 O6 - O8 x O10
=item E1 - - - - - -
=item - - - - - - - - -
=item - -
=back
B<parallel-bash> is written in pure bash. It is really fast (overhead
of ~0.05 ms/job compared to GNU B<parallel>'s ~3 ms/job). So if your
@ -2954,6 +3216,10 @@ https://github.com/themattrix/bash-concurrent
=head2 Todo
https://github.com/mylanconnolly/parallel
https://github.com/krashanoff/parallel
https://github.com/Nukesor/pueue
https://arxiv.org/pdf/2012.15443.pdf KumQuat
@ -2978,7 +3244,32 @@ http://manpages.ubuntu.com/manpages/xenial/man1/tsp.1.html
http://vicerveza.homeunix.net/~viric/soft/ts/
https://github.com/chapmanjacobd/que
https://github.com/ExpectationMax/simple_gpu_scheduler
simple_gpu_scheduler --gpus 0 1 2 < gpu_commands.txt
parallel -j3 --shuf CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1 =} {=uq;=}' < gpu_commands.txt
simple_hypersearch "python3 train_dnn.py --lr {lr} --batch_size {bs}" -p lr 0.001 0.0005 0.0001 -p bs 32 64 128 | simple_gpu_scheduler --gpus 0,1,2
parallel --header : --shuf -j3 -v CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1 =}' python3 train_dnn.py --lr {lr} --batch_size {bs} ::: lr 0.001 0.0005 0.0001 ::: bs 32 64 128
simple_hypersearch "python3 train_dnn.py --lr {lr} --batch_size {bs}" --n-samples 5 -p lr 0.001 0.0005 0.0001 -p bs 32 64 128 | simple_gpu_scheduler --gpus 0,1,2
parallel --header : --shuf CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1; seq() > 5 and skip() =}' python3 train_dnn.py --lr {lr} --batch_size {bs} ::: lr 0.001 0.0005 0.0001 ::: bs 32 64 128
touch gpu.queue
tail -f -n 0 gpu.queue | simple_gpu_scheduler --gpus 0,1,2 &
echo "my_command_with | and stuff > logfile" >> gpu.queue
touch gpu.queue
tail -f -n 0 gpu.queue | parallel -j3 CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1 =} {=uq;=}' &
# Needed to fill job slots once
seq 3 | parallel echo true >> gpu.queue
# Add jobs
echo "my_command_with | and stuff > logfile" >> gpu.queue
# Needed to flush output from completed jobs
seq 3 | parallel echo true >> gpu.queue
https://github.com/Overv/outrun#outrun
=head1 TESTING OTHER TOOLS
@ -3246,11 +3537,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
=head2 Documentation license I
Permission is granted to copy, distribute and/or modify this documentation
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the file fdl.txt.
Permission is granted to copy, distribute and/or modify this
documentation under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
file LICENSES/GFDL-1.3-or-later.txt.
=head2 Documentation license II
@ -3333,7 +3625,8 @@ license terms of this work.
=back
A copy of the full license is included in the file as cc-by-sa.txt.
A copy of the full license is included in the file as
LICENCES/CC-BY-SA-4.0.txt
=head1 DEPENDENCIES

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=encoding utf8
=head1 Why should you read this book?

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=encoding utf8
options as wrapper scripts

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=head1 GNU Parallel Tutorial
This tutorial shows off much of GNU B<parallel>'s functionality. The
@ -3161,7 +3165,8 @@ https://my.fsf.org/donate/
=back
(C) 2013-2021 Ole Tange, FDLv1.3 (See fdl.txt)
(C) 2013-2021 Ole Tange, GFDLv1.3+ (See
LICENSES/GFDL-1.3-or-later.txt)
=cut

View file

@ -1,5 +1,26 @@
#!/usr/bin/perl
# Copyright (C) 2016-2021 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
use Symbol qw(gensym);
use IPC::Open3;
use POSIX qw(:errno_h);

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=head1 NAME
parcat - cat files or fifos in parallel
@ -87,11 +91,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
=head2 Documentation license I
Permission is granted to copy, distribute and/or modify this documentation
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the file fdl.txt.
Permission is granted to copy, distribute and/or modify this
documentation under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
file LICENSES/GFDL-1.3-or-later.txt.
=head2 Documentation license II
@ -170,7 +175,9 @@ license terms of this work.
=back
A copy of the full license is included in the file as cc-by-sa.txt.
A copy of the full license is included in the file as
LICENCES/CC-BY-SA-4.0.txt
=head1 DEPENDENCIES

View file

@ -17,6 +17,9 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
grepq() {
# grep -q for systems without -q

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=encoding utf8
=head1 NAME
@ -211,11 +215,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
=head2 Documentation license I
Permission is granted to copy, distribute and/or modify this documentation
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the file fdl.txt.
Permission is granted to copy, distribute and/or modify this
documentation under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
file LICENSES/GFDL-1.3-or-later.txt.
=head2 Documentation license II
@ -298,8 +303,8 @@ license terms of this work.
=back
A copy of the full license is included in the file as cc-by-sa.txt.
A copy of the full license is included in the file as
LICENCES/CC-BY-SA-4.0.txt
=head1 DEPENDENCIES

View file

@ -1,5 +1,8 @@
#!/usr/bin/perl
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
=pod
=head1 NAME
@ -118,7 +121,7 @@ GetOptions(
"help" => \$opt::dummy,
) || exit(255);
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
$Global::version = 20210222;
$Global::version = 20210223;
if($opt::version) { version(); exit 0; }
@Global::sortoptions =
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);

View file

@ -1,5 +1,9 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GFDL-1.3-or-later
# SPDX-License-Identifier: CC-BY-SA-4.0
=head1 NAME
sem - semaphore for executing shell command lines in parallel
@ -265,11 +269,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
=head2 Documentation license I
Permission is granted to copy, distribute and/or modify this documentation
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the file fdl.txt.
Permission is granted to copy, distribute and/or modify this
documentation under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
file LICENSES/GFDL-1.3-or-later.txt.
=head2 Documentation license II
@ -352,7 +357,9 @@ license terms of this work.
=back
A copy of the full license is included in the file as cc-by-sa.txt.
A copy of the full license is included in the file as
LICENCES/CC-BY-SA-4.0.txt
=head1 DEPENDENCIES

38
src/sql
View file

@ -1,5 +1,29 @@
#!/usr/bin/perl -w
# Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
#
# Copyright (C) 2010-2021 Ole Tange, http://ole.tange.dk and
# Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2008-2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-License-Identifier: GFDL-1.3-or-later
=head1 NAME
sql - execute a command on a database determined by a dburl
@ -361,11 +385,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
=head2 Documentation license I
Permission is granted to copy, distribute and/or modify this documentation
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the file fdl.txt.
Permission is granted to copy, distribute and/or modify this
documentation under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
file LICENSES/GFDL-1.3-or-later.txt.
=head2 Documentation license II
@ -574,7 +600,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20210222;
$Global::version = 20210223;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -99,7 +99,7 @@ startvm:
parallel --tag -k 'ping -w 1 -c 1 {} || (cd vagrant/*/{} && vagrant up; wssh vagrant@{} echo {} is up)' ::: centos8 freebsd11 freebsd12 rhel8 centos3 &
stopvm:
parallel --tag -k 'ping -w 1 -c 1 {} && cd vagrant/*/{} && vagrant suspend' ::: centos8 freebsd11 freebsd12 rhel8 centos3
parallel --tag -k 'ping -w 1 -c 1 {} && cd vagrant/*/{} && vagrant suspend' ::: centos8 freebsd11 freebsd12 rhel8 centos3 || true
startdb:
true TODO should start Oracle in vagrant

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo '### Test niceload -q'
niceload -q perl -e '$a = "works";$b="This $a\n"; print($b);'
echo

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo '### Test niceload exit code'
niceload "perl -e 'exit(3)'" ; echo $? eq 3
niceload "perl -e 'exit(0)'" ; echo $? eq 0

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# force load > 10
while uptime | grep -v age:.[1-9]\\+[0-9].[0-9][0-9] >/dev/null ; do
(timeout 5 nice perl -e 'while(1){}' 2>/dev/null &)

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
cp /bin/sleep /tmp/mysleep
killall -9 mysleep 2>/dev/null

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
unset TIMEOUT
. `which env_parallel.bash`
env_parallel --session

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo "### These tests requires VirtualBox running with the following images"
echo 'vagrant@centos3'

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo "### These tests requires VirtualBox running with the following images"
SERVER1=freebsd11
SSHUSER1=vagrant

View file

@ -1,3 +1,7 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Moved to parallel-local-100s.sh

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple jobs that never fails
# Each should be taking 0.3-1s and be possible to run in parallel
# I.e.: No race conditions, no logins

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple jobs that never fails
# Each should be taking 100-300s and be possible to run in parallel
# I.e.: No race conditions, no logins

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple jobs that never fails
# Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple jobs that never fails
# Each should be taking 1-3s and be possible to run in parallel
# I.e.: No race conditions, no logins

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple jobs that never fails
# Each should be taking >300s and be possible to run in parallel
# I.e.: No race conditions, no logins

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple jobs that never fails
# Each should be taking 30-100s and be possible to run in parallel
# I.e.: No race conditions, no logins

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple jobs that never fails
# Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins
@ -165,6 +169,7 @@ par_totaljob_repl() {
parallel -k -N7 --plus echo {#} {##} ::: {1..14}
parallel -k -N7 --plus echo {#} {##} ::: {1..15}
parallel -k -S 8/: -X --plus echo {#} {##} ::: {1..15}
parallel -k --plus -j 10 echo '{0#}/{##}:{0%}' ::: {1..5} ::: {1..4}
}
par_jobslot_repl() {

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Force load 12 in 10 seconds
seq 12 |
stdout parallel --nice 11 --timeout 10 -j0 -N0 "bzip2 < /dev/zero" > /dev/null &

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
make stopvm >/dev/null 2>/dev/null
TMPDIR=${TMPDIR:-/tmp}
mkdir -p $TMPDIR

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
setup() {
tmp=$(tempfile)
perl -pe 's/\n/\n\0/' >$tmp <<EOF

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
par_sem_dir() {
echo '### bug #58985: sem stall if .parallel/semaphores is chmod 0'
chmod 0 ~/.parallel/semaphores

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# These fail regularly
#par_ctrlz_should_suspend_children() {

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
export SQLITE=sqlite3:///%2Frun%2Fshm%2Fparallel.db
export PG=pg://`whoami`:`whoami`@lo/`whoami`
export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami`

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# GNU Parallel SQL tests
# The tests must be able to run in parallel

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# GNU Parallel SQL tests
# The tests must be able to run in parallel

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# SSH only allowed to localhost/lo
rm -rf tmp
mkdir tmp

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# /tmp/parallel-local-ssh2 will by default be owned by me and should be writable by *@localhost
chmod 777 "$TMPDIR" 2>/dev/null

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# SSH only allowed to localhost/lo
par_trailing_space_sshlogin() {

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
unset run_test
unset run_once

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# SSH only allowed to localhost/lo
par_autossh() {

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# At most 2 parallel sshs per function
export SSHLOGIN1=parallel@lo

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo '### test --env _, env_parallel for different shells'
#

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Each test should at most run 1 ssh against parallel@lo or lo
par_transfer_special_char_names() {

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
par_ash_embed() {
myscript=$(cat <<'_EOF'
echo '--embed'

View file

@ -1,10 +1,15 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Test all UTF-8 chars
all_utf8() {
cat <<'EOF' | perl -pe 's/\s/\0/g;'
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ …  
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó
Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć
@ -4615,7 +4620,8 @@ N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u
􏾅 􏾆 􏾇 􏾈 􏾉 􏾊 􏾋 􏾌 􏾍 􏾎 􏾏 􏾐 􏾑 􏾒 􏾓 􏾔 􏾕 􏾖 􏾗 􏾘 􏾙 􏾚 􏾛 􏾜 􏾝 􏾞 􏾟 􏾠 􏾡 􏾢 􏾣 􏾤 􏾥 􏾦 􏾧 􏾨 􏾩 􏾪 􏾫 􏾬 􏾭 􏾮 􏾯 􏾰 􏾱 􏾲 􏾳 􏾴 􏾵 􏾶 􏾷
􏾸 􏾹 􏾺 􏾻 􏾼 􏾽 􏾾 􏾿 􏿀 􏿁 􏿂 􏿃 􏿄 􏿅 􏿆 􏿇 􏿈 􏿉 􏿊 􏿋 􏿌 􏿍 􏿎 􏿏 􏿐 􏿑 􏿒 􏿓 􏿔 􏿕 􏿖 􏿗 􏿘 􏿙 􏿚 􏿛 􏿜 􏿝 􏿞 􏿟 􏿠 􏿡 􏿢 􏿣 􏿤 􏿥 􏿦 􏿧 􏿨 􏿩 􏿪
􏿫 􏿬 􏿭 􏿮 􏿯 􏿰 􏿱 􏿲 􏿳 􏿴 􏿵 􏿶 􏿷 􏿸 􏿹 􏿺 􏿻 􏿼 􏿽
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ …  
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó
Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć
@ -5801,7 +5807,8 @@ N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u
𝝲 𝝳 𝝴 𝝵 𝝶 𝝷 𝝸 𝝹 𝝺 𝝻 𝝼 𝝽 𝝾 𝝿 𝞀 𝞁 𝞂 𝞃 𝞄 𝞅 𝞆 𝞇 𝞈 𝞉 𝞊 𝞋 𝞌 𝞍 𝞎 𝞏 𝞐 𝞑 𝞒 𝞓 𝞔 𝞕 𝞖 𝞗 𝞘 𝞙 𝞚 𝞛 𝞜 𝞝 𝞞 𝞟 𝞠 𝞡 𝞢 𝞣 𝞤
𝞥 𝞦 𝞧 𝞨 𝞩 𝞪 𝞫 𝞬 𝞭 𝞮 𝞯 𝞰 𝞱 𝞲 𝞳 𝞴 𝞵 𝞶 𝞷 𝞸 𝞹 𝞺 𝞻 𝞼 𝞽 𝞾 𝞿 𝟀 𝟁 𝟂 𝟃 𝟄 𝟅 𝟆 𝟇 𝟈 𝟉 𝟎 𝟏 𝟐 𝟑 𝟒 𝟓 𝟔 𝟕 𝟖 𝟗 𝟘 𝟙 𝟚 𝟛
𝟜 𝟝 𝟞 𝟟 𝟠 𝟡 𝟢 𝟣 𝟤 𝟥 𝟦 𝟧 𝟨 𝟩 𝟪 𝟫 𝟬 𝟭 𝟮 𝟯 𝟰 𝟱 𝟲 𝟳 𝟴 𝟵 𝟶 𝟷 𝟸 𝟹 𝟺 𝟻 𝟼 𝟽 𝟾 𝟿
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ …  
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó
Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć
@ -7835,11 +7842,13 @@ N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u
芑 芋 芝 劳 花 芳 芽 苦 𦬼 若 茝 荣 莭 茣 莽 菧 著 荓 菊 菌 菜 𦰶 𦵫 𦳕 䔫 蓱 蓳 蔖 𧏊 蕤 𦼬 䕝 䕡 𦾱 𧃒 䕫 虐 虜 虧 虩 蚩 蚈 蜎 蛢 蝹 蜨 蝫 螆 䗗 蟡 蠁
䗹 衠 衣 𧙧 裗 裞 䘵 裺 㒻 𧢮 𧥦 䚾 䛇 誠 諭 變 豕 𧲨 貫 賁 贛 起 𧼯 𠠄 跋 趼 跰 𠣞 軔 輸 𨗒 𨗭 邔 郱 鄑 𨜮 鄛 鈸 鋗 鋘 鉼 鏹 鐕 𨯺 開 䦕 閷 𨵷 䧦 雃 嶲
霣 𩅅 𩈚 䩮 䩶 韠 𩐊 䪲 𩒖 頋 頋 頩 𩖶 飢 䬳 餩 馧 駂 駾 䯎 𩬰 鬒 鱀 鳽 䳎 䳭 鵧 𪃎 䳸 𪄅 𪈎 𪊑 麻 䵖 黹 黾 鼅 鼏 鼖 鼻 𪘀
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ …  
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó
Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ …  
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó
Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć
@ -7897,7 +7906,8 @@ N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u
ཁ ག གྷ ང ཅ ཆ ཇ ཉ ཊ ཋ ཌ ཌྷ ཎ ཏ ཐ ད དྷ ན པ ཕ བ བྷ མ ཙ ཚ ཛ ཛྷ ཝ ཞ ཟ འ ཡ ར ལ ཤ ཥ ས ཧ ཨ ཀྵ ཪ ཱ ི ཱི ུ ཱུ ྲྀ ཷ ླྀ ཹ ེ
ཻ ོ ཽ ཾ ཿ ྀ ཱྀ ྂ ྃ ྄ ྅ ྆ ྇ ྈ ྉ ྊ ྋ ྐ ྑ ྒ ྒྷ ྔ ྕ ྖ ྗ ྙ ྚ ྛ ྜ ྜྷ ྞ ྟ ྠ ྡ ྡྷ ྣ ྤ ྥ ྦ ྦྷ ྨ ྩ ྪ ྫ ྫྷ ྭ ྮ ྯ ྰ ྱ ྲ
ླ ྴ ྵ ྶ ྷ ྸ ྐྵ ྺ ྻ ྼ ྾ ྿ ࿀ ࿁ ࿂ ࿃ ࿄ ࿅ ࿆ ࿇ ࿈ ࿉ ࿊ ࿋ ࿌ ࿏ ࿐ ࿑
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ …  
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó
Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 -r
echo moved to parallel-local-1s.sh

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo '### Test with old perl libs'
# Old libraries are put into input-files/perllib
PERL5LIB=input-files/perllib:../input-files/perllib; export PERL5LIB

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
rm -rf tmp 2>/dev/null
cd input-files
tar xjf random_dirs_no_newline.tar.bz2

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
TMP=/run/shm/parallel_local105
rm -rf $TMP 2>/dev/null
mkdir -p $TMP

View file

@ -1,4 +1,5 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 -r
echo "### bug #41482: --pipe --compress blocks at different -j/seq combinations"
seq 1 | parallel -k -j2 --compress -N1 -L1 --pipe cat;

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
rm -f ~/.parallel/will-cite
resize=`resize`

View file

@ -1,2 +1,5 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -1,5 +1,9 @@
#!/bin/bash -x
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo '### Tests from xargs'
rsync -Ha --delete input-files/xargs-inputs/ tmp/

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Make a dir that is easy to fill up
SHM=/tmp/shm/parallel-local14
mkdir -p $SHM

View file

@ -1,2 +1,5 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
TMP=/run/shm/parallel_$$
rsync -Ha --delete input-files/testdir/ $TMP/

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
rsync -Ha --delete input-files/segfault/ tmp/
cd tmp

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo "### test global config - must run alone so the global config does not confuse others"
echo "### test --tollef in global config"
echo /etc/parallel/config | sudo parallel "mkdir -p /etc/parallel; echo --tollef > "

View file

@ -1,3 +1,5 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -1,2 +1,5 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# -L1 will join lines ending in ' '
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 -r

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
par_space() {
echo '### Test --env - https://savannah.gnu.org/bugs/?37351'
export TWOSPACES=' 2 spaces '

View file

@ -1,2 +1,5 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
cpuburn=$(tempfile)
(echo '#!/usr/bin/perl'
echo "eval{setpriority(0,0,9)}; while(1){}") > $cpuburn

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo '### Test of #! --shebang'
cat >/tmp/shebang <<EOF
#!/usr/local/bin/parallel --shebang -rk echo

View file

@ -1,5 +1,8 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
par_basic_shebang_wrap() {
echo "### Test basic --shebang-wrap"

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 -r
echo '### Test of xargs -m command lines > 130k';
seq 1 60000 | parallel -m -j1 echo a{}b{}c | tee >(wc >/tmp/awc$$) >(sort | md5sum) >/tmp/a$$;

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
rm -rf tmp 2>/dev/null
cp -a input-files/testdir2 tmp

View file

@ -1,4 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
cat <<'EOF' | sed -e 's/;$/; /;' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 -r
echo '### -L -n with pipe'

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo '### Test --pipe'
# Make some pseudo random input that stays the same
seq 1 1000000 >/tmp/parallel-seq

View file

@ -1,2 +1,5 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
par_tmux_filter() {
# /tmp/parallel-local7/tmsOU2Ig
perl -pe 's:(/tmp\S+/tms).....:$1XXXXX:;s/ p\d+/pID/;'

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
par_dummy() { true; }
export -f $(compgen -A function | grep par_)

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
PAR="nice nice parallel -j2 --pipe --keeporder --block 150000 --tmpdir=/dev/shm"
export PAR
XAP="nice nice parallel --xapply"

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo '### Test --env all chars except \n,\92,\160 - single and double - no output is good'
# 92 and 160 are special for csh

View file

@ -1,5 +1,9 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
. `which env_parallel.bash`
env_parallel --session

Some files were not shown because too many files have changed in this diff Show more