parallel: Fixed bug #63586: --ll does not clear till end of line.

This commit is contained in:
Ole Tange 2022-12-21 00:57:10 +01:00
parent 1022008c35
commit acb915b074
47 changed files with 353 additions and 258 deletions

View file

@ -262,25 +262,25 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20221222 ('ChatGPT') released
Subject: GNU Parallel 20230122 ('Pele/MashaAmina<<>>') released
GNU Parallel 20221222 ('ChatGPT') has been released. It is available for download at: lbry://@GnuParallel:4
GNU Parallel 20230122 ('<<>>') has been released. It is available for download at: lbry://@GnuParallel:4
Quote of the month:
GNU Parallel absolutely rocks.
-- Austin Mordahl@Stackoverflow
<<>>
New in this release:
* --results works on more file systems (e.g. fat)
* Joblog gives the same exit code as bash.
<<>>
News about GNU Parallel:
* Programação Shell Linux: Paralelismo de processos com GNU parallel https://www.youtube.com/watch?v=duheTWLIrp8
* Talk Python: Data Science from the Command Line https://talkpython.fm/episodes/show/392/data-science-from-the-command-line
https://www.purevpn.com/blog/the-best-hacking-tools-of-2023/#11_GNU_Parallel
this is wrong-https://climbtheladder.com/10-gnu-parallel-best-practices/
<<>>
GNU Parallel - For people who live life in the parallel lane.

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2002-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2002-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -18,7 +18,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
=head1 NAME

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -18,7 +18,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
grepq() {

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck disable=SC2006 shell=dash
@ -393,8 +393,8 @@ _parset_main() {
fi
if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006
echo "parset 20221222 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "parset 20221223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2023 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>"
echo "This is free software: you are free to change and redistribute it."

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck disable=SC2006
@ -395,8 +395,8 @@ _parset_main() {
fi
if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006
echo "parset 20221222 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "parset 20221223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2023 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>"
echo "This is free software: you are free to change and redistribute it."

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck disable=SC2006
@ -393,8 +393,8 @@ _parset_main() {
fi
if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006
echo "parset 20221222 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "parset 20221223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2023 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>"
echo "This is free software: you are free to change and redistribute it."

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck disable=SC2006
@ -376,8 +376,8 @@ _parset_main() {
fi
if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006
echo "parset 20221222 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "parset 20221223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2023 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>"
echo "This is free software: you are free to change and redistribute it."

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck disable=SC2006
@ -378,8 +378,8 @@ _parset_main() {
fi
if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006
echo "parset 20221222 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "parset 20221223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2023 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>"
echo "This is free software: you are free to change and redistribute it."

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
env_parallel() {

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -807,7 +807,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck disable=SC2006
@ -393,8 +393,8 @@ _parset_main() {
fi
if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006
echo "parset 20221222 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "parset 20221223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2023 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>"
echo "This is free software: you are free to change and redistribute it."

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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

View file

@ -7,7 +7,7 @@
# after which 'env_parallel' works
#
#
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -25,7 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck disable=SC2006
@ -368,8 +368,8 @@ _parset_main() {
fi
if [ "$_parset_NAME" = "--version" ] ; then
# shellcheck disable=SC2006
echo "parset 20221222 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "parset 20221223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2023 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>"
echo "This is free software: you are free to change and redistribute it."

View file

@ -2,7 +2,7 @@
# Copyright (C) 2004-2010 Ole Tange, http://ole.tange.dk
#
# Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and
# Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and
# Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -20,13 +20,13 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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 = 20221222;
$Global::version = 20221223;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -309,7 +309,7 @@ Copyright (C) 2004-11-19 Ole Tange, http://ole.tange.dk
Copyright (C) 2005-2010 Ole Tange, http://ole.tange.dk
Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.
=head1 LICENSE

View file

@ -1,6 +1,6 @@
#!/usr/bin/env perl
# Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2007-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -18,7 +18,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# open3 used in Job::start
@ -2702,7 +2702,7 @@ sub check_invalid_option_combinations() {
sub init_globals() {
# Defaults:
$Global::version = 20221222;
$Global::version = 20221223;
$Global::progname = 'parallel';
$::name = "GNU Parallel";
$Global::infinity = 2**31;
@ -5756,7 +5756,7 @@ sub version() {
print join
("\n",
"GNU $Global::progname $Global::version",
"Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software",
"Copyright (C) 2007-2023 Ole Tange, http://ole.tange.dk and Free Software",
"Foundation, Inc.",
"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>",
"This is free software: you are free to change and redistribute it.",
@ -5894,7 +5894,7 @@ sub embed() {
}
print "#!$Global::shell
# Copyright (C) 2007-2022 $user, Ole Tange, http://ole.tange.dk
# Copyright (C) 2007-2023 $user, Ole Tange, http://ole.tange.dk
# and Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -11316,7 +11316,7 @@ sub print_files($) {
# --tag
# --bar
{
my ($up,$currow,$maxrow);
my ($up,$eol,$currow,$maxrow);
my ($minvisible,%print_later,%notvisible);
my (%binmodeset,%tab);
@ -11324,6 +11324,9 @@ sub print_files($) {
# cursor_up cuu1 = up one line
$up = `sh -c "tput cuu1 </dev/tty" 2>/dev/null`;
chomp($up);
$eol = `sh -c "tput el </dev/tty" 2>/dev/null`;
chomp($eol);
if($eol eq "") { $eol = "\033[K"; }
$currow = 1;
$maxrow = 1;
$minvisible = 1;
@ -11353,15 +11356,15 @@ sub print_files($) {
my $untabify_tag = ::decode_utf8($self->untabtag());
my $taglen = length $untabify_tag;
my $truncated_tag = "";
my $strlen = $termcol - $taglen;
my $untabify_str = ::decode_utf8($self->{$out_fh,'latestline'});
$untabify_str =~ s/\t/$tab{$-[0]%8}/g;
# -1 to make space for $truncated
my $strlen = $termcol - $taglen - 1;
my $strspc = $strlen - length $untabify_str;
$strlen--;
if($strlen < 0) { $strlen = 0;}
# Line is shorter than terminal width: add " "
# Line is longer than terminal width: add ">"
my $truncated = ($strspc > 0) ? " " : ">";
my $truncated = ($strspc >= 0) ? " " : ">";
if($taglen > $termcol) {
# Tag is longer than terminal width: add ">" to tag
# Remove $truncated (it will not be shown at all)
@ -11369,17 +11372,15 @@ sub print_files($) {
$truncated_tag = ">";
$truncated = "";
}
$maxrow = $row > $maxrow ? $row : $maxrow;
$maxrow = ($row > $maxrow) ? $row : $maxrow;
printf($out_fh
("%s%s%s". # up down \r
"%.${taglen}s%s". # tag
"%s%.${strlen}s%s%s". # color + line
("%s%s%s%s". # up down \r eol
"%.${taglen}s%s". # tag trunc_tag
"%s%.${strlen}s%s%s". # color line trunc reset_color
"%s" # down
),
"$up"x($currow - $row),
"\n"x($row - $currow),
"\r", $untabify_tag,$truncated_tag,
"$up"x($currow - $row), "\n"x($row - $currow), "\r", $eol,
$untabify_tag,$truncated_tag,
$color, $untabify_str, $truncated, $reset_color,
"\n"x($maxrow - $row + 1));
$currow = $maxrow + 1;
@ -11837,14 +11838,16 @@ sub untabtag($) {
160..178,180,182..184,196..214,232..250));
# reorder list so adjacent colors are dissimilar
# %23 and %7 were found experimentally
@color_combinations = @color_combinations[
sort { ($a%23 <=> $b%23) or ($b%7 <=> $a%7) }
0..$#color_combinations
];
my @order = reverse sort {
(($a%23) <=> ($b%23))
or
(($b%7) <=> ($a%7));
} 0..$#color_combinations;
@order = @order[54 .. $#color_combinations, 0 .. 53];
@color = map {
# TODO Can this be done with `tput` codes?
"\033[48;5;".$_->[0].";38;5;".$_->[1]."m"
} @color_combinations;
} @color_combinations[ @order ];
# clr_eol el = clear to end of line
$eol = `sh -c "tput el </dev/tty" 2>/dev/null`;

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -549,7 +549,7 @@ string that is not in the command line.
See also: B<:::>
=item B<--bar> (beta testing)
=item B<--bar>
Show progress as a progress bar.
@ -839,7 +839,7 @@ to stdout (standard output) unless B<--decompress-program> is given.
See also: B<--compress>
=item B<--csv> (beta testing)
=item B<--csv>
Treat input as CSV-format.
@ -1055,7 +1055,7 @@ Outputs: 1,1 1,2 1,3 2,2 2,3 3,3
See also: B<skip()> B<--no-run-if-empty>
=item B<--filter-hosts> (beta testing)
=item B<--filter-hosts>
Remove down hosts.
@ -1586,9 +1586,9 @@ Similar to B<--memfree>.
See also: B<--memfree> B<--load>
=item B<--latest-line> (beta testing)
=item B<--latest-line> (alpha testing)
=item B<--ll> (beta testing)
=item B<--ll> (alpha testing)
Print the lastest line. Each job gets a single line that is updated
with the lastest output from the job.
@ -2026,7 +2026,7 @@ B<--progress> on a running GNU B<parallel> process.
See also: B<--eta> B<--bar>
=item B<--max-line-length-allowed> (beta testing)
=item B<--max-line-length-allowed>
Print maximal command line length.
@ -3033,13 +3033,13 @@ I<duration> is in seconds, but can be postfixed with s, m, h, or d.
See also: TIME POSTFIXES B<--sshlogin> B<--delay>
=item B<--sshlogin> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]> (beta testing)
=item B<--sshlogin> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]>
=item B<--sshlogin> I<@hostgroup> (beta testing)
=item B<--sshlogin> I<@hostgroup>
=item B<-S> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]> (beta testing)
=item B<-S> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]>
=item B<-S> I<@hostgroup> (beta testing)
=item B<-S> I<@hostgroup>
Distribute jobs to remote computers.
@ -3297,9 +3297,9 @@ dies before the waiting time is up.
See also: B<--halt> B<--timeout> B<--memfree>
=item B<--total-jobs> I<jobs> (beta testing)
=item B<--total-jobs> I<jobs>
=item B<--total> I<jobs> (beta testing)
=item B<--total> I<jobs>
Provide the total number of jobs for computing ETA which is also used
for B<--bar>.
@ -4391,7 +4391,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.
Parts of the manual concerning B<xargs> compatibility is inspired by

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -3511,6 +3511,87 @@ https://github.com/TheWizardTower/seneschal
(Last checked: 2022-06)
=head2 DIFFERENCES BETWEEN async AND GNU Parallel
Summary (see legend above):
=over
=item x x x x x x x
=item - x x x x x
=item x O2 O3 O4 O5 O6 - x x O10
=item E1 - - E4 - - -
=item - - - - - - - - -
=item S1 S2
=back
B<async> works like B<sem>.
=head3 EXAMPLES FROM async
1$ S="/tmp/example_socket"
async -s="$S" server --start
for i in {1..20}; do
# prints command output to stdout
async -s="$S" cmd -- bash -c "sleep 1 && echo test $i"
done
# wait until all commands are finished
async -s="$S" wait
1$ S="example_id"
# server not needed
for i in {1..20}; do
# prints command output to stdout
sem --bg --id "$S" -j100% "sleep 1 && echo test $i"
done
# wait until all commands are finished
sem --fg --id "$S" --wait
2$ # configure the server to run four commands in parallel
async -s="$S" server -j4
mkdir "/tmp/ex_dir"
for i in {21..40}; do
# redirects command output to /tmp/ex_dir/file*
async -s="$S" cmd -o "/tmp/ex_dir/file$i" -- \
bash -c "sleep 1 && echo test $i"
done
async -s="$S" wait
# stops server
async -s="$S" server --stop
2$ # starting server not needed
mkdir "/tmp/ex_dir"
for i in {21..40}; do
# redirects command output to /tmp/ex_dir/file*
sem --bg --id "$S" --results "/tmp/ex_dir/file$i{}" \
"sleep 1 && echo test $i"
done
sem --fg --id "$S" --wait
# there is no server to stop
https://github.com/ctbur/async
(Last checked: 2023-01)
=head2 Todo
http://code.google.com/p/push/ (cannot compile)
@ -3785,7 +3866,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.
Parts of the manual concerning B<xargs> compatibility is inspired by

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -1868,7 +1868,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.
Parts of the manual concerning B<xargs> compatibility is inspired by

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -3003,8 +3003,8 @@ When asking for help, always report the full output of this:
Output:
GNU parallel 20210122
Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software
GNU parallel 20230122
Copyright (C) 2007-2023 Ole Tange, http://ole.tange.dk and Free Software
Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
@ -3165,7 +3165,7 @@ https://my.fsf.org/donate/
=back
(C) 2013-2022 Ole Tange, GFDLv1.3+ (See
(C) 2013-2023 Ole Tange, GFDLv1.3+ (See
LICENSES/GFDL-1.3-or-later.txt)

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -18,7 +18,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
use Symbol qw(gensym);

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -71,7 +71,7 @@ GNU B<parcat> is part of GNU B<parallel>. Report bugs to
=head1 AUTHOR
Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.
=head1 LICENSE

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2016-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -18,7 +18,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
grepq() {

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -202,7 +202,7 @@ Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk
Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
=pod
@ -45,7 +45,7 @@ On a 48 core machine you should see a speedup of 3x over B<sort>.
=head1 AUTHOR
Copyright (C) 2020-2022 Ole Tange,
Copyright (C) 2020-2023 Ole Tange,
http://ole.tange.dk and Free Software Foundation, Inc.
@ -122,7 +122,7 @@ GetOptions(
"help" => \$opt::dummy,
) || exit(255);
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
$Global::version = 20221222;
$Global::version = 20221223;
if($opt::version) { version(); exit 0; }
@Global::sortoptions = grep { ! /^-D$/ }
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);
@ -238,7 +238,7 @@ sub version() {
print join
("\n",
"GNU $Global::progname $Global::version",
"Copyright (C) 2020-2022 Ole Tange, http://ole.tange.dk and Free Software",
"Copyright (C) 2020-2023 Ole Tange, http://ole.tange.dk and Free Software",
"Foundation, Inc.",
"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>",
"This is free software: you are free to change and redistribute it.",

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
# Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2007-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -18,7 +18,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# Convert .pod file containing:

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 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
@ -255,7 +255,7 @@ Report bugs to <bug-parallel@gnu.org>.
=head1 AUTHOR
Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.

View file

@ -2,7 +2,7 @@
# Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk
#
# Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and
# Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and
# Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -20,7 +20,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2008-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2008-2023 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
@ -388,7 +388,7 @@ Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.
Copyright (C) 2008-2010 Ole Tange http://ole.tange.dk
Copyright (C) 2010-2022 Ole Tange, http://ole.tange.dk and Free
Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
Software Foundation, Inc.
=head1 LICENSE
@ -667,7 +667,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20221222;
$Global::version = 20230103;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (C) 2022-2022 Ole Tange, http://ole.tange.dk and Free
# Copyright (C) 2022-2023 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@ -18,7 +18,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2022-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2022-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
grep -hv '(dead)' ../src/* |

View file

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

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
@ -26,6 +26,10 @@ mem: ../src/parallel tests-to-run/*mem* wanted-results/*mem*
touch ~/.parallel/will-cite
make stopvm
# The output must be inspected visually
manual: ../src/parallel tests-to-run/*manual* wanted-results/*manual*
bash tests-to-run/parallel-manual.sh
# Tutorial
tutorial: ../src/parallel tests-to-run/*tutorial* wanted-results/*tutorial* prereqlocal
TRIES=1 time bash Start.sh tutorial NONE || true
@ -52,7 +56,7 @@ local: ../src/parallel tests-to-run/*local* wanted-results/*local* prereqlocal i
# short
short: ../src/parallel tests-to-run/* wanted-results/* prereqlocal installparallel
TRIES=1 time bash Start.sh '' 'polar|mem|100s|300s'
TRIES=1 time bash Start.sh '' 'polar|mem|100s|300s|manual'
# long
long: ../src/parallel tests-to-run/* wanted-results/* prereqlocal installparallel

View file

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

View file

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

View file

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

View file

@ -16,6 +16,10 @@ export -f stdsort
# Test amount of parallelization
# parallel --shuf --jl /tmp/myjl -j1 'export JOBS={1};'bash tests-to-run/parallel-local-0.3s.sh ::: {1..16} ::: {1..5}
par_ll_long_followed_by_short() {
parallel --ll 'echo A very long line;sleep 0.2;echo' ::: OK | puniq
}
par_PARALLEL_HOME_not_exist() {
echo '### bug #62311: --pipepart + ::: fail'
tmp1=$(mktemp)

View file

@ -281,7 +281,7 @@ par_groupby_pipepart() {
# Make 6 columns: 123456 => 1\t2\t3\t4\t5\t6
seq 100000 999999 | perl -pe '$_=join"\t",split//' |
# Sort reverse on column 3 (This should group on col 3)
sort --parallel=8 --buffer-size=50% -k3r
sort --parallel=8 -k3r
}
export -f tsv

View file

@ -1,60 +1,11 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# These fail regularly
par_ll_tag() {
(
parallel --tag --ll -q printf "a\n{}\n" ::: should-be-tagged
parallel --tag --ll -q printf "a\n\r{}\n" ::: should-be-tagged
parallel --color --tag --ll true ::: A
parallel --color --tag --ll 'echo;true {}' ::: B
parallel --color --tag --ll 'echo {};true {}' ::: C
) | puniq
}
par_ll_lb_color() {
echo 'bug #62386: --color (--ctag but without --tag)'
echo 'bug #62438: See last line from multiple jobslots'
# This is a race condition
# # delay modulo 4 seconds
# perl -MTime::HiRes -E 'Time::HiRes::usleep(1000000*(((time|3)+1)-Time::HiRes::time()));'
# # delay modulo 2 seconds
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(1-time+(time|1)));say time;'
# # delay modulo 1 second
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(1-time+(time|0)));say time;'
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(1-time+(time*4|0)/4));say time;'
# # delay modulo 1/4 second
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(-time+(1+time*3|0)/3));say time;';
# # delay modulo 1/4 second + 100 ms
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(0.1-time+(1+time*3|0)/3));say time;';
# # delay modulo 1 second + 200 ms
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(0.2-time+(1+time*1|0)/1));say time;';
# # delay modulo 1 second + delta ms
# perl -E 'use Time::HiRes qw(usleep time); $d=shift; for(1..shift){
# usleep(1000000*($d-time+(1+time*1|0)/1));say;}' 0.2 6;
_offset_seq() {
perl -E 'use Time::HiRes qw(usleep time); $|=1;$d=shift; for(1..shift){
usleep(1000000*($d-time+(1+time*1|0)/1));say;}' $@;
}
offset_seq() {
perl -E 'use Time::HiRes qw(usleep time); $|=1;usleep(shift); for(1..shift){
usleep(1000000);say;}' $@;
}
export -f offset_seq
run() {
seq 4 -1 1 | parallel -j0 $@ offset_seq '{= $_=seq()*170000 =}' {}
}
export -f run
parallel --delay 0.07 -vkj0 run \
::: --lb --ll '' ::: --color '' ::: '--tagstring {}{}' --tag '' ::: -k '' |
md5sum
}
ctrlz_should_suspend_children() {
echo 'bug #46120: Suspend should suspend (at least local) children'
echo 'it should burn 1.9 CPU seconds, but no more than that'

View file

@ -0,0 +1,59 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# These fail regularly
par_ll_tag() {
parallel --tag --ll -q printf "a\n{}\n" ::: should-be-tagged-A
parallel --tag --ll -q printf "a\n\r{}\n" ::: should-be-tagged-B
parallel --color --tag --ll true ::: ERROR-should-not-be-printed
parallel --color --tag --ll 'echo;true {}' ::: empty-line
parallel --color --tag --ll 'echo {};true {}' ::: full-line
}
par_ll_lb_color() {
echo '### This should give the same output with color and without'
echo 'bug #62386: --color (--ctag but without --tag)'
echo 'bug #62438: See last line from multiple jobslots'
# This is a race condition
# # delay modulo 4 seconds
# perl -MTime::HiRes -E 'Time::HiRes::usleep(1000000*(((time|3)+1)-Time::HiRes::time()));'
# # delay modulo 2 seconds
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(1-time+(time|1)));say time;'
# # delay modulo 1 second
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(1-time+(time|0)));say time;'
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(1-time+(time*4|0)/4));say time;'
# # delay modulo 1/4 second
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(-time+(1+time*3|0)/3));say time;';
# # delay modulo 1/4 second + 100 ms
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(0.1-time+(1+time*3|0)/3));say time;';
# # delay modulo 1 second + 200 ms
# perl -E 'use Time::HiRes qw(usleep time); usleep(1000000*(0.2-time+(1+time*1|0)/1));say time;';
# # delay modulo 1 second + delta ms
# perl -E 'use Time::HiRes qw(usleep time); $d=shift; for(1..shift){
# usleep(1000000*($d-time+(1+time*1|0)/1));say;}' 0.2 6;
_offset_seq() {
perl -E 'use Time::HiRes qw(usleep time); $|=1;$d=shift; for(1..shift){
usleep(1000000*($d-time+(1+time*1|0)/1));say;}' $@;
}
offset_seq() {
perl -E 'use Time::HiRes qw(usleep time); $|=1;usleep(shift); for(1..shift){
usleep(1000000);say;}' $@;
}
export -f offset_seq
run() {
seq 4 -1 1 | parallel -j0 $@ offset_seq '{= $_=seq()*170000 =}' {}
}
export -f run
parallel --delay 0.07 -vkj0 run \
::: --lb --ll '' ::: -k '' ::: '--tagstring {}{}' --tag '' ::: '' --color
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort |
# parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'
parallel --joblog /tmp/jl-`basename $0` -j0 --tag -k '{} 2>&1'

View file

@ -80,15 +80,15 @@ par_colour_failed 2(B
par_colour_failed seq 2;exit 2(B
par_colour_failed 1(B
par_colour_failed 2(B
par_colour_failed seq 1;exit 0(B
par_colour_failed 1(B
par_colour_failed seq 1;exit 0(B
par_colour_failed 1(B
par_colour_failed seq 1;exit 1(B
par_colour_failed 1(B
par_colour_failed seq 1;exit 2(B
par_colour_failed 1(B
par_colour_failed seq 2;exit 0(B
par_colour_failed 1(B
par_colour_failed 2(B
par_colour_failed seq 2;exit 0(B
par_colour_failed 1(B
par_colour_failed 2(B
par_colour_failed seq 2;exit 1(B
par_colour_failed 1(B
par_colour_failed 2(B
@ -324,6 +324,9 @@ par_link_files_as_only_arg bug #50685: single ::::+ does not work
par_link_files_as_only_arg 1 1 1
par_link_files_as_only_arg 2 2 2
par_link_files_as_only_arg 3 3 3
par_ll_long_followed_by_short par_ll_long_followed_by_short A very long line
par_ll_long_followed_by_short  par_ll_long_followed_by_short A very long line
par_ll_long_followed_by_short  par_ll_long_followed_by_short OK
par_locale_quoting ### quoting in different locales
par_locale_quoting £`/tmp/test£`
par_locale_quoting $LC_ALL £`/tmp/test£`

View file

@ -532,67 +532,67 @@ par_line_buffer ### --line-buffer
par_line_buffer 55 55 120
par_line_buffer These must diff: 1
par_ll_color_long_line ### --latest-line --color with lines longer than terminal width
par_ll_color_long_line par_ll_color_long_line 01x 0100000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 02xx 0200000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 03xxx 0300000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 04xxxx 0400000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 05xxxxx 0500000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 06xxxxxx 0600000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 07xxxxxxx 0700000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 08xxxxxxxx 0800000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 09xxxxxxxxx 0900000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 10xxxxxxxxxx 1000000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 11xxxxxxxxxxx 1100000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 12xxxxxxxxxxxx 1200000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 13xxxxxxxxxxxxx 1300000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 14xxxxxxxxxxxxxx 14000>(B
par_ll_color_long_line par_ll_color_long_line 15xxxxxxxxxxxxxxx 15000>(B
par_ll_color_long_line par_ll_color_long_line 16xxxxxxxxxxxxxxxx 16000>(B
par_ll_color_long_line par_ll_color_long_line 17xxxxxxxxxxxxxxxxx 17000>(B
par_ll_color_long_line par_ll_color_long_line 18xxxxxxxxxxxxxxxxxx 18000>(B
par_ll_color_long_line par_ll_color_long_line 19xxxxxxxxxxxxxxxxxxx 19000>(B
par_ll_color_long_line par_ll_color_long_line 20xxxxxxxxxxxxxxxxxxxx 20000>(B
par_ll_color_long_line par_ll_color_long_line 21xxxxxxxxxxxxxxxxxxxxx 21000>(B
par_ll_color_long_line par_ll_color_long_line 22xxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 23xxxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 24xxxxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 25xxxxxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 26xxxxxxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B
par_ll_color_long_line par_ll_color_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B
par_ll_color_long_line par_ll_color_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B
par_ll_color_long_line par_ll_color_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B
par_ll_color_long_line par_ll_color_long_line 01x 0100000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 02xx 0200000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 03xxx 0300000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 04xxxx 0400000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 05xxxxx 0500000 1 2 3 4 5 6 7>(B
par_ll_color_long_line par_ll_color_long_line 06xxxxxx 0600000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 07xxxxxxx 0700000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 08xxxxxxxx 0800000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 09xxxxxxxxx 0900000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 10xxxxxxxxxx 1000000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 11xxxxxxxxxxx 1100000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 12xxxxxxxxxxxx 1200000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 13xxxxxxxxxxxxx 1300000 1 2 3>(B
par_ll_color_long_line par_ll_color_long_line 14xxxxxxxxxxxxxx 14000>(B
par_ll_color_long_line par_ll_color_long_line 15xxxxxxxxxxxxxxx 15000>(B
par_ll_color_long_line par_ll_color_long_line 16xxxxxxxxxxxxxxxx 16000>(B
par_ll_color_long_line par_ll_color_long_line 17xxxxxxxxxxxxxxxxx 17000>(B
par_ll_color_long_line par_ll_color_long_line 18xxxxxxxxxxxxxxxxxx 18000>(B
par_ll_color_long_line par_ll_color_long_line 19xxxxxxxxxxxxxxxxxxx 19000>(B
par_ll_color_long_line par_ll_color_long_line 20xxxxxxxxxxxxxxxxxxxx 20000>(B
par_ll_color_long_line par_ll_color_long_line 21xxxxxxxxxxxxxxxxxxxxx 21000>(B
par_ll_color_long_line par_ll_color_long_line 22xxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 23xxxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 24xxxxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 25xxxxxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 26xxxxxxxxxxxxxxxxxxxxxxxxxx >(B
par_ll_color_long_line par_ll_color_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B
par_ll_color_long_line par_ll_color_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B
par_ll_color_long_line par_ll_color_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B
par_ll_color_long_line par_ll_color_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B
par_ll_long_line ### --latest-line with lines longer than terminal width
par_ll_long_line par_ll_long_line 01x 0100000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 02xx 0200000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 03xxx 0300000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 04xxxx 0400000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 05xxxxx 0500000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 06xxxxxx 0600000 1 2 3>
par_ll_long_line par_ll_long_line 07xxxxxxx 0700000 1 2 3>
par_ll_long_line par_ll_long_line 08xxxxxxxx 0800000 1 2 3>
par_ll_long_line par_ll_long_line 09xxxxxxxxx 0900000 1 2 3>
par_ll_long_line par_ll_long_line 10xxxxxxxxxx 1000000 1 2 3>
par_ll_long_line par_ll_long_line 11xxxxxxxxxxx 1100000 1 2 3>
par_ll_long_line par_ll_long_line 12xxxxxxxxxxxx 1200000 1 2 3>
par_ll_long_line par_ll_long_line 13xxxxxxxxxxxxx 1300000 1 2 3>
par_ll_long_line par_ll_long_line 14xxxxxxxxxxxxxx 14000>
par_ll_long_line par_ll_long_line 15xxxxxxxxxxxxxxx 15000>
par_ll_long_line par_ll_long_line 16xxxxxxxxxxxxxxxx 16000>
par_ll_long_line par_ll_long_line 17xxxxxxxxxxxxxxxxx 17000>
par_ll_long_line par_ll_long_line 18xxxxxxxxxxxxxxxxxx 18000>
par_ll_long_line par_ll_long_line 19xxxxxxxxxxxxxxxxxxx 19000>
par_ll_long_line par_ll_long_line 20xxxxxxxxxxxxxxxxxxxx 20000>
par_ll_long_line par_ll_long_line 21xxxxxxxxxxxxxxxxxxxxx 21000>
par_ll_long_line par_ll_long_line 22xxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 23xxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 24xxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 25xxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 26xxxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 01x 0100000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 02xx 0200000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 03xxx 0300000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 04xxxx 0400000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 05xxxxx 0500000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 06xxxxxx 0600000 1 2 3>
par_ll_long_line par_ll_long_line 07xxxxxxx 0700000 1 2 3>
par_ll_long_line par_ll_long_line 08xxxxxxxx 0800000 1 2 3>
par_ll_long_line par_ll_long_line 09xxxxxxxxx 0900000 1 2 3>
par_ll_long_line par_ll_long_line 10xxxxxxxxxx 1000000 1 2 3>
par_ll_long_line par_ll_long_line 11xxxxxxxxxxx 1100000 1 2 3>
par_ll_long_line par_ll_long_line 12xxxxxxxxxxxx 1200000 1 2 3>
par_ll_long_line par_ll_long_line 13xxxxxxxxxxxxx 1300000 1 2 3>
par_ll_long_line par_ll_long_line 14xxxxxxxxxxxxxx 14000>
par_ll_long_line par_ll_long_line 15xxxxxxxxxxxxxxx 15000>
par_ll_long_line par_ll_long_line 16xxxxxxxxxxxxxxxx 16000>
par_ll_long_line par_ll_long_line 17xxxxxxxxxxxxxxxxx 17000>
par_ll_long_line par_ll_long_line 18xxxxxxxxxxxxxxxxxx 18000>
par_ll_long_line par_ll_long_line 19xxxxxxxxxxxxxxxxxxx 19000>
par_ll_long_line par_ll_long_line 20xxxxxxxxxxxxxxxxxxxx 20000>
par_ll_long_line par_ll_long_line 21xxxxxxxxxxxxxxxxxxxxx 21000>
par_ll_long_line par_ll_long_line 22xxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 23xxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 24xxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 25xxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 26xxxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line par_ll_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_load_blocks ### Test if --load blocks. Bug.
par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 -
par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 -

View file

@ -118,15 +118,6 @@ par_kill_hup parallel: Waiting for these 2 jobs to finish. Send SIGTERM to stop
par_kill_hup parallel: bash -c 'sleep 3 & pid=$!; wait $pid'
par_kill_hup parallel: bash -c 'sleep 3 & pid=$!; wait $pid'
par_kill_hup bash---pstree
par_ll_lb_color bug #62386: --color (--ctag but without --tag)
par_ll_lb_color bug #62438: See last line from multiple jobslots
par_ll_lb_color 35d02d4d868110dd4f0eaf1c2f26dc36 -
par_ll_tag par_ll_tag should-be-tagged should-be-tagged
par_ll_tag  par_ll_tag should-be-tagged should-be-tagged
par_ll_tag par_ll_tag B  
par_ll_tag  par_ll_tag B  
par_ll_tag par_ll_tag C C 
par_ll_tag  par_ll_tag C C 
par_more_than_9_relative_sshlogin ### Check more than 9(relative) simultaneous sshlogins
par_more_than_9_relative_sshlogin 1
par_more_than_9_relative_sshlogin 2

View file

@ -692,7 +692,6 @@ This is input_file
parallel -S $SERVER1 --trc {}.out cat {} ">"{}.out ::: input_file
cat input_file.out
This is input_file
rsync: [sender] link_stat "/home/parallel/input_file.out" failed: No such file or directory (2)
echo common data > common_file
parallel --basefile common_file -S $SERVER1 \
cat common_file\; echo {} ::: foo
@ -1285,7 +1284,7 @@ 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.
parallel --version
GNU parallel VERSION
Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software
Copyright (C) 2007-2023 Ole Tange, http://ole.tange.dk and Free Software
Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
@ -1331,4 +1330,4 @@ mentioned in the release notes of next version of GNU Parallel.
echo A
echo B
echo C
8
9