mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 14:07:55 +00:00
parallel: support for multiple --profile.
This commit is contained in:
parent
50edcdd38d
commit
a25961d8d5
|
@ -179,9 +179,9 @@ cc:Peter Simons <simons@cryp.to>, Sandro Cazzaniga <kharec@mandriva.org>,
|
||||||
Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>, Jesse Alama
|
Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>, Jesse Alama
|
||||||
<jesse.alama@gmail.com>
|
<jesse.alama@gmail.com>
|
||||||
|
|
||||||
Subject: GNU Parallel 20110922 ('Thorning-Schmidt') released
|
Subject: GNU Parallel 20111022 ('Ritchie') released
|
||||||
|
|
||||||
GNU Parallel 20110922 ('Thorning-Schmidt') has been released. It is
|
GNU Parallel 20111022 ('Ritchie') has been released. It is
|
||||||
available for download at: http://ftp.gnu.org/gnu/parallel/
|
available for download at: http://ftp.gnu.org/gnu/parallel/
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
@ -189,12 +189,27 @@ New in this release:
|
||||||
* --shellquote does not run the command but quotes it using \'s.
|
* --shellquote does not run the command but quotes it using \'s.
|
||||||
Useful for making quoted composed commands.
|
Useful for making quoted composed commands.
|
||||||
|
|
||||||
|
* GNU Parallel officially in Fedora 16
|
||||||
|
http://www.spinics.net/lists/fedora-package-announce/msg67130.html
|
||||||
|
|
||||||
* Blog post on recompression FLAC audio.
|
* Blog post on recompression FLAC audio.
|
||||||
http://blog.oxplot.com/2011/08/reflac-flac-cleanser.html
|
http://blog.oxplot.com/2011/08/reflac-flac-cleanser.html
|
||||||
|
|
||||||
* The most complex use of ::: I a seen so far.
|
* The most complex use of ::: I a seen so far.
|
||||||
http://agentzlerich.blogspot.com/2011/09/following-up-on-previous-failures-ive.html
|
http://agentzlerich.blogspot.com/2011/09/following-up-on-previous-failures-ive.html
|
||||||
|
|
||||||
|
* Example of using GNU Parallel with sudo.
|
||||||
|
http://loopkid.net/articles/2011/10/07/recursive-chmod-and-chown-on-files
|
||||||
|
|
||||||
|
* Use wget and gnu parallel to download mp3s at rocket speed.
|
||||||
|
http://sdbrain.posterous.com/use-wget-and-gnu-parallel-to-download-mp3s-at
|
||||||
|
|
||||||
|
* First CV referring to GNU Parallel.
|
||||||
|
http://www.peopleperhour.com/freelancers/stephen_/internet_researcher_and_protocol_develop/140602
|
||||||
|
|
||||||
|
* Cartwright labs usage of GNU Parallel.
|
||||||
|
http://cartwrightlab.wikispaces.com/The+Most+Bang+for+Your+Buck
|
||||||
|
|
||||||
* Bug fixes and man page updates.
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ build:
|
||||||
cd parallel-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]; dpkg-buildpackage -us -uc
|
cd parallel-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]; dpkg-buildpackage -us -uc
|
||||||
@echo
|
@echo
|
||||||
@echo "To install the GNU Parallel Debian package, run:"
|
@echo "To install the GNU Parallel Debian package, run:"
|
||||||
@echo -e \\t sudo dpkg -i `ls -rt parallel_*_all.deb | tail -n 1`
|
@echo " sudo dpkg -i "`ls -rt parallel_*_all.deb | tail -n 1`
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f parallel_*
|
rm -f parallel_*
|
||||||
|
|
13
src/parallel
13
src/parallel
|
@ -425,7 +425,7 @@ sub options_hash {
|
||||||
"arg-sep|argsep=s" => \$::opt_arg_sep,
|
"arg-sep|argsep=s" => \$::opt_arg_sep,
|
||||||
"arg-file-sep|argfilesep=s" => \$::opt_arg_file_sep,
|
"arg-file-sep|argfilesep=s" => \$::opt_arg_file_sep,
|
||||||
"trim=s" => \$::opt_trim,
|
"trim=s" => \$::opt_trim,
|
||||||
"profile|J=s" => \$::opt_profile,
|
"profile|J=s" => \@::opt_profile,
|
||||||
"pipe|spreadstdin" => \$::opt_pipe,
|
"pipe|spreadstdin" => \$::opt_pipe,
|
||||||
"recstart=s" => \$::opt_recstart,
|
"recstart=s" => \$::opt_recstart,
|
||||||
"recend=s" => \$::opt_recend,
|
"recend=s" => \$::opt_recend,
|
||||||
|
@ -733,8 +733,8 @@ sub read_options {
|
||||||
}
|
}
|
||||||
|
|
||||||
Getopt::Long::Configure("bundling","pass_through");
|
Getopt::Long::Configure("bundling","pass_through");
|
||||||
# Check if there is a --profile to set $::opt_profile
|
# Check if there is a --profile to set @::opt_profile
|
||||||
GetOptions("profile|J=s" => \$::opt_profile) || die_usage();
|
GetOptions("profile|J=s" => \@::opt_profile) || die_usage();
|
||||||
# Add options from .parallel/config and other profiles
|
# Add options from .parallel/config and other profiles
|
||||||
my @ARGV_profile = ();
|
my @ARGV_profile = ();
|
||||||
my @ARGV_env = ();
|
my @ARGV_env = ();
|
||||||
|
@ -743,9 +743,12 @@ sub read_options {
|
||||||
$ENV{'HOME'}."/.parallel/config",
|
$ENV{'HOME'}."/.parallel/config",
|
||||||
$ENV{'HOME'}."/.parallelrc");
|
$ENV{'HOME'}."/.parallelrc");
|
||||||
my @profiles = @config_profiles;
|
my @profiles = @config_profiles;
|
||||||
if($::opt_profile) {
|
if(@::opt_profile) {
|
||||||
# --profile overrides default profiles
|
# --profile overrides default profiles
|
||||||
@profiles = ($ENV{'HOME'}."/.parallel/".$::opt_profile);
|
@profiles = ();
|
||||||
|
for my $profile (@::opt_profile) {
|
||||||
|
push @profiles, $ENV{'HOME'}."/.parallel/".$profile;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for my $profile (@profiles) {
|
for my $profile (@profiles) {
|
||||||
if(-r $profile) {
|
if(-r $profile) {
|
||||||
|
|
|
@ -809,7 +809,7 @@ line.
|
||||||
|
|
||||||
This will set the owner of the homedir to the user:
|
This will set the owner of the homedir to the user:
|
||||||
|
|
||||||
B<tr ':' '\012' < /etc/passwd | parallel -N7 chown {1} {6}>
|
B<tr ':' '\n' < /etc/passwd | parallel -N7 chown {1} {6}>
|
||||||
|
|
||||||
Implies B<-X> unless B<-m> or B<--pipe> is set.
|
Implies B<-X> unless B<-m> or B<--pipe> is set.
|
||||||
|
|
||||||
|
@ -865,8 +865,12 @@ on remote computers. See the section PROFILE FILES for examples.
|
||||||
|
|
||||||
I<profilename> corresponds to the file ~/.parallel/I<profilename>.
|
I<profilename> corresponds to the file ~/.parallel/I<profilename>.
|
||||||
|
|
||||||
|
You can give multiple profiles by repeating B<--profile>. If parts of
|
||||||
|
the profiles conflict, the later ones will be used.
|
||||||
|
|
||||||
Default: config
|
Default: config
|
||||||
|
|
||||||
|
|
||||||
=item B<--quote>
|
=item B<--quote>
|
||||||
|
|
||||||
=item B<-q>
|
=item B<-q>
|
||||||
|
@ -1923,12 +1927,15 @@ Convert *.mp3 to *.ogg running one process per CPU core on local computer and se
|
||||||
|
|
||||||
To run the command B<uptime> on remote computers you can do:
|
To run the command B<uptime> on remote computers you can do:
|
||||||
|
|
||||||
B<parallel --nonall -S server1,server2 uptime>
|
B<parallel --tag --nonall -S server1,server2 uptime>
|
||||||
|
|
||||||
B<--nonall> reads no arguments. If you have a list of jobs you want
|
B<--nonall> reads no arguments. If you have a list of jobs you want
|
||||||
run on each computer you can do:
|
run on each computer you can do:
|
||||||
|
|
||||||
B<parallel --onall -S server1,server2 echo ::: 1 2 3>
|
B<parallel --tag --onall -S server1,server2 echo ::: 1 2 3>
|
||||||
|
|
||||||
|
Remove B<--tag> if you do not want the sshlogin added before the
|
||||||
|
output.
|
||||||
|
|
||||||
If you have a lot of hosts use '-j0' to access more hosts in parallel.
|
If you have a lot of hosts use '-j0' to access more hosts in parallel.
|
||||||
|
|
||||||
|
@ -2414,7 +2421,13 @@ variable $PARALLEL which takes precedence over the file
|
||||||
=head1 PROFILE FILES
|
=head1 PROFILE FILES
|
||||||
|
|
||||||
If B<--profile> set, GNU B<parallel> will read the profile from that file instead of
|
If B<--profile> set, GNU B<parallel> will read the profile from that file instead of
|
||||||
~/.parallel/config.
|
~/.parallel/config. You can have multiple B<--profiles>.
|
||||||
|
|
||||||
|
Example: Profile for running a command on every sshlogin in
|
||||||
|
~/.ssh/sshlogins and prepend the output with the sshlogin:
|
||||||
|
|
||||||
|
echo --tag -S .. --nonall > ~/.parallel/n
|
||||||
|
parallel -Jn uptime
|
||||||
|
|
||||||
Example: Profile for running every command with B<-j-1> and B<nice>
|
Example: Profile for running every command with B<-j-1> and B<nice>
|
||||||
|
|
||||||
|
|
|
@ -66,3 +66,8 @@ parallel -v -J test_profile '<(echo {})' ::: foo
|
||||||
|
|
||||||
echo '### Test quoting of space in arguments (-S) from $PARALLEL'
|
echo '### Test quoting of space in arguments (-S) from $PARALLEL'
|
||||||
PARALLEL='-k --jobs 1 --sshlogin ssh\ '$SERVER1'\ ssh\ parallel@'$SERVER2' perl -pe "\\$a=1; print \\$a" ' parallel -v '<(echo {})' ::: foo
|
PARALLEL='-k --jobs 1 --sshlogin ssh\ '$SERVER1'\ ssh\ parallel@'$SERVER2' perl -pe "\\$a=1; print \\$a" ' parallel -v '<(echo {})' ::: foo
|
||||||
|
|
||||||
|
echo '### Test merging of profiles - sort needed because -k only works on the single machine'
|
||||||
|
echo --tag > ~/.parallel/test_tag
|
||||||
|
echo -S .. > ~/.parallel/test_S..
|
||||||
|
parallel -Jtest_tag -Jtest_S.. --nonall echo a | sort
|
||||||
|
|
|
@ -57,3 +57,6 @@ perl -pe '$a=1; print $a' <(echo foo)
|
||||||
### Test quoting of space in arguments (-S) from $PARALLEL
|
### Test quoting of space in arguments (-S) from $PARALLEL
|
||||||
perl -pe "\$a=1; print \$a" <(echo foo)
|
perl -pe "\$a=1; print \$a" <(echo foo)
|
||||||
1foo
|
1foo
|
||||||
|
### Test merging of profiles - sort needed because -k only works on the single machine
|
||||||
|
parallel-server3 a
|
||||||
|
parallel@parallel-server2 a
|
||||||
|
|
Loading…
Reference in a new issue