mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-12-22 12:47:54 +00:00
parallel: Give better error message if file not found when using --pipepart.
This commit is contained in:
parent
eac8944b1d
commit
73f554ad8f
|
@ -23,18 +23,12 @@
|
|||
# $ bash install.sh
|
||||
|
||||
run() {
|
||||
# tail on openindiana must be /usr/xpg4/bin/tail
|
||||
tail=$(echo | tail -n 1 2>/dev/null && echo tail ||
|
||||
(echo | /usr/xpg4/bin/tail -n 1 && echo /usr/xpg4/bin/tail))
|
||||
# grep on openindiana must be /usr/xpg4/bin/grep
|
||||
grep=$(echo | grep -vE . 2>/dev/null && echo grep ||
|
||||
(echo | /usr/xpg4/bin/grep -vE . && echo /usr/xpg4/bin/grep))
|
||||
# FreeBSD prefers 'fetch', MacOS prefers 'curl', Linux prefers 'wget'
|
||||
get=$(
|
||||
(lynx -source /dev/null && echo lynx -source) ||
|
||||
(fetch -o /dev/null file:///bin/sh && echo fetch -o -) ||
|
||||
(curl -h >/dev/null && echo curl -L) ||
|
||||
(wget -h >/dev/null && echo wget -qO -) ||
|
||||
(wget -h >/dev/null && echo wget -qO -) ||
|
||||
echo 'No lynx, wget, curl, fetch: Please inform parallel@gnu.org what you use for downloading URLs' >&2
|
||||
)
|
||||
if test "$get" = ""; then
|
||||
|
@ -42,17 +36,17 @@ run() {
|
|||
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
|
||||
|
||||
LANG=C
|
||||
latest=$($get http://ftpmirror.gnu.org/parallel |
|
||||
perl -ne '/.*(parallel-\d{8})/ and print $1."\n"' |
|
||||
sort | $tail -n1)
|
||||
perl -ne '/.*(parallel-\d{8})/ and print $1."\n"' |
|
||||
perl -e 'print ((reverse sort <>)[0])')
|
||||
if test \! -e $latest.tar.bz2; then
|
||||
# Source tar does not exist
|
||||
rm -f $latest.tar.bz2 $latest.tar.bz2.sig
|
||||
# Source tar does not exist
|
||||
rm -f $latest.tar.bz2 $latest.tar.bz2.sig
|
||||
$get http://ftpmirror.gnu.org/parallel/$latest.tar.bz2 > $latest.tar.bz2
|
||||
$get http://ftpmirror.gnu.org/parallel/$latest.tar.bz2.sig > $latest.tar.bz2.sig
|
||||
fi
|
||||
|
@ -60,49 +54,49 @@ run() {
|
|||
fetch_keys() {
|
||||
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
|
||||
# Setup .gnupg/gpg.conf if not already done
|
||||
echo | gpg 2>/dev/null >/dev/null
|
||||
keyserver1=keys.gnupg.net
|
||||
keyserver2=pool.sks-keyservers.net
|
||||
if gpg --keyserver $keyserver1 --recv-key 0xFFFFFFF1 ||
|
||||
gpg --keyserver $keyserver2 --recv-key 0xFFFFFFF1 ; then
|
||||
if gpg --keyserver $keyserver1 --recv-key 0xFFFFFFF1 ||
|
||||
gpg --keyserver $keyserver2 --recv-key 0xFFFFFFF1 ; then
|
||||
if gpg --keyserver $keyserver1 --recv-key 0x88888888 ||
|
||||
gpg --keyserver $keyserver2 --recv-key 0x88888888; then
|
||||
gpg --keyserver $keyserver2 --recv-key 0x88888888; then
|
||||
# OK
|
||||
return 0
|
||||
else
|
||||
echo
|
||||
echo
|
||||
echo "Cannot fetch keyID 0x88888888, so the signature cannot be checked."
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
else
|
||||
echo
|
||||
echo "Cannot fetch keyID 0xFFFFFFF1, so the signature cannot be checked."
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
# GnuPG not installed
|
||||
echo
|
||||
echo
|
||||
echo "GnuPG (gpg) is not installed so the signature cannot be checked."
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Check signature - in case ftpmirror.gnu.org is compromised
|
||||
if fetch_keys; then
|
||||
if gpg --with-fingerprint $latest.tar.bz2.sig 2>&1 |
|
||||
$grep -E '^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>
|
||||
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
|
||||
true
|
||||
else
|
||||
# GnuPG signature failed
|
||||
# GnuPG signature failed
|
||||
echo
|
||||
echo "The signature on $latest.tar.bz2 is wrong. This may indicate that a criminal has changed the code."
|
||||
echo "The signature on $latest.tar.bz2 is wrong. This may indicate that a criminal has changed the code."
|
||||
echo "THIS IS BAD AND THE CODE WILL NOT BE INSTALLED."
|
||||
echo
|
||||
echo "See http://git.savannah.gnu.org/cgit/parallel.git/tree/README for other installation methods."
|
||||
exit 1
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# GnuPG not installed or public keys not downloaded
|
||||
|
@ -111,12 +105,12 @@ run() {
|
|||
echo "Continue anyway? (y/n)"
|
||||
read YN </dev/tty
|
||||
if test "$YN" = "n"; then
|
||||
# Stop
|
||||
exit 2
|
||||
else
|
||||
# Continue
|
||||
true
|
||||
fi
|
||||
# Stop
|
||||
exit 2
|
||||
else
|
||||
# Continue
|
||||
true
|
||||
fi
|
||||
fi
|
||||
|
||||
bzip2 -dc $latest.tar.bz2 | tar xf -
|
||||
|
@ -126,35 +120,35 @@ run() {
|
|||
echo GNU $latest installed globally
|
||||
else
|
||||
if ./configure --prefix=$HOME && make && make install; then
|
||||
echo
|
||||
echo
|
||||
echo GNU $latest installed in $HOME/bin
|
||||
else
|
||||
mkdir -p $HOME/bin/;
|
||||
chmod 755 src/*;
|
||||
chmod 755 src/*;
|
||||
cp src/parallel src/env_parallel* src/sem src/sql src/niceload src/parcat $HOME/bin;
|
||||
echo
|
||||
echo GNU $latest copied to $HOME/bin
|
||||
echo GNU $latest copied to $HOME/bin
|
||||
fi
|
||||
|
||||
# Is $HOME/bin already in $PATH?
|
||||
if echo $PATH | grep $HOME/bin >/dev/null; then
|
||||
# $HOME/bin is already in $PATH
|
||||
true
|
||||
else
|
||||
else
|
||||
# Add $HOME/bin to $PATH for both bash and csh
|
||||
echo 'PATH=$PATH:$HOME/bin' >> $HOME/.bashrc
|
||||
echo 'setenv PATH ${PATH}:${HOME}/bin' >> $HOME/.cshrc
|
||||
fi
|
||||
fi
|
||||
|
||||
# Is $HOME/share/man already in $MANPATH?
|
||||
if echo $MANPATH | grep $HOME/share/man >/dev/null; then
|
||||
if echo $MANPATH | grep $HOME/share/man >/dev/null; then
|
||||
# $HOME/share/man is already in $MANPATH
|
||||
true
|
||||
else
|
||||
# Add $HOME/share/man to $MANPATH for both bash and csh
|
||||
echo 'MANPATH=$MANPATH:$HOME/share/man' >> $HOME/.bashrc
|
||||
echo 'setenv MANPATH ${MANPATH}:${HOME}/share/man' >> $HOME/.cshrc
|
||||
fi
|
||||
echo 'MANPATH=$MANPATH:$HOME/share/man' >> $HOME/.bashrc
|
||||
echo 'setenv MANPATH ${MANPATH}:${HOME}/share/man' >> $HOME/.cshrc
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
8
NEWS
8
NEWS
|
@ -1,4 +1,4 @@
|
|||
20190822
|
||||
20190922
|
||||
|
||||
* --nice is now inherited by the nice level that GNU Parallel is
|
||||
started at. So 'nice -n10 parallel' will also cause remote jobs to
|
||||
|
@ -9,9 +9,11 @@
|
|||
* GNU Parallel will be presented at Driving IT 2019:
|
||||
https://ida.dk/arrangementer-og-kurser/konferencer/driving-it/tools
|
||||
|
||||
* Greenland Ice Sheet solid ice discharge from 1986 through 2017 https://www.earth-syst-sci-data.net/11/769/2019/essd-11-769-2019.pdf
|
||||
* Greenland Ice Sheet solid ice discharge from 1986 through 2017
|
||||
https://www.earth-syst-sci-data.net/11/769/2019/essd-11-769-2019.pdf
|
||||
|
||||
* App Center Cloud Build Machines > Installed Software > Utilities https://docs.microsoft.com/en-us/appcenter/build/software
|
||||
* App Center Cloud Build Machines > Installed Software > Utilities
|
||||
https://docs.microsoft.com/en-us/appcenter/build/software
|
||||
|
||||
* Curryfinger - SNI & Host header spoofing utility
|
||||
https://dualuse.io/blog/curryfinger/
|
||||
|
|
10
doc/haikus
10
doc/haikus
|
@ -1,7 +1,10 @@
|
|||
Quote of the month:
|
||||
|
||||
IMHO, SQLite and GNU Parallel are among the world's great software.
|
||||
-- singe@reddit
|
||||
Well anyway, It was blazingly fast and astonished by performance. guess I'll never use xargs.
|
||||
-- (Not) Akaming @_Akamig@twitter
|
||||
|
||||
GNU parallel has helped me kill a Hadoop cluster before.
|
||||
-- Travis Campbell @hcoyote@twitter
|
||||
|
||||
Yeah, GNU parallel is a beast when used accordingly.
|
||||
-- @lsde@twitter
|
||||
|
@ -55,6 +58,9 @@ Quote of the month:
|
|||
|
||||
|
||||
=== Used ===
|
||||
IMHO, SQLite and GNU Parallel are among the world's great software.
|
||||
-- singe@reddit
|
||||
|
||||
It is, beyond absolutely any doubt whatsoever, the single most
|
||||
important tool I use in making me a productive bioinformatician.
|
||||
-- A-N-Other@reddit.com
|
||||
|
|
|
@ -209,9 +209,9 @@ from:tange@gnu.org
|
|||
to:parallel@gnu.org, bug-parallel@gnu.org
|
||||
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
||||
|
||||
Subject: GNU Parallel 20190822 ('Dorian/Stallman') released <<[stable]>>
|
||||
Subject: GNU Parallel 20191022 ('Driving IT') released <<[stable]>>
|
||||
|
||||
GNU Parallel 20190822 ('Dorian') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
|
||||
GNU Parallel 20191022 ('Driving IT') <<[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.>>
|
||||
|
||||
|
@ -225,32 +225,16 @@ Quote of the month:
|
|||
|
||||
New in this release:
|
||||
|
||||
* --delay is now accurate to around 5 ms.
|
||||
Uses GNU Parallel https://github.com/pirovc/genome_updater
|
||||
|
||||
* --nice is now inherited by the nice level that GNU Parallel is started at. So 'nice -n10 parallel' will also cause remote jobs to be run at nice level 10.
|
||||
Using GNU-Parallel for bioinformatics https://www.danielecook.com/using-gnu-parallel-for-bioinformatics/
|
||||
|
||||
* GNU Parallel will be presented at Driving IT 2019: https://ida.dk/arrangementer-og-kurser/konferencer/driving-it/tools
|
||||
Speeding up PostgreSQL ETL pipeline with the help of GODS https://cfengine.com/company/blog-detail/speeding-up-postgresql-etl-pipeline-with-the-help-of-gods/
|
||||
|
||||
* Greenland Ice Sheet solid ice discharge from 1986 through 2017 https://www.earth-syst-sci-data.net/11/769/2019/essd-11-769-2019.pdf
|
||||
|
||||
* App Center Cloud Build Machines > Installed Software > Utilities https://docs.microsoft.com/en-us/appcenter/build/software
|
||||
https://readthedocs.org/projects/curc/downloads/pdf/latest/
|
||||
|
||||
https://dualuse.io/blog/curryfinger/
|
||||
|
||||
https://wiki.cac.washington.edu/display/hyakusers/Hyak+parallel-sql
|
||||
|
||||
https://www.reddit.com/r/perl/comments/cyo2qc/a_meditation_on_analysing_data_with_perl_in/
|
||||
|
||||
https://www.eventbrite.ca/e/inscription-accelerer-ses-taches-avec-gnu-parallel-et-les-lots-de-taches-ul-71412840729
|
||||
|
||||
https://curc.readthedocs.io/en/latest/software/GNUParallel.html
|
||||
|
||||
https://petelawson.com/post/parallel-in-shell/
|
||||
|
||||
https://www.usenix.org/conference/lisa19/presentation/maheshwari
|
||||
|
||||
http://atomicer.cn/2018/01/18/gnu-parallel-nfs-%E5%AE%9E%E7%8E%B0%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E7%BD%91%E7%BB%9C%E7%9A%84%E5%B9%B6%E5%8F%91%E8%AE%A1%E7%AE%97%E7%AD%89%E6%93%8D%E4%BD%9C/#more
|
||||
Gnu/parallel + Nfs 实现共享文件网络的并发计算等操作
|
||||
* 如何使用Parallel在Shell中并行执行命令https://www.myfreax.com/gnu-parallel/
|
||||
|
||||
* Bug fixes and man page updates.
|
||||
|
||||
|
|
78
src/parallel
78
src/parallel
|
@ -149,9 +149,12 @@ sub pipepart_setup() {
|
|||
$size += -s $_;
|
||||
} elsif(-b $_) {
|
||||
$size += size_of_block_dev($_);
|
||||
} else {
|
||||
} elsif(-e $_) {
|
||||
::error("$_ is neither a file nor a block device");
|
||||
wait_and_exit(255);
|
||||
} else {
|
||||
::error("File not found: $_");
|
||||
wait_and_exit(255);
|
||||
}
|
||||
}
|
||||
# Run in total $job_slots*(- $blocksize) jobs
|
||||
|
@ -1528,6 +1531,7 @@ sub options_hash() {
|
|||
"linkinputsource|xapplyinputsource=i" => \@opt::linkinputsource,
|
||||
# Before changing this line, please read
|
||||
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
||||
# https://git.savannah.gnu.org/cgit/parallel.git/tree/doc/citation-notice-faq.txt
|
||||
"bibtex|citation" => \$opt::citation,
|
||||
"wc|willcite|will-cite|nn|nonotice|no-notice" => \$opt::willcite,
|
||||
# Termination and retries
|
||||
|
@ -1636,6 +1640,7 @@ sub parse_options(@) {
|
|||
|
||||
# Before changing this line, please read
|
||||
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
||||
# https://git.savannah.gnu.org/cgit/parallel.git/tree/doc/citation-notice-faq.txt
|
||||
if(defined $opt::citation) {
|
||||
citation(\@argv_before,\@ARGV);
|
||||
wait_and_exit(0);
|
||||
|
@ -1683,7 +1688,7 @@ sub parse_options(@) {
|
|||
if(defined $opt::tmpdir) { $ENV{'TMPDIR'} = $opt::tmpdir; }
|
||||
$ENV{'PARALLEL_RSYNC_OPTS'} = $opt::rsync_opts ||
|
||||
$ENV{'PARALLEL_RSYNC_OPTS'} || '-rlDzR';
|
||||
# Default: Same nice level as GNU Parallel is started at
|
||||
# Default: Same nice level as GNU Parallel is started at
|
||||
$opt::nice ||= eval { getpriority(0,0) } || 0;
|
||||
if(defined $opt::help) { usage(); exit(0); }
|
||||
if(defined $opt::embed) { embed(); exit(0); }
|
||||
|
@ -1937,11 +1942,14 @@ sub parse_options(@) {
|
|||
# the alternatives instead?
|
||||
# See a list in: 'man parallel_alternatives'
|
||||
#
|
||||
# If you want GNU Parallel to be maintained in the future you should not
|
||||
# change this line.
|
||||
# If you want GNU Parallel to be maintained in the future keep
|
||||
# this line.
|
||||
citation_notice();
|
||||
# Seriously: You will be harming free software by removing the notice.
|
||||
# You make it harder to justify spending time developing it.
|
||||
# Seriously: YOU will be harming free software by removing the
|
||||
# notice. You make it harder to justify spending time developing
|
||||
# it. If you *do* remove the line, please email
|
||||
# hallofshame@tange.dk if you want to avoid being put in a hall of
|
||||
# shame.
|
||||
|
||||
parse_halt();
|
||||
|
||||
|
@ -2060,6 +2068,7 @@ sub init_globals() {
|
|||
# Defaults:
|
||||
$Global::version = 20190922;
|
||||
$Global::progname = 'parallel';
|
||||
$::name = "GNU Parallel";
|
||||
$Global::infinity = 2**31;
|
||||
$Global::debug = 0;
|
||||
$Global::verbose = 0;
|
||||
|
@ -2274,7 +2283,7 @@ sub parse_replacement_string_options() {
|
|||
sub parse_semaphore() {
|
||||
# Semaphore defaults
|
||||
# Must be done before computing number of processes and max_line_length
|
||||
# because when running as a semaphore GNU Parallel does not read args
|
||||
# because when running as a semaphore GNU Parallel does not read args
|
||||
# Uses:
|
||||
# $opt::semaphore
|
||||
# $Global::semaphore
|
||||
|
@ -3103,7 +3112,7 @@ sub __RUNNING_THE_JOBS_AND_PRINTING_PROGRESS__() {}
|
|||
# $Global::total_started = total number of jobs started
|
||||
# $Global::joblog = filehandle of joblog
|
||||
# $Global::debug = Is debugging on?
|
||||
# $Global::exitstatus = status code of GNU Parallel
|
||||
# $Global::exitstatus = status code of GNU Parallel
|
||||
# $Global::quoting = quote the command to run
|
||||
|
||||
sub init_run_jobs() {
|
||||
|
@ -3403,10 +3412,11 @@ sub drain_job_queue(@) {
|
|||
my $sleep = 0.2;
|
||||
do {
|
||||
while($Global::total_running > 0) {
|
||||
debug($Global::total_running, "==", scalar
|
||||
debug("init",$Global::total_running, "==", scalar
|
||||
keys %Global::running," slots: ", $Global::max_jobs_running);
|
||||
if($opt::pipe) {
|
||||
# When using --pipe sometimes file handles are not closed properly
|
||||
# When using --pipe sometimes file handles are not
|
||||
# closed properly
|
||||
for my $job (values %Global::running) {
|
||||
close $job->fh(0,"w");
|
||||
}
|
||||
|
@ -4011,7 +4021,7 @@ sub setup_basefile() {
|
|||
}
|
||||
debug("init", "basesetup: @cmd\n");
|
||||
my ($exitstatus,$stdout_ref,$stderr_ref) =
|
||||
run_parallel((join "\n",@cmd),"-j0","--retries",5);
|
||||
run_gnu_parallel((join "\n",@cmd),"-j0","--retries",5);
|
||||
if($exitstatus) {
|
||||
my @stdout = @$stdout_ref;
|
||||
my @stderr = @$stderr_ref;
|
||||
|
@ -4041,7 +4051,7 @@ sub cleanup_basefile() {
|
|||
}
|
||||
debug("init", "basecleanup: @cmd\n");
|
||||
my ($exitstatus,$stdout_ref,$stderr_ref) =
|
||||
run_parallel(join("\n",@cmd),"-j0","--retries",5);
|
||||
run_gnu_parallel(join("\n",@cmd),"-j0","--retries",5);
|
||||
if($exitstatus) {
|
||||
my @stdout = @$stdout_ref;
|
||||
my @stderr = @$stderr_ref;
|
||||
|
@ -4050,22 +4060,22 @@ sub cleanup_basefile() {
|
|||
}
|
||||
}
|
||||
|
||||
sub run_parallel() {
|
||||
sub run_gnu_parallel() {
|
||||
my ($stdin,@args) = @_;
|
||||
my $cmd = join "",map { " $_ & " } split /\n/, $stdin;
|
||||
print $Global::original_stderr ` $cmd wait` ;
|
||||
return 0
|
||||
}
|
||||
|
||||
sub _run_parallel() {
|
||||
# Run GNU Parallel
|
||||
sub _run_gnu_parallel() {
|
||||
# Run GNU Parallel
|
||||
# This should ideally just fork an internal copy
|
||||
# and not start it through a shell
|
||||
# Input:
|
||||
# $stdin = data to provide on stdin for GNU Parallel
|
||||
# $stdin = data to provide on stdin for GNU Parallel
|
||||
# @args = command line arguments
|
||||
# Returns:
|
||||
# $exitstatus = exitcode of GNU Parallel run
|
||||
# $exitstatus = exitcode of GNU Parallel run
|
||||
# \@stdout = standard output
|
||||
# \@stderr = standard error
|
||||
my ($stdin,@args) = @_;
|
||||
|
@ -4441,7 +4451,7 @@ sub onall($@) {
|
|||
);
|
||||
::debug("init", "| $0 $options\n");
|
||||
open(my $parallel_fh, "|-", "$0 -0 --will-cite -j0 $options") ||
|
||||
::die_bug("This does not run GNU Parallel: $0 $options");
|
||||
::die_bug("This does not run GNU Parallel: $0 $options");
|
||||
my @joblogs;
|
||||
for my $host (sort keys %Global::host) {
|
||||
my $sshlogin = $Global::host{$host};
|
||||
|
@ -4505,14 +4515,14 @@ sub sigpipe() {
|
|||
|
||||
sub signal_children() {
|
||||
# Send signal to all children process groups
|
||||
# and GNU Parallel itself
|
||||
# and GNU Parallel itself
|
||||
# Uses:
|
||||
# %SIG
|
||||
# Returns: N/A
|
||||
my $signal = shift;
|
||||
debug("run", "Sending $signal ");
|
||||
kill $signal, map { -$_ } keys %Global::running;
|
||||
# Use default signal handler for GNU Parallel itself
|
||||
# Use default signal handler for GNU Parallel itself
|
||||
$SIG{$signal} = undef;
|
||||
kill $signal, $$;
|
||||
}
|
||||
|
@ -4793,6 +4803,7 @@ sub usage() {
|
|||
"",
|
||||
# Before changing this line, please read
|
||||
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
||||
# https://git.savannah.gnu.org/cgit/parallel.git/tree/doc/citation-notice-faq.txt
|
||||
"This helps funding further development; AND IT WON'T COST YOU A CENT.",
|
||||
"If you pay 10000 EUR you should feel free to use GNU Parallel without citing.",
|
||||
"",
|
||||
|
@ -4823,6 +4834,7 @@ sub citation_notice() {
|
|||
"",
|
||||
# Before changing this line, please read
|
||||
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
||||
# https://git.savannah.gnu.org/cgit/parallel.git/tree/doc/citation-notice-faq.txt
|
||||
"This helps funding further development; AND IT WON'T COST YOU A CENT.",
|
||||
"If you pay 10000 EUR you should feel free to use GNU Parallel without citing.",
|
||||
"",
|
||||
|
@ -4833,7 +4845,7 @@ sub citation_notice() {
|
|||
""
|
||||
);
|
||||
mkdir $Global::config_dir;
|
||||
# Number of times the user has run GNU Parallel without showing
|
||||
# Number of times the user has run GNU Parallel without showing
|
||||
# willingness to cite
|
||||
my $runs = 0;
|
||||
if(open (my $fh, "<", $Global::config_dir.
|
||||
|
@ -4986,7 +4998,7 @@ sub citation() {
|
|||
"",
|
||||
"If you use '--will-cite' in scripts to be run by others you are making",
|
||||
"it harder for others to see the citation notice. The development of",
|
||||
"GNU parallel is indirectly financed through citations, so if users",
|
||||
"GNU Parallel is indirectly financed through citations, so if users",
|
||||
"do not know they should cite then you are making it harder to finance",
|
||||
"development. However, if you pay 10000 EUR, you should feel free to",
|
||||
"use '--will-cite' in scripts.",
|
||||
|
@ -5008,7 +5020,7 @@ sub show_limits() {
|
|||
}
|
||||
|
||||
sub embed() {
|
||||
# Give an embeddable version of GNU Parallel
|
||||
# Give an embeddable version of GNU Parallel
|
||||
# Tested with: bash, zsh, ksh, ash, dash, sh
|
||||
my $randomstring = "cut-here-".join"",
|
||||
map { (0..9,"a".."z","A".."Z")[rand(62)] } (1..20);
|
||||
|
@ -5053,9 +5065,9 @@ sub embed() {
|
|||
";
|
||||
|
||||
print q!
|
||||
# Embedded GNU Parallel created with --embed
|
||||
# Embedded GNU Parallel created with --embed
|
||||
parallel() {
|
||||
# Start GNU Parallel without leaving temporary files
|
||||
# Start GNU Parallel without leaving temporary files
|
||||
#
|
||||
# Not all shells support 'perl <(cat ...)'
|
||||
# This is a complex way of doing:
|
||||
|
@ -5066,7 +5078,7 @@ parallel() {
|
|||
# [1]+ Done cat
|
||||
|
||||
# Make a temporary fifo that perl can read from
|
||||
_fifo_with_parallel_source=`perl -e 'use POSIX qw(mkfifo);
|
||||
_fifo_with_GNU_Parallel_source=`perl -e 'use POSIX qw(mkfifo);
|
||||
do {
|
||||
$f = "/tmp/parallel-".join"",
|
||||
map { (0..9,"a".."z","A".."Z")[rand(62)] } (1..5);
|
||||
|
@ -5075,9 +5087,9 @@ parallel() {
|
|||
print $f;'`
|
||||
# Put source code into temporary file
|
||||
# so it is easy to copy to the fifo
|
||||
_file_with_parallel_source=`mktemp`;
|
||||
_file_with_GNU_Parallel_source=`mktemp`;
|
||||
!,
|
||||
"cat <<'$randomstring' > \$_file_with_parallel_source\n",
|
||||
"cat <<'$randomstring' > \$_file_with_GNU_Parallel_source\n",
|
||||
@source,
|
||||
$randomstring,"\n",
|
||||
q!
|
||||
|
@ -5085,10 +5097,10 @@ parallel() {
|
|||
# and remove the file and fifo ASAP
|
||||
# 'sh -c' is needed to avoid
|
||||
# [1]+ Done cat
|
||||
sh -c "(rm $_file_with_parallel_source; cat >$_fifo_with_parallel_source; rm $_fifo_with_parallel_source) < $_file_with_parallel_source &"
|
||||
sh -c "(rm $_file_with_GNU_Parallel_source; cat >$_fifo_with_GNU_Parallel_source; rm $_fifo_with_GNU_Parallel_source) < $_file_with_GNU_Parallel_source &"
|
||||
|
||||
# Read the source from the fifo
|
||||
perl $_fifo_with_parallel_source "$@"
|
||||
perl $_fifo_with_GNU_Parallel_source "$@"
|
||||
}
|
||||
!,
|
||||
@env_parallel_source,
|
||||
|
@ -6530,7 +6542,7 @@ sub loadavg($) {
|
|||
# Recompute a new one in the background
|
||||
# The load average is computed as the number of processes waiting for disk
|
||||
# or CPU right now. So it is the server load this instant and not averaged over
|
||||
# several minutes. This is needed so GNU Parallel will at most start one job
|
||||
# several minutes. This is needed so GNU Parallel will at most start one job
|
||||
# that will push the load over the limit.
|
||||
#
|
||||
# Returns:
|
||||
|
@ -8751,7 +8763,7 @@ sub base64_eval($) {
|
|||
# Will be wrapped in ' so single quote is forbidden.
|
||||
# Spaces are stripped so spaces cannot be significant.
|
||||
# The funny 'use IPC::Open3'-syntax is to avoid spaces and
|
||||
# to make it clear that this is a GNU Parallel command
|
||||
# to make it clear that this is a GNU Parallel command
|
||||
# when looking at the process table.
|
||||
# Returns:
|
||||
# $script = 1-liner for perl -e
|
||||
|
@ -11420,7 +11432,7 @@ sub get($) {
|
|||
my $ret = $self->{'arg_sub_queue'}->get();
|
||||
if($ret) {
|
||||
if(grep { index($_->orig(),"\0") > 0 } @$ret) {
|
||||
# Allow for \0 in position 0 because GNU Parallel uses "\0noarg"
|
||||
# Allow for \0 in position 0 because GNU Parallel uses "\0noarg"
|
||||
# to mean no-string
|
||||
::warning("A NUL character in the input was replaced with \\0.",
|
||||
"NUL cannot be passed through in the argument list.",
|
||||
|
|
|
@ -1610,8 +1610,8 @@ so you are unlikely to ever use this option.
|
|||
|
||||
Setting B<--nice> will override this nice level. If the nice level is
|
||||
smaller than the current nice level, it will only affect remote jobs
|
||||
(e.g. current level is 10 and B<--nice 5> will cause local jobs to be
|
||||
run at level 10, but remote jobs run at nice level 5).
|
||||
(e.g. if current level is 10 then B<--nice 5> will cause local jobs to
|
||||
be run at level 10, but remote jobs run at nice level 5).
|
||||
|
||||
|
||||
=item B<--interactive>
|
||||
|
@ -2786,13 +2786,14 @@ Print the version GNU B<parallel> and exit.
|
|||
|
||||
=item B<--wd> I<mydir>
|
||||
|
||||
Jobs will be run in the dir I<mydir>.
|
||||
|
||||
Files transferred using B<--transferfile> and B<--return> will be
|
||||
relative to I<mydir> on remote computers, and the command will be
|
||||
executed in the dir I<mydir>.
|
||||
relative to I<mydir> on remote computers.
|
||||
|
||||
The special I<mydir> value B<...> will create working dirs under
|
||||
B<~/.parallel/tmp/> on the remote computers. If B<--cleanup> is given
|
||||
these dirs will be removed.
|
||||
B<~/.parallel/tmp/>. If B<--cleanup> is given these dirs will be
|
||||
removed.
|
||||
|
||||
The special I<mydir> value B<.> uses the current working dir. If the
|
||||
current working dir is beneath your home dir, the value B<.> is
|
||||
|
|
Loading…
Reference in a new issue