mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-12-27 15:17:54 +00:00
72 lines
2.1 KiB
Plaintext
72 lines
2.1 KiB
Plaintext
|
=head1 IDEAS
|
||
|
|
||
|
One char options not used: F G J K M P Q Y
|
||
|
|
||
|
Test if -0 works on filenames ending in '\n'
|
||
|
|
||
|
xargs dropin-replacement.
|
||
|
Implement the missing --features
|
||
|
|
||
|
monitor to see which jobs are currently running
|
||
|
http://code.google.com/p/ppss/
|
||
|
|
||
|
Accept signal INT instead of TERM to complete current running jobs but
|
||
|
do not start new jobs. Print out the number of jobs waiting to
|
||
|
complete on STDERR. Accept sig INT again to kill now. This seems to be
|
||
|
hard, as all foreground processes get the INT from the shell.
|
||
|
|
||
|
If there are nomore jobs (STDIN is closed) then make sure to
|
||
|
distribute the arguments evenly if running -X.
|
||
|
|
||
|
|
||
|
Distribute jobs to computers with different speeds/number-of-cpu-cores using ssh
|
||
|
ask the computers how many cpus they have and spawn appropriately
|
||
|
according to -j setting. Reuse ssh connection (-M and -S)
|
||
|
|
||
|
Start by porting everything to use sshlogin :.
|
||
|
|
||
|
SEED=$RANDOM
|
||
|
ssh -MS /tmp/ssh-%r@%h:%p-$SEED elvis
|
||
|
rsync --rsh="ssh -S /tmp/ssh-%r@%h:%p-$SEED" gitup elvis:/tmp/
|
||
|
ssh -S /tmp/ssh-%r@%h:%p-$SEED elvis hostname
|
||
|
|
||
|
FILE=gpl-3.0.txt
|
||
|
BASE=gpl-3.0
|
||
|
$ rsync -z $FILE e:$FILE
|
||
|
$ ssh e "cat $FILE | bzip2 > $BASE.bz2"
|
||
|
$ rsync -z e:$BASE.bz2 $BASE.bz2
|
||
|
$ ssh e "rm $FILE $BASE"
|
||
|
|
||
|
http://www.semicomplete.com/blog/geekery/distributed-xargs.html?source=rss20
|
||
|
http://code.google.com/p/ppss/wiki/Manual2
|
||
|
|
||
|
http://www.gnu.org/software/pexec/
|
||
|
|
||
|
Where will '>' be run? Local or remote? Remote.
|
||
|
|
||
|
|
||
|
Parallelize so this can be done:
|
||
|
mdm.screen find dir -execdir mdm-run cmd {} \;
|
||
|
Maybe:
|
||
|
find dir -execdir par$ --communication-file /tmp/comfile cmd {} \;
|
||
|
|
||
|
=head2 Comfile
|
||
|
|
||
|
This will put a lock on /tmp/comfile. The number of locks is the number of running commands.
|
||
|
If the number is smaller than -j then it will start a process in the background ( cmd & ),
|
||
|
otherwise wait.
|
||
|
|
||
|
par$ --wait /tmp/comfile will wait until no more locks on the file
|
||
|
|
||
|
=head2 mutex
|
||
|
|
||
|
mutex -n -l lockid -m max_locks [command]
|
||
|
mutex -u lockid
|
||
|
|
||
|
-l lockfile will lock using the lockid
|
||
|
-n nonblocking
|
||
|
-m maximal number of locks (default 1)
|
||
|
-u unlock
|
||
|
|
||
|
If command given works like: mutex -l lockfile -n number_of_locks ; command; mutex -u lockfile
|