diff --git a/aclocal.m4 b/aclocal.m4 index 279699f2..5d5340a8 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -14,8 +14,8 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, +[m4_warning([this file was generated for autoconf 2.68. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) diff --git a/configure b/configure index b36c83a4..da5abcb7 100755 --- a/configure +++ b/configure @@ -1,11 +1,13 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for parallel 20120822. +# Generated by GNU Autoconf 2.68 for parallel 20121022. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -134,31 +136,6 @@ export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -192,8 +169,7 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" +test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -237,25 +213,21 @@ IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : @@ -358,14 +330,6 @@ $as_echo X"$as_dir" | } # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -487,10 +451,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -525,16 +485,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -546,8 +506,28 @@ else as_mkdir_p=false fi -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -579,8 +559,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20120822' -PACKAGE_STRING='parallel 20120822' +PACKAGE_VERSION='20121022' +PACKAGE_STRING='parallel 20121022' PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_URL='' @@ -1109,6 +1089,8 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1194,7 +1176,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures parallel 20120822 to adapt to many kinds of systems. +\`configure' configures parallel 20121022 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1260,7 +1242,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of parallel 20120822:";; + short | recursive ) echo "Configuration of parallel 20121022:";; esac cat <<\_ACEOF @@ -1327,10 +1309,10 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -parallel configure 20120822 -generated by GNU Autoconf 2.69 +parallel configure 20121022 +generated by GNU Autoconf 2.68 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1344,8 +1326,8 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by parallel $as_me 20120822, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by parallel $as_me 20121022, which was +generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -1760,7 +1742,7 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -1929,7 +1911,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -1969,7 +1951,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2020,7 +2002,7 @@ do test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -2073,7 +2055,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2159,7 +2141,7 @@ fi # Define the identity of the package. PACKAGE='parallel' - VERSION='20120822' + VERSION='20121022' cat >>confdefs.h <<_ACEOF @@ -2611,16 +2593,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -2680,16 +2662,28 @@ else as_mkdir_p=false fi - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -2710,8 +2704,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by parallel $as_me 20120822, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by parallel $as_me 20121022, which was +generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -2772,11 +2766,11 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -parallel config.status 20120822 -configured by $0, generated by GNU Autoconf 2.69, +parallel config.status 20121022 +configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -2867,7 +2861,7 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' diff --git a/configure.ac b/configure.ac index 24fae1c7..d64f32e3 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20120822], [bug-parallel@gnu.org]) +AC_INIT([parallel], [20121022], [bug-parallel@gnu.org]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ diff --git a/src/Makefile.in b/src/Makefile.in index 7660fcf1..a346640e 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -51,7 +51,7 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ diff --git a/src/niceload b/src/niceload index 4bbb3064..064a596a 100755 --- a/src/niceload +++ b/src/niceload @@ -24,7 +24,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20120822; +$Global::version = 20121022; Getopt::Long::Configure("bundling","require_order"); get_options_from_array(\@ARGV) || die_usage(); if($::opt_version) { diff --git a/src/parallel b/src/parallel index d2965949..3dd74702 100755 --- a/src/parallel +++ b/src/parallel @@ -606,7 +606,7 @@ sub get_options_from_array { sub parse_options { # Returns: N/A # Defaults: - $Global::version = 20121021; + $Global::version = 20121022; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; diff --git a/src/parallel.texi b/src/parallel.texi index 3c49a8ae..3a3049ba 100644 --- a/src/parallel.texi +++ b/src/parallel.texi @@ -375,7 +375,8 @@ k, m, g, t, or p which would multiply the size with 1024, 1048576, 1000000000, 1000000000000, or 1000000000000000 respectively. GNU @strong{parallel} tries to meet the block size but can be off by the -length of one record. +length of one record. For performance reasons @emph{size} should be bigger +than a single record. @emph{size} defaults to 1M. @@ -471,6 +472,15 @@ because it is POSIX compliant for @strong{xargs} while this option is not. If @emph{eof-str} is omitted, there is no end of file string. If neither @strong{-E} nor @strong{-e} is used, no end of file string is used. +@item @strong{--env} @emph{var} (alpha testing) +@anchor{@strong{--env} @emph{var} (alpha testing)} + +Copy environment variable @emph{var}. This will copy @emph{var} to the +environment that the command is run in. This is especially useful for +remote environments. + +Caveat: If @emph{var} contains newline ('\n') the value is messed up. + @item @strong{--eta} @anchor{@strong{--eta}} @@ -489,8 +499,8 @@ See also: @strong{--bg}, @strong{man sem} Implies @strong{--semaphore}. -@item @strong{--filter-hosts} -@anchor{@strong{--filter-hosts}} +@item @strong{--filter-hosts} (alpha testing) +@anchor{@strong{--filter-hosts} (alpha testing)} Remove down hosts. For each remote host: check that login through ssh works. If not: do not use this host. @@ -699,7 +709,7 @@ to see the difference: @item @strong{-L} @emph{max-lines} @anchor{@strong{-L} @emph{max-lines}} -When used with @strong{--pipe}: Read records of @emph{max-lines}. +When used with @strong{--pipe}: Read records of @emph{max-lines} (alpha testing). When used otherwise: Use at most @emph{max-lines} nonblank input lines per command line. Trailing blanks cause an input line to be logically @@ -716,7 +726,7 @@ Implies @strong{-X} unless @strong{-m}, @strong{--xargs}, or @strong{--pipe} is @item @strong{-l}[@emph{max-lines}] @anchor{@strong{-l}[@emph{max-lines}]} -When used with @strong{--pipe}: Read records of @emph{max-lines}. +When used with @strong{--pipe}: Read records of @emph{max-lines} (alpha testing). When used otherwise: Synonym for the @strong{-L} option. Unlike @strong{-L}, the @emph{max-lines} argument is optional. If @emph{max-lines} is not specified, @@ -1036,6 +1046,66 @@ it to the command. Only used with @strong{--pipe}. +@item @strong{--results} @emph{prefix} (alpha testing) +@anchor{@strong{--results} @emph{prefix} (alpha testing)} + +@item @strong{--res} @emph{prefix} (alpha testing) +@anchor{@strong{--res} @emph{prefix} (alpha testing)} + +Results in files named by tab separated arguments. Save the output +into files. The file names will be prefixed with @emph{prefix} which can +contain a path with a prefix string. The file with output from stdout +(standard output) will prefixed with '@emph{prefix}stdout'. The file +with output from stderr (standard error) will prefixed with +'@emph{prefix}stderr'. + +The postfix is the header of the input source (if using @strong{--header :}) +or the number of the input source followed by the value of the input +source. This is repeated for every input source and is separated by +TAB (\t). + +E.g: + +@verbatim + parallel --header : --results foo/bar echo {a} {b} ::: a I II ::: b III IIII +@end verbatim + +will generate the files: + +@verbatim + foo/barstderr a I b III + foo/barstderr a I b IIII + foo/barstderr a II b III + foo/barstderr a II b IIII + foo/barstdout a I b III + foo/barstdout a I b IIII + foo/barstdout a II b III + foo/barstdout a II b IIII +@end verbatim + +and + +@verbatim + parallel --results foo/bar echo {1} {2} ::: 1 2 ::: 3 4 +@end verbatim + +will generate the files: + +@verbatim + foo/barstderr 1 I 2 III + foo/barstderr 1 I 2 IIII + foo/barstderr 1 II 2 III + foo/barstderr 1 II 2 IIII + foo/barstdout 1 I 2 III + foo/barstdout 1 I 2 IIII + foo/barstdout 1 II 2 III + foo/barstdout 1 II 2 IIII +@end verbatim + +where all spaces are TABs (\t);. + +See also @strong{--files}, @strong{--header}, @strong{--joblog}. + @item @strong{--resume} @anchor{@strong{--resume}} @@ -1915,6 +1985,44 @@ This also works if the input file is a file with columns: cat addressbook.tsv | parallel --colsep '\t' --header : echo {Name} {E-mail address} @end verbatim +@chapter EXAMPLE: Count the differences between all files in a dir +@anchor{EXAMPLE: Count the differences between all files in a dir} + +Using @strong{--results} the results are saved in /tmp/diffcount*. + +@verbatim + parallel --results /tmp/diffcount "diff -U 0 {1} {2} |tail -n +3 |grep -v '^@'|wc -l" ::: * ::: * +@end verbatim + +To see the difference between file A and file B look at the file +'/tmp/diffcount 1 A 2 B' where spaces are TABs (\t). + +@chapter EXAMPLE: Speeding up fast jobs +@anchor{EXAMPLE: Speeding up fast jobs} + +Starting a job on the local machine takes around 3 ms. This can be a +big overhead if the job takes very few ms to run. Often you can group +small jobs together using @strong{-X} which will make the overhead less +significant. Compare the speed of these: + +@verbatim + seq -w 0 9999 | parallel touch pict{}.jpg + + seq -w 0 9999 | parallel -X touch pict{}.jpg +@end verbatim + +If your program cannot take multiple arguments, then you can use GNU +@strong{parallel} to spawn multiple GNU @strong{parallel}s: + +@verbatim + seq -w 0 999999 | parallel -j10 --pipe parallel -j0 touch pict{}.jpg +@end verbatim + +If @strong{-j0} normally spawns 506 jobs, then the above will try to spawn +5060 jobs. It is likely that you this way will hit the limit of number +of processes and/or filehandles. Look at 'ulimit -n' and 'ulimit -u' +to raise these limits. + @chapter EXAMPLE: Using shell variables @anchor{EXAMPLE: Using shell variables} @@ -2510,11 +2618,23 @@ characters that have special meaning in shell: and depending on context these needs to be quoted, too: -* ~ & # ! ? space * @{ +~ & # ! ? space * @{ Therefore most people will never need more quoting than putting '\' in front of the special characters. +Often you can simply put \' around every ': + +@verbatim + perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' file +@end verbatim + +can be quoted: + +@verbatim + parallel perl -ne \''/^\S+\s+\S+$/ and print $ARGV,"\n"'\' ::: file +@end verbatim + However, when you want to use a shell variable you need to quote the $-sign. Here is an example using $PARALLEL_SEQ. This variable is set by GNU @strong{parallel} itself, so the evaluation of the $ must be done by diff --git a/src/sql b/src/sql index 1dbaee16..eaf94836 100755 --- a/src/sql +++ b/src/sql @@ -556,7 +556,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20120822; + $Global::version = 20121022; $Global::progname = 'sql'; # This must be done first as this may exec myself