parallel: Calculate #CPU as either #threads, #cores, or #sockets.

This commit is contained in:
Ole Tange 2018-07-14 06:11:58 +02:00
parent 0d5072907d
commit 896048efbc
5 changed files with 730 additions and 498 deletions

File diff suppressed because it is too large Load diff

View file

@ -975,7 +975,7 @@ See also B<--resume> B<--resume-failed>.
Number of jobslots on each machine. Run up to N jobs in parallel. 0 Number of jobslots on each machine. Run up to N jobs in parallel. 0
means as many as possible. Default is 100% which will run one job per means as many as possible. Default is 100% which will run one job per
CPU core on each machine. CPU on each machine.
If B<--semaphore> is set, the default is 1 thus making a mutex. If B<--semaphore> is set, the default is 1 thus making a mutex.
@ -988,8 +988,9 @@ If B<--semaphore> is set, the default is 1 thus making a mutex.
=item B<-P> I<+N> =item B<-P> I<+N>
Add N to the number of CPU cores. Run this many jobs in parallel. Add N to the number of CPUs. Run this many jobs in parallel. See
See also B<--use-cpus-instead-of-cores>. also B<--use-cores-instead-of-threads> and
B<--use-sockets-instead-of-threads>.
=item B<--jobs> I<-N> =item B<--jobs> I<-N>
@ -1000,9 +1001,10 @@ See also B<--use-cpus-instead-of-cores>.
=item B<-P> I<-N> =item B<-P> I<-N>
Subtract N from the number of CPU cores. Run this many jobs in parallel. Subtract N from the number of CPUs. Run this many jobs in parallel.
If the evaluated number is less than 1 then 1 will be used. See also If the evaluated number is less than 1 then 1 will be used. See also
B<--use-cpus-instead-of-cores>. B<--use-cores-instead-of-threads> and
B<--use-sockets-instead-of-threads>.
=item B<--jobs> I<N>% =item B<--jobs> I<N>%
@ -1013,8 +1015,9 @@ B<--use-cpus-instead-of-cores>.
=item B<-P> I<N>% =item B<-P> I<N>%
Multiply N% with the number of CPU cores. Run this many jobs in Multiply N% with the number of CPUs. Run this many jobs in
parallel. See also B<--use-cpus-instead-of-cores>. parallel. See also B<--use-cores-instead-of-threads> and
B<--use-sockets-instead-of-threads>.
=item B<--jobs> I<procfile> =item B<--jobs> I<procfile>
@ -1392,13 +1395,13 @@ inspired by bash's parameter expansion:
=item B<--progress> =item B<--progress>
Show progress of computations. List the computers involved in the task Show progress of computations. List the computers involved in the task
with number of CPU cores detected and the max number of jobs to with number of CPUs detected and the max number of jobs to run. After
run. After that show progress for each computer: number of running that show progress for each computer: number of running jobs, number
jobs, number of completed jobs, and percentage of all jobs done by of completed jobs, and percentage of all jobs done by this
this computer. The percentage will only be available after all jobs computer. The percentage will only be available after all jobs have
have been scheduled as GNU B<parallel> only read the next job when been scheduled as GNU B<parallel> only read the next job when ready to
ready to schedule it - this is to avoid wasting time and memory by schedule it - this is to avoid wasting time and memory by reading
reading everything at startup. everything at startup.
By sending GNU B<parallel> SIGUSR2 you can toggle turning on/off By sending GNU B<parallel> SIGUSR2 you can toggle turning on/off
B<--progress> on a running GNU B<parallel> process. B<--progress> on a running GNU B<parallel> process.
@ -1450,16 +1453,29 @@ exit (used by GNU B<parallel> itself to determine the line length
on remote computers). on remote computers).
=item B<--number-of-cpus> =item B<--number-of-cpus> (obsolete)
Print the number of physical CPUs and exit (used by GNU B<parallel> Print the number of physical CPU cores and exit.
itself to determine the number of physical CPUs on remote computers).
=item B<--number-of-cores> =item B<--number-of-cores> (alpha testing)
Print the number of CPU cores and exit (used by GNU B<parallel> itself Print the number of physical CPU cores and exit (used by GNU B<parallel> itself
to determine the number of CPU cores on remote computers). to determine the number of physical CPU cores on remote computers).
=item B<--number-of-sockets> (alpha testing)
Print the number of filled CPU sockets and exit (used by GNU
B<parallel> itself to determine the number of filled CPU sockets on
remote computers).
=item B<--number-of-threads> (alpha testing)
Print the number of hyperthreaded CPU cores and exit (used by GNU
B<parallel> itself to determine the number of hyperthreaded CPU cores
on remote computers).
=item B<--no-keep-order> =item B<--no-keep-order>
@ -2206,11 +2222,11 @@ I<secs> seconds after starting each ssh. I<secs> can be less than 1
seconds. seconds.
=item B<-S> I<[@hostgroups/][ncores/]sshlogin[,[@hostgroups/][ncores/]sshlogin[,...]]> =item B<-S> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]>
=item B<-S> I<@hostgroup> =item B<-S> I<@hostgroup>
=item B<--sshlogin> I<[@hostgroups/][ncores/]sshlogin[,[@hostgroups/][ncores/]sshlogin[,...]]> =item B<--sshlogin> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]>
=item B<--sshlogin> I<@hostgroup> =item B<--sshlogin> I<@hostgroup>
@ -2224,10 +2240,10 @@ will always be added to a hostgroup named the same as I<sshlogin>.
If only the I<@hostgroup> is given, only the sshlogins in that If only the I<@hostgroup> is given, only the sshlogins in that
hostgroup will be used. Multiple I<@hostgroup> can be given. hostgroup will be used. Multiple I<@hostgroup> can be given.
GNU B<parallel> will determine the number of CPU cores on the remote GNU B<parallel> will determine the number of CPUs on the remote
computers and run the number of jobs as specified by B<-j>. If the computers and run the number of jobs as specified by B<-j>. If the
number I<ncores> is given GNU B<parallel> will use this number for number I<ncpus> is given GNU B<parallel> will use this number for
number of CPU cores on the host. Normally I<ncores> will not be number of CPUs on the host. Normally I<ncpus> will not be
needed. needed.
An I<sshlogin> is of the form: An I<sshlogin> is of the form:
@ -2268,24 +2284,24 @@ lines. Empty lines and lines starting with '#' are ignored. Example:
server.example.com server.example.com
username@server2.example.com username@server2.example.com
8/my-8-core-server.example.com 8/my-8-cpu-server.example.com
2/my_other_username@my-dualcore.example.net 2/my_other_username@my-dualcore.example.net
# This server has SSH running on port 2222 # This server has SSH running on port 2222
ssh -p 2222 server.example.net ssh -p 2222 server.example.net
4/ssh -p 2222 quadserver.example.net 4/ssh -p 2222 quadserver.example.net
# Use a different ssh program # Use a different ssh program
myssh -p 2222 -l myusername hexacpu.example.net myssh -p 2222 -l myusername hexacpu.example.net
# Use a different ssh program with default number of cores # Use a different ssh program with default number of CPUs
//usr/local/bin/myssh -p 2222 -l myusername hexacpu //usr/local/bin/myssh -p 2222 -l myusername hexacpu
# Use a different ssh program with 6 cores # Use a different ssh program with 6 CPUs
6//usr/local/bin/myssh -p 2222 -l myusername hexacpu 6//usr/local/bin/myssh -p 2222 -l myusername hexacpu
# Assume 16 cores on the local computer # Assume 16 CPUs on the local computer
16/: 16/:
# Put server1 in hostgroup1 # Put server1 in hostgroup1
@hostgroup1/server1 @hostgroup1/server1
# Put myusername@server2 in hostgroup1+hostgroup2 # Put myusername@server2 in hostgroup1+hostgroup2
@hostgroup1+hostgroup2/myusername@server2 @hostgroup1+hostgroup2/myusername@server2
# Force 4 cores and put 'ssh -p 2222 server3' in hostgroup1 # Force 4 CPUs and put 'ssh -p 2222 server3' in hostgroup1
@hostgroup1/4/ssh -p 2222 server3 @hostgroup1/4/ssh -p 2222 server3
When using a different ssh program the last argument must be the hostname. When using a different ssh program the last argument must be the hostname.
@ -2553,16 +2569,46 @@ Use the replacement string I<replace-str> instead of B<{.}> for input
line without extension. line without extension.
=item B<--use-cpus-instead-of-cores> =item B<--use-sockets-instead-of-threads> (alpha testing)
Count the number of physical CPUs instead of CPU cores. When computing =item B<--use-cores-instead-of-threads> (alpha testing)
how many jobs to run simultaneously relative to the number of CPU cores
you can ask GNU B<parallel> to instead look at the number of physical =item B<--use-cpus-instead-of-cores> (obsolete)
CPUs. This will make sense for computers that have hyperthreading as
two jobs running on one CPU with hyperthreading will run slower than Determine how GNU B<parallel> counts the number of CPUs. GNU
two jobs running on two physical CPUs. Some multi-core CPUs can run B<parallel> uses this number when the number of jobslots is computed
faster if only one thread is running per physical CPU. Most users will relative to the number of CPUs (e.g. 100% or +1).
not need this option.
CPUs can be counted in three different ways:
=over 8
=item sockets
The number of filled CPU sockets (i.e. the number of physical chips).
=item cores
The number of physical cores (i.e. the number of physical compute
cores).
=item threads
The number of hyperthreaded cores (i.e. the number of virtual
cores - with some of them possibly being hyperthreaded)
=back
Normally the number of CPUs is computed as the number of CPU
threads. With B<--use-sockets-instead-of-threads> or
B<--use-cores-instead-of-threads> you can force it to be computed as
the number of filled sockets or number of cores instead.
Most users will not need these options.
B<--use-cpus-instead-of-cores> is a (misleading) alias for
B<--use-sockets-instead-of-threads> and is kept for backwards
compatibility.
=item B<-v> =item B<-v>
@ -2669,8 +2715,7 @@ using B<gzip> run:
parallel gzip --best ::: *.html parallel gzip --best ::: *.html
To convert *.wav to *.mp3 using LAME running one process per CPU core To convert *.wav to *.mp3 using LAME running one process per CPU run:
run:
parallel lame {} -o {.}.mp3 ::: *.wav parallel lame {} -o {.}.mp3 ::: *.wav
@ -2725,8 +2770,8 @@ file:
convert -geometry 120 foo.jpg thumb_foo.jpg convert -geometry 120 foo.jpg thumb_foo.jpg
This will run with number-of-cpu-cores jobs in parallel for all jpg This will run with number-of-cpus jobs in parallel for all jpg files
files in a directory: in a directory:
ls *.jpg | parallel convert -geometry 120 {} thumb_{} ls *.jpg | parallel convert -geometry 120 {} thumb_{}
@ -2879,7 +2924,7 @@ Create a directory for each zip-file and unzip it in that dir:
parallel 'mkdir {.}; cd {.}; unzip ../{}' ::: *.zip parallel 'mkdir {.}; cd {.}; unzip ../{}' ::: *.zip
Recompress all .gz files in current directory using B<bzip2> running 1 Recompress all .gz files in current directory using B<bzip2> running 1
job per CPU core in parallel: job per CPU in parallel:
parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
@ -3430,7 +3475,7 @@ GNU B<parallel> can often speed this up.
find . -type f | parallel -k -j150% -n 1000 -m grep -H -n STRING {} find . -type f | parallel -k -j150% -n 1000 -m grep -H -n STRING {}
This will run 1.5 job per core, and give 1000 arguments to B<grep>. This will run 1.5 job per CPU, and give 1000 arguments to B<grep>.
=head1 EXAMPLE: Grepping n lines for m regular expressions. =head1 EXAMPLE: Grepping n lines for m regular expressions.
@ -3491,13 +3536,13 @@ If it still does not fit in memory you can do this:
parallel --pipepart -a regexps.txt --block 1M grep -Ff - -n bigfile | parallel --pipepart -a regexps.txt --block 1M grep -Ff - -n bigfile |
sort -un | perl -pe 's/^\d+://' sort -un | perl -pe 's/^\d+://'
The 1M should be your free memory divided by the number of cores and The 1M should be your free memory divided by the number of CPU threads and
divided by 200 for B<grep -F> and by 1000 for normal B<grep>. On divided by 200 for B<grep -F> and by 1000 for normal B<grep>. On
GNU/Linux you can do: GNU/Linux you can do:
free=$(awk '/^((Swap)?Cached|MemFree|Buffers):/ { sum += $2 } free=$(awk '/^((Swap)?Cached|MemFree|Buffers):/ { sum += $2 }
END { print sum }' /proc/meminfo) END { print sum }' /proc/meminfo)
percpu=$((free / 200 / $(parallel --number-of-cores)))k percpu=$((free / 200 / $(parallel --number-of-threads)))k
parallel --pipepart -a regexps.txt --block $percpu --compress \ parallel --pipepart -a regexps.txt --block $percpu --compress \
grep -F -f - -n bigfile | grep -F -f - -n bigfile |
@ -3607,13 +3652,13 @@ To include the local computer add the special sshlogin ':' to the list:
server3.example.com server3.example.com
: :
GNU B<parallel> will try to determine the number of CPU cores on each GNU B<parallel> will try to determine the number of CPUs on each of
of the remote computers, and run one job per CPU core - even if the the remote computers, and run one job per CPU - even if the remote
remote computers do not have the same number of CPU cores. computers do not have the same number of CPUs.
If the number of CPU cores on the remote computers is not identified If the number of CPUs on the remote computers is not identified
correctly the number of CPU cores can be added in front. Here the correctly the number of CPUs can be added in front. Here the computer
computer has 8 CPU cores. has 8 CPUs.
seq 10 | parallel --sshlogin 8/server.example.com echo seq 10 | parallel --sshlogin 8/server.example.com echo
@ -3691,7 +3736,8 @@ the special short hand I<-S ..> can be used:
=head1 EXAMPLE: Distributing work to local and remote computers =head1 EXAMPLE: Distributing work to local and remote computers
Convert *.mp3 to *.ogg running one process per CPU core on local computer and server2: Convert *.mp3 to *.ogg running one process per CPU on local computer
and server2:
parallel --trc {.}.ogg -S server2,: \ parallel --trc {.}.ogg -S server2,: \
'mpg321 -w - {} | oggenc -q0 - -o {.}.ogg' ::: *.mp3 'mpg321 -w - {} | oggenc -q0 - -o {.}.ogg' ::: *.mp3
@ -3956,7 +4002,7 @@ To run 100 processes simultaneously do:
As there is not a I<command> the jobs will be evaluated by the shell. As there is not a I<command> the jobs will be evaluated by the shell.
=head1 EXAMPLE: Processing a big file using more cores =head1 EXAMPLE: Processing a big file using more CPUs
To process a big file or some output you can use B<--pipe> to split up To process a big file or some output you can use B<--pipe> to split up
the data into blocks and pipe the blocks into the processing program. the data into blocks and pipe the blocks into the processing program.
@ -3966,8 +4012,8 @@ If the program is B<gzip -9> you can do:
cat bigfile | parallel --pipe --recend '' -k gzip -9 > bigfile.gz cat bigfile | parallel --pipe --recend '' -k gzip -9 > bigfile.gz
This will split B<bigfile> into blocks of 1 MB and pass that to B<gzip This will split B<bigfile> into blocks of 1 MB and pass that to B<gzip
-9> in parallel. One B<gzip> will be run per CPU core. The output of -9> in parallel. One B<gzip> will be run per CPU. The output of B<gzip
B<gzip -9> will be kept in order and saved to B<bigfile.gz> -9> will be kept in order and saved to B<bigfile.gz>
B<gzip> works fine if the output is appended, but some processing does B<gzip> works fine if the output is appended, but some processing does
not work like that - for example sorting. For this GNU B<parallel> can not work like that - for example sorting. For this GNU B<parallel> can

View file

@ -94,9 +94,11 @@ user having to know the location. So if the user's path includes
dir that makes most sense for the sysadmin. dir that makes most sense for the sysadmin.
=head3 env_parallel.bash / env_parallel.zsh / env_parallel.ksh / env_parallel.pdksh =head3 env_parallel.bash / env_parallel.sh / env_parallel.ash /
env_parallel.dash / env_parallel.zsh / env_parallel.ksh /
env_parallel.mksh
B<env_parallel.(bash|ksh|pdksh|zsh)> defines the function B<env_parallel.(bash|sh|ash|dash|ksh|mksh|zsh)> defines the function
B<env_parallel>. It uses B<alias> and B<typeset> to dump the B<env_parallel>. It uses B<alias> and B<typeset> to dump the
configuration (with a few exceptions) into B<$PARALLEL_ENV> before configuration (with a few exceptions) into B<$PARALLEL_ENV> before
running GNU B<parallel>. running GNU B<parallel>.
@ -145,7 +147,7 @@ This is then all saved in B<$PARALLEL_ENV>.
GNU B<parallel> is called, and B<$PARALLEL_ENV> is deleted. GNU B<parallel> is called, and B<$PARALLEL_ENV> is deleted.
=head2 parset =head2 parset (supported in sh, ash, dash, bash, zsh, ksh, mksh)
B<parset> is a shell function. This is the reason why B<parset> can B<parset> is a shell function. This is the reason why B<parset> can
set variables: It runs in the shell which is calling it. set variables: It runs in the shell which is calling it.
@ -327,7 +329,9 @@ It is made this way to be compatible with B<*csh>/B<fish>.
< $FILE perl -e 'while(@ARGV) { < $FILE perl -e 'while(@ARGV) {
sysseek(STDIN,shift,0) || die; sysseek(STDIN,shift,0) || die;
$left = shift; $left = shift;
while($read = sysread(STDIN,$buf, ($left > 131072 ? 131072 : $left))){ while($read =
sysread(STDIN,$buf,
($left > 131072 ? 131072 : $left))){
$left -= $read; $left -= $read;
syswrite(STDOUT,$buf); syswrite(STDOUT,$buf);
} }
@ -343,7 +347,8 @@ and send it to STDOUT.
=item --transfer =item --transfer
ssh $SSHLOGIN mkdir -p ./$WORKDIR; ssh $SSHLOGIN mkdir -p ./$WORKDIR;
rsync --protocol 30 -rlDzR -essh ./{} $SSHLOGIN:./$WORKDIR; rsync --protocol 30 -rlDzR \
-essh ./{} $SSHLOGIN:./$WORKDIR;
ssh $SSHLOGIN "$COMMAND" ssh $SSHLOGIN "$COMMAND"
Read about B<--protocol 30> in the section B<Rsync protocol version>. Read about B<--protocol 30> in the section B<Rsync protocol version>.
@ -359,8 +364,10 @@ Read about B<--protocol 30> in the section B<Rsync protocol version>.
=item --return I<file> =item --return I<file>
$COMMAND; _EXIT_status=$?; mkdir -p $WORKDIR; $COMMAND; _EXIT_status=$?; mkdir -p $WORKDIR;
rsync --protocol 30 --rsync-path=cd\ ./$WORKDIR\;\ rsync \ rsync --protocol 30 \
-rlDzR -essh $SSHLOGIN:./$FILE ./$WORKDIR; exit $_EXIT_status; --rsync-path=cd\ ./$WORKDIR\;\ rsync \
-rlDzR -essh $SSHLOGIN:./$FILE ./$WORKDIR;
exit $_EXIT_status;
The B<--rsync-path=cd ...> is needed because old versions of B<rsync> The B<--rsync-path=cd ...> is needed because old versions of B<rsync>
do not support B<--no-implied-dirs>. do not support B<--no-implied-dirs>.
@ -374,7 +381,8 @@ wrapping 'sh -c' is enough?
$RETURN is the wrapper from B<--return> $RETURN is the wrapper from B<--return>
$COMMAND; _EXIT_status=$?; $RETURN; $COMMAND; _EXIT_status=$?; $RETURN;
ssh $SSHLOGIN \(rm\ -f\ ./$WORKDIR/{}\;\ rmdir\ ./$WORKDIR\ \>\&/dev/null\;\); ssh $SSHLOGIN \(rm\ -f\ ./$WORKDIR/{}\;\
rmdir\ ./$WORKDIR\ \>\&/dev/null\;\);
exit $_EXIT_status; exit $_EXIT_status;
B<$_EXIT_status>: see B<--return> above. B<$_EXIT_status>: see B<--return> above.
@ -496,7 +504,7 @@ And this will again work just fine, as long as you are running a
single command. When you are running a composed command you need nice single command. When you are running a composed command you need nice
to apply to the whole command, and it gets harder still: to apply to the whole command, and it gets harder still:
parallel -S server -q nice bash -c 'command1 ...; command2 | command3' parallel -S server -q nice bash -c 'command1 ...; cmd2 | cmd3'
It is not impossible, but by using B<--nice> GNU B<parallel> will do It is not impossible, but by using B<--nice> GNU B<parallel> will do
the right thing for you. Similarly when transferring files: It starts the right thing for you. Similarly when transferring files: It starts
@ -824,7 +832,8 @@ B<parallel> had been in its normal mode. The script looks like this:
< file perl -e 'while(@ARGV) { < file perl -e 'while(@ARGV) {
sysseek(STDIN,shift,0) || die; sysseek(STDIN,shift,0) || die;
$left = shift; $left = shift;
while($read = sysread(STDIN,$buf, ($left > 32768 ? 32768 : $left))){ while($read = sysread(STDIN,$buf,
($left > 131072 ? 131072 : $left))){
$left -= $read; syswrite(STDOUT,$buf); $left -= $read; syswrite(STDOUT,$buf);
} }
}' startbyte length_in_bytes }' startbyte length_in_bytes
@ -1135,6 +1144,23 @@ Unfortunately it is not always possible to predict the root cause of
the error. the error.
=head2 Determine number of CPUs
CPUs is an ambiguous term. It can mean the number of socket filled
(i.e. the number of physical chips). It can mean the number of cores
(i.e. the number of physical compute cores). It can mean the number of
hyperthreaded cores (i.e. the number of virtual cores - with some of
them possibly being hyperthreaded).
On ark.intel.com Intel uses the terms I<cores> and I<threads> for
number of physical cores and the number of hyperthreaded cores
respectively.
GNU B<parallel> uses uses I<CPUs> as the number of compute units and
the terms I<sockets>, I<cores>, and I<threads> to specify how the
number of compute units is calculated.
=head2 Computation of load =head2 Computation of load
Contrary to the obvious B<--load> does not use load average. This is Contrary to the obvious B<--load> does not use load average. This is
@ -1175,6 +1201,7 @@ respectively.
The Signal column has been renamed to _Signal due to Signal being a The Signal column has been renamed to _Signal due to Signal being a
reserved word in MySQL. reserved word in MySQL.
=head2 Logo =head2 Logo
The logo is inspired by the Cafe Wall illusion. The font is DejaVu The logo is inspired by the Cafe Wall illusion. The font is DejaVu
@ -1237,6 +1264,7 @@ Will that require 2x block size memory?
These decisions were relevant for earlier versions of GNU B<parallel>, These decisions were relevant for earlier versions of GNU B<parallel>,
but not the current version. They are kept here as historical record. but not the current version. They are kept here as historical record.
=head2 --tollef =head2 --tollef
You can read about the history of GNU B<parallel> on You can read about the history of GNU B<parallel> on

View file

@ -18,8 +18,8 @@ P="$P_WORKING"
POLAR=`parallel -k echo {}.polarhome.com ::: $P` POLAR=`parallel -k echo {}.polarhome.com ::: $P`
S_POLAR=`parallel -k echo -S 1/{}.polarhome.com ::: $P` S_POLAR=`parallel -k echo -S 1/{}.polarhome.com ::: $P`
# 2018-04-22 TIMEOUT=20 # 2018-04-22 MAXTIME=20
TIMEOUT=25 MAXTIME=25
RETRIES=4 RETRIES=4
parallel --retries $RETRIES rsync -a /usr/local/bin/{parallel,env_parallel,env_parallel.*,parcat} ::: redhat.polarhome.com:bin/ parallel --retries $RETRIES rsync -a /usr/local/bin/{parallel,env_parallel,env_parallel.*,parcat} ::: redhat.polarhome.com:bin/
@ -28,9 +28,9 @@ doit() {
# Avoid the stupid /etc/issue.net banner at Polarhome: -oLogLevel=quiet # Avoid the stupid /etc/issue.net banner at Polarhome: -oLogLevel=quiet
PARALLEL_SSH="ssh -oLogLevel=quiet" PARALLEL_SSH="ssh -oLogLevel=quiet"
export PARALLEL_SSH export PARALLEL_SSH
export TIMEOUT export MAXTIME
export RETRIES export RETRIES
echo TIMEOUT=$TIMEOUT RETRIES=$RETRIES echo MAXTIME=$MAXTIME RETRIES=$RETRIES
copy() { copy() {
# scp, but atomic (avoid half files if disconnected) # scp, but atomic (avoid half files if disconnected)
@ -43,19 +43,19 @@ doit() {
export -f copy export -f copy
par_nonall() { par_nonall() {
parallel -j15 -k --retries $RETRIES --timeout $TIMEOUT --delay 0.1 --tag \ parallel -j15 -k --retries $RETRIES --timeout $MAXTIME --delay 0.1 --tag \
--nonall $S_POLAR --argsep ,:- \ --nonall $S_POLAR --argsep ,:- \
'source setupenv >&/dev/null || . `pwd`/setupenv;' "$@" 'source setupenv >&/dev/null || . `pwd`/setupenv;' "$@"
} }
export -f par_nonall export -f par_nonall
echo '### Copy commands to servers' echo '### Copy commands to servers'
parallel -vkj15 --retries $RETRIES --timeout $TIMEOUT --delay 0.03 --tag \ parallel -vkj15 --retries $RETRIES --timeout $MAXTIME --delay 0.03 --tag \
copy {2} {1} {1/} \ copy {2} {1} {1/} \
::: bin/{parallel,env_parallel,env_parallel.*,parcat,stdout} \ ::: bin/{parallel,env_parallel,env_parallel.*,parcat,stdout} \
::: $POLAR ::: $POLAR
echo Done copying echo Done copying
# Test empty command # Test empty command
test_empty_cmd() { test_empty_cmd() {
echo '### Test if empty command in process list causes problems' echo '### Test if empty command in process list causes problems'
@ -65,11 +65,19 @@ doit() {
export -f test_empty_cmd export -f test_empty_cmd
PARALLEL='--env test_empty_cmd' par_nonall test_empty_cmd 2>&1 PARALLEL='--env test_empty_cmd' par_nonall test_empty_cmd 2>&1
par_nonall parallel echo Works on {} ::: '`hostname`' 2>&1 par_nonall parallel echo Works on {} ::: '`hostname`' 2>&1
par_nonall "stdout parallel --tmpdir / echo ::: test read-only tmp |" \ par_nonall "stdout parallel --tmpdir / echo ::: test read-only tmp |" \
"perl -pe '\$exit += s:/[a-z0-9_]+.arg:/XXXXXXXX.arg:gi; \$exit += s/[0-9][0-9][0-9][0-9]/0000/gi; END { exit not \$exit }' &&" \ "perl -pe '\$exit += s:/[a-z0-9_]+.arg:/XXXXXXXX.arg:gi; \$exit += s/[0-9][0-9][0-9][0-9]/0000/gi; END { exit not \$exit }' &&" \
"echo OK readonly tmp" 2>&1 "echo OK readonly tmp" 2>&1
echo
echo '### --number-of-cores/--number-of-cpus should work with no error'
echo
par_nonall parallel --number-of-sockets 2>&1
par_nonall parallel --number-of-cores 2>&1
par_nonall parallel --number-of-threads 2>&1
par_nonall parallel --number-of-cpus 2>&1
echo echo
echo '### Does exporting a bash function kill parallel' echo '### Does exporting a bash function kill parallel'
echo echo

View file

@ -1,4 +1,4 @@
TIMEOUT=25 RETRIES=4 MAXTIME=25 RETRIES=4
### Copy commands to servers ### Copy commands to servers
bin/parallel openbsd.polarhome.com copy openbsd.polarhome.com bin/parallel parallel bin/parallel openbsd.polarhome.com copy openbsd.polarhome.com bin/parallel parallel
bin/parallel tru64.polarhome.com copy tru64.polarhome.com bin/parallel parallel bin/parallel tru64.polarhome.com copy tru64.polarhome.com bin/parallel parallel
@ -184,6 +184,29 @@ bin/env_parallel.ksh hurd.polarhome.com copy hurd.polarhome.com bin/env_parallel
bin/env_parallel.ksh freebsd.polarhome.com copy freebsd.polarhome.com bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh freebsd.polarhome.com copy freebsd.polarhome.com bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh ubuntu.polarhome.com copy ubuntu.polarhome.com bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh ubuntu.polarhome.com copy ubuntu.polarhome.com bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh openindiana.polarhome.com copy openindiana.polarhome.com bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh openindiana.polarhome.com copy openindiana.polarhome.com bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.mksh openbsd.polarhome.com copy openbsd.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh tru64.polarhome.com copy tru64.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian.polarhome.com copy debian.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh redhat.polarhome.com copy redhat.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh netbsd.polarhome.com copy netbsd.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh macosx.polarhome.com copy macosx.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh miros.polarhome.com copy miros.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh centos.polarhome.com copy centos.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh unixware.polarhome.com copy unixware.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh pidora.polarhome.com copy pidora.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh scosysv.polarhome.com copy scosysv.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh raspbian.polarhome.com copy raspbian.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh solaris-x86.polarhome.com copy solaris-x86.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh aix.polarhome.com copy aix.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh mandriva.polarhome.com copy mandriva.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian-ppc.polarhome.com copy debian-ppc.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh suse.polarhome.com copy suse.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh solaris.polarhome.com copy solaris.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hpux.polarhome.com copy hpux.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hurd.polarhome.com copy hurd.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh freebsd.polarhome.com copy freebsd.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh ubuntu.polarhome.com copy ubuntu.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh openindiana.polarhome.com copy openindiana.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.pdksh openbsd.polarhome.com copy openbsd.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh openbsd.polarhome.com copy openbsd.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh tru64.polarhome.com copy tru64.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh tru64.polarhome.com copy tru64.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh debian.polarhome.com copy debian.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh debian.polarhome.com copy debian.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh
@ -388,52 +411,143 @@ ubuntu.polarhome.com Works on ubuntu
unixware.polarhome.com Works on unixware.polarhome.com unixware.polarhome.com Works on unixware.polarhome.com
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
aix.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: The file access permissions do not allow the specified action. at /home/t/tange/bin/parallel line 0000 aix.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: The file access permissions do not allow the specified action. at /home/t/tange/bin/parallel line 0000
aix.polarhome.com OK aix.polarhome.com OK readonly tmp
centos.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable centos.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
centos.polarhome.com at /home/t/tange/bin/parallel line 0000 centos.polarhome.com at /home/t/tange/bin/parallel line 0000
centos.polarhome.com OK centos.polarhome.com OK readonly tmp
debian-ppc.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000. debian-ppc.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
debian-ppc.polarhome.com OK debian-ppc.polarhome.com OK readonly tmp
debian.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000. debian.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
debian.polarhome.com OK debian.polarhome.com OK readonly tmp
freebsd.polarhome.com Syntax error: Bad fd number freebsd.polarhome.com Syntax error: Bad fd number
hpux.polarhome.com No such file or directory: bash hpux.polarhome.com No such file or directory: bash
macosx.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /Users/tange/bin/parallel line 0000 macosx.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /Users/tange/bin/parallel line 0000
macosx.polarhome.com OK macosx.polarhome.com OK readonly tmp
mandriva.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000 mandriva.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
mandriva.polarhome.com OK mandriva.polarhome.com OK readonly tmp
miros.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable miros.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
miros.polarhome.com at /home/t/tange/bin/parallel line 0000 miros.polarhome.com at /home/t/tange/bin/parallel line 0000
miros.polarhome.com OK miros.polarhome.com OK readonly tmp
netbsd.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000. netbsd.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
openbsd.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000 openbsd.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
openbsd.polarhome.com OK openbsd.polarhome.com OK readonly tmp
openindiana.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /u/t/tange/bin/parallel line 0000 openindiana.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /u/t/tange/bin/parallel line 0000
openindiana.polarhome.com OK openindiana.polarhome.com OK readonly tmp
pidora.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000. pidora.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
pidora.polarhome.com OK pidora.polarhome.com OK readonly tmp
raspbian.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000 raspbian.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
raspbian.polarhome.com OK raspbian.polarhome.com OK readonly tmp
redhat.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000 redhat.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
redhat.polarhome.com OK redhat.polarhome.com OK readonly tmp
scosysv.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable scosysv.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
scosysv.polarhome.com at /home/t/tange/bin/parallel line 0000 scosysv.polarhome.com at /home/t/tange/bin/parallel line 0000
scosysv.polarhome.com OK scosysv.polarhome.com OK readonly tmp
solaris-x86.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at ~/bin/parallel line 0000 solaris-x86.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at ~/bin/parallel line 0000
solaris-x86.polarhome.com OK solaris-x86.polarhome.com OK readonly tmp
solaris.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable solaris.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
solaris.polarhome.com at /home/t/tange/bin/parallel line 0000 solaris.polarhome.com at /home/t/tange/bin/parallel line 0000
solaris.polarhome.com OK solaris.polarhome.com OK readonly tmp
suse.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000. suse.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
suse.polarhome.com OK suse.polarhome.com OK readonly tmp
tru64.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable tru64.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
tru64.polarhome.com at /home/t/tange/bin/parallel line 0000 tru64.polarhome.com at /home/t/tange/bin/parallel line 0000
tru64.polarhome.com OK tru64.polarhome.com OK readonly tmp
ubuntu.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000. ubuntu.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
ubuntu.polarhome.com OK ubuntu.polarhome.com OK readonly tmp
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
unixware.polarhome.com UX:env: ERROR: No such file or directory: bash unixware.polarhome.com UX:env: ERROR: No such file or directory: bash
### --number-of-cores/--number-of-cpus should work with no error
aix.polarhome.com 1
centos.polarhome.com 1
debian-ppc.polarhome.com 1
debian.polarhome.com 1
freebsd.polarhome.com Syntax error: Bad fd number
macosx.polarhome.com 2
mandriva.polarhome.com 1
miros.polarhome.com 1
netbsd.polarhome.com 1
openbsd.polarhome.com 1
openindiana.polarhome.com 1
pidora.polarhome.com 1
raspbian.polarhome.com 1
redhat.polarhome.com 1
scosysv.polarhome.com 1
solaris-x86.polarhome.com
solaris.polarhome.com
suse.polarhome.com 1
tru64.polarhome.com 1
ubuntu.polarhome.com 1
unixware.polarhome.com 1
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
aix.polarhome.com 1
centos.polarhome.com 1
debian-ppc.polarhome.com 1
debian.polarhome.com 2
freebsd.polarhome.com Syntax error: Bad fd number
macosx.polarhome.com 2
mandriva.polarhome.com 1
miros.polarhome.com 1
netbsd.polarhome.com 1
openbsd.polarhome.com 1
openindiana.polarhome.com 1
pidora.polarhome.com 1
raspbian.polarhome.com 1
redhat.polarhome.com 2
scosysv.polarhome.com 1
solaris-x86.polarhome.com 1
solaris.polarhome.com 2
suse.polarhome.com 1
tru64.polarhome.com 1
ubuntu.polarhome.com 2
unixware.polarhome.com 1
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
aix.polarhome.com 1
centos.polarhome.com 1
debian-ppc.polarhome.com 1
debian.polarhome.com 2
freebsd.polarhome.com Syntax error: Bad fd number
macosx.polarhome.com 2
mandriva.polarhome.com 1
miros.polarhome.com 1
netbsd.polarhome.com 1
openbsd.polarhome.com 1
openindiana.polarhome.com 1
pidora.polarhome.com 1
raspbian.polarhome.com 1
redhat.polarhome.com 2
scosysv.polarhome.com 1
solaris-x86.polarhome.com 1
solaris.polarhome.com 2
suse.polarhome.com 1
tru64.polarhome.com 1
ubuntu.polarhome.com 2
unixware.polarhome.com 1
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
aix.polarhome.com 1
centos.polarhome.com 1
debian-ppc.polarhome.com 1
debian.polarhome.com 2
freebsd.polarhome.com Syntax error: Bad fd number
macosx.polarhome.com 2
mandriva.polarhome.com 1
miros.polarhome.com 1
netbsd.polarhome.com 1
openbsd.polarhome.com 1
openindiana.polarhome.com 1
pidora.polarhome.com 1
raspbian.polarhome.com 1
redhat.polarhome.com 2
scosysv.polarhome.com 1
solaris-x86.polarhome.com 1
solaris.polarhome.com 2
suse.polarhome.com 1
tru64.polarhome.com 1
ubuntu.polarhome.com 2
unixware.polarhome.com 1
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
### Does exporting a bash function kill parallel ### Does exporting a bash function kill parallel
aix.polarhome.com bash only A aix.polarhome.com bash only A
@ -491,6 +605,7 @@ aix.polarhome.com /home/t/tange/.shrc
aix.polarhome.com /home/t/tange/.zshenv aix.polarhome.com /home/t/tange/.zshenv
aix.polarhome.com /home/t/tange/.config/fish/config.fish aix.polarhome.com /home/t/tange/.config/fish/config.fish
aix.polarhome.com /home/t/tange/.kshrc aix.polarhome.com /home/t/tange/.kshrc
aix.polarhome.com /home/t/tange/.mkshrc
aix.polarhome.com /home/t/tange/.profile aix.polarhome.com /home/t/tange/.profile
aix.polarhome.com /home/t/tange/.cshrc aix.polarhome.com /home/t/tange/.cshrc
aix.polarhome.com /home/t/tange/.tcshrc aix.polarhome.com /home/t/tange/.tcshrc
@ -501,6 +616,7 @@ centos.polarhome.com /home/t/tange/.shrc
centos.polarhome.com /home/t/tange/.zshenv centos.polarhome.com /home/t/tange/.zshenv
centos.polarhome.com /home/t/tange/.config/fish/config.fish centos.polarhome.com /home/t/tange/.config/fish/config.fish
centos.polarhome.com /home/t/tange/.kshrc centos.polarhome.com /home/t/tange/.kshrc
centos.polarhome.com /home/t/tange/.mkshrc
centos.polarhome.com /home/t/tange/.profile centos.polarhome.com /home/t/tange/.profile
centos.polarhome.com /home/t/tange/.cshrc centos.polarhome.com /home/t/tange/.cshrc
centos.polarhome.com /home/t/tange/.tcshrc centos.polarhome.com /home/t/tange/.tcshrc
@ -511,6 +627,7 @@ debian-ppc.polarhome.com /home/t/tange/.shrc
debian-ppc.polarhome.com /home/t/tange/.zshenv debian-ppc.polarhome.com /home/t/tange/.zshenv
debian-ppc.polarhome.com /home/t/tange/.config/fish/config.fish debian-ppc.polarhome.com /home/t/tange/.config/fish/config.fish
debian-ppc.polarhome.com /home/t/tange/.kshrc debian-ppc.polarhome.com /home/t/tange/.kshrc
debian-ppc.polarhome.com /home/t/tange/.mkshrc
debian-ppc.polarhome.com /home/t/tange/.profile debian-ppc.polarhome.com /home/t/tange/.profile
debian-ppc.polarhome.com /home/t/tange/.cshrc debian-ppc.polarhome.com /home/t/tange/.cshrc
debian-ppc.polarhome.com /home/t/tange/.tcshrc debian-ppc.polarhome.com /home/t/tange/.tcshrc
@ -521,6 +638,7 @@ debian.polarhome.com /home/t/tange/.shrc
debian.polarhome.com /home/t/tange/.zshenv debian.polarhome.com /home/t/tange/.zshenv
debian.polarhome.com /home/t/tange/.config/fish/config.fish debian.polarhome.com /home/t/tange/.config/fish/config.fish
debian.polarhome.com /home/t/tange/.kshrc debian.polarhome.com /home/t/tange/.kshrc
debian.polarhome.com /home/t/tange/.mkshrc
debian.polarhome.com /home/t/tange/.profile debian.polarhome.com /home/t/tange/.profile
debian.polarhome.com /home/t/tange/.cshrc debian.polarhome.com /home/t/tange/.cshrc
debian.polarhome.com /home/t/tange/.tcshrc debian.polarhome.com /home/t/tange/.tcshrc
@ -532,6 +650,7 @@ macosx.polarhome.com /Users/tange/.shrc
macosx.polarhome.com /Users/tange/.zshenv macosx.polarhome.com /Users/tange/.zshenv
macosx.polarhome.com /Users/tange/.config/fish/config.fish macosx.polarhome.com /Users/tange/.config/fish/config.fish
macosx.polarhome.com /Users/tange/.kshrc macosx.polarhome.com /Users/tange/.kshrc
macosx.polarhome.com /Users/tange/.mkshrc
macosx.polarhome.com /Users/tange/.profile macosx.polarhome.com /Users/tange/.profile
macosx.polarhome.com /Users/tange/.cshrc macosx.polarhome.com /Users/tange/.cshrc
macosx.polarhome.com /Users/tange/.tcshrc macosx.polarhome.com /Users/tange/.tcshrc
@ -542,6 +661,7 @@ mandriva.polarhome.com /home/t/tange/.shrc
mandriva.polarhome.com /home/t/tange/.zshenv mandriva.polarhome.com /home/t/tange/.zshenv
mandriva.polarhome.com /home/t/tange/.config/fish/config.fish mandriva.polarhome.com /home/t/tange/.config/fish/config.fish
mandriva.polarhome.com /home/t/tange/.kshrc mandriva.polarhome.com /home/t/tange/.kshrc
mandriva.polarhome.com /home/t/tange/.mkshrc
mandriva.polarhome.com /home/t/tange/.profile mandriva.polarhome.com /home/t/tange/.profile
mandriva.polarhome.com /home/t/tange/.cshrc mandriva.polarhome.com /home/t/tange/.cshrc
mandriva.polarhome.com /home/t/tange/.tcshrc mandriva.polarhome.com /home/t/tange/.tcshrc
@ -552,6 +672,7 @@ miros.polarhome.com /home/t/tange/.shrc
miros.polarhome.com /home/t/tange/.zshenv miros.polarhome.com /home/t/tange/.zshenv
miros.polarhome.com /home/t/tange/.config/fish/config.fish miros.polarhome.com /home/t/tange/.config/fish/config.fish
miros.polarhome.com /home/t/tange/.kshrc miros.polarhome.com /home/t/tange/.kshrc
miros.polarhome.com /home/t/tange/.mkshrc
miros.polarhome.com /home/t/tange/.profile miros.polarhome.com /home/t/tange/.profile
miros.polarhome.com /home/t/tange/.cshrc miros.polarhome.com /home/t/tange/.cshrc
miros.polarhome.com /home/t/tange/.tcshrc miros.polarhome.com /home/t/tange/.tcshrc
@ -562,6 +683,7 @@ netbsd.polarhome.com /home/t/tange/.shrc
netbsd.polarhome.com /home/t/tange/.zshenv netbsd.polarhome.com /home/t/tange/.zshenv
netbsd.polarhome.com /home/t/tange/.config/fish/config.fish netbsd.polarhome.com /home/t/tange/.config/fish/config.fish
netbsd.polarhome.com /home/t/tange/.kshrc netbsd.polarhome.com /home/t/tange/.kshrc
netbsd.polarhome.com /home/t/tange/.mkshrc
netbsd.polarhome.com /home/t/tange/.profile netbsd.polarhome.com /home/t/tange/.profile
netbsd.polarhome.com /home/t/tange/.cshrc netbsd.polarhome.com /home/t/tange/.cshrc
netbsd.polarhome.com /home/t/tange/.tcshrc netbsd.polarhome.com /home/t/tange/.tcshrc
@ -572,6 +694,7 @@ openbsd.polarhome.com /home/t/tange/.shrc
openbsd.polarhome.com /home/t/tange/.zshenv openbsd.polarhome.com /home/t/tange/.zshenv
openbsd.polarhome.com /home/t/tange/.config/fish/config.fish openbsd.polarhome.com /home/t/tange/.config/fish/config.fish
openbsd.polarhome.com /home/t/tange/.kshrc openbsd.polarhome.com /home/t/tange/.kshrc
openbsd.polarhome.com /home/t/tange/.mkshrc
openbsd.polarhome.com /home/t/tange/.profile openbsd.polarhome.com /home/t/tange/.profile
openbsd.polarhome.com /home/t/tange/.cshrc openbsd.polarhome.com /home/t/tange/.cshrc
openbsd.polarhome.com /home/t/tange/.tcshrc openbsd.polarhome.com /home/t/tange/.tcshrc
@ -582,6 +705,7 @@ openindiana.polarhome.com /u/t/tange/.shrc
openindiana.polarhome.com /u/t/tange/.zshenv openindiana.polarhome.com /u/t/tange/.zshenv
openindiana.polarhome.com /u/t/tange/.config/fish/config.fish openindiana.polarhome.com /u/t/tange/.config/fish/config.fish
openindiana.polarhome.com /u/t/tange/.kshrc openindiana.polarhome.com /u/t/tange/.kshrc
openindiana.polarhome.com /u/t/tange/.mkshrc
openindiana.polarhome.com /u/t/tange/.profile openindiana.polarhome.com /u/t/tange/.profile
openindiana.polarhome.com /u/t/tange/.cshrc openindiana.polarhome.com /u/t/tange/.cshrc
openindiana.polarhome.com /u/t/tange/.tcshrc openindiana.polarhome.com /u/t/tange/.tcshrc
@ -592,6 +716,7 @@ pidora.polarhome.com /home/t/tange/.shrc
pidora.polarhome.com /home/t/tange/.zshenv pidora.polarhome.com /home/t/tange/.zshenv
pidora.polarhome.com /home/t/tange/.config/fish/config.fish pidora.polarhome.com /home/t/tange/.config/fish/config.fish
pidora.polarhome.com /home/t/tange/.kshrc pidora.polarhome.com /home/t/tange/.kshrc
pidora.polarhome.com /home/t/tange/.mkshrc
pidora.polarhome.com /home/t/tange/.profile pidora.polarhome.com /home/t/tange/.profile
pidora.polarhome.com /home/t/tange/.cshrc pidora.polarhome.com /home/t/tange/.cshrc
pidora.polarhome.com /home/t/tange/.tcshrc pidora.polarhome.com /home/t/tange/.tcshrc
@ -602,6 +727,7 @@ raspbian.polarhome.com /home/t/tange/.shrc
raspbian.polarhome.com /home/t/tange/.zshenv raspbian.polarhome.com /home/t/tange/.zshenv
raspbian.polarhome.com /home/t/tange/.config/fish/config.fish raspbian.polarhome.com /home/t/tange/.config/fish/config.fish
raspbian.polarhome.com /home/t/tange/.kshrc raspbian.polarhome.com /home/t/tange/.kshrc
raspbian.polarhome.com /home/t/tange/.mkshrc
raspbian.polarhome.com /home/t/tange/.profile raspbian.polarhome.com /home/t/tange/.profile
raspbian.polarhome.com /home/t/tange/.cshrc raspbian.polarhome.com /home/t/tange/.cshrc
raspbian.polarhome.com /home/t/tange/.tcshrc raspbian.polarhome.com /home/t/tange/.tcshrc
@ -612,6 +738,7 @@ redhat.polarhome.com /home/t/tange/.shrc
redhat.polarhome.com /home/t/tange/.zshenv redhat.polarhome.com /home/t/tange/.zshenv
redhat.polarhome.com /home/t/tange/.config/fish/config.fish redhat.polarhome.com /home/t/tange/.config/fish/config.fish
redhat.polarhome.com /home/t/tange/.kshrc redhat.polarhome.com /home/t/tange/.kshrc
redhat.polarhome.com /home/t/tange/.mkshrc
redhat.polarhome.com /home/t/tange/.profile redhat.polarhome.com /home/t/tange/.profile
redhat.polarhome.com /home/t/tange/.cshrc redhat.polarhome.com /home/t/tange/.cshrc
redhat.polarhome.com /home/t/tange/.tcshrc redhat.polarhome.com /home/t/tange/.tcshrc
@ -622,6 +749,7 @@ scosysv.polarhome.com /home/t/tange/.shrc
scosysv.polarhome.com /home/t/tange/.zshenv scosysv.polarhome.com /home/t/tange/.zshenv
scosysv.polarhome.com /home/t/tange/.config/fish/config.fish scosysv.polarhome.com /home/t/tange/.config/fish/config.fish
scosysv.polarhome.com /home/t/tange/.kshrc scosysv.polarhome.com /home/t/tange/.kshrc
scosysv.polarhome.com /home/t/tange/.mkshrc
scosysv.polarhome.com /home/t/tange/.profile scosysv.polarhome.com /home/t/tange/.profile
scosysv.polarhome.com /home/t/tange/.cshrc scosysv.polarhome.com /home/t/tange/.cshrc
scosysv.polarhome.com /home/t/tange/.tcshrc scosysv.polarhome.com /home/t/tange/.tcshrc
@ -632,6 +760,7 @@ solaris-x86.polarhome.com ~/.shrc
solaris-x86.polarhome.com ~/.zshenv solaris-x86.polarhome.com ~/.zshenv
solaris-x86.polarhome.com ~/.config/fish/config.fish solaris-x86.polarhome.com ~/.config/fish/config.fish
solaris-x86.polarhome.com ~/.kshrc solaris-x86.polarhome.com ~/.kshrc
solaris-x86.polarhome.com ~/.mkshrc
solaris-x86.polarhome.com ~/.profile solaris-x86.polarhome.com ~/.profile
solaris-x86.polarhome.com ~/.cshrc solaris-x86.polarhome.com ~/.cshrc
solaris-x86.polarhome.com ~/.tcshrc solaris-x86.polarhome.com ~/.tcshrc
@ -642,6 +771,7 @@ solaris.polarhome.com /home/t/tange/.shrc
solaris.polarhome.com /home/t/tange/.zshenv solaris.polarhome.com /home/t/tange/.zshenv
solaris.polarhome.com /home/t/tange/.config/fish/config.fish solaris.polarhome.com /home/t/tange/.config/fish/config.fish
solaris.polarhome.com /home/t/tange/.kshrc solaris.polarhome.com /home/t/tange/.kshrc
solaris.polarhome.com /home/t/tange/.mkshrc
solaris.polarhome.com /home/t/tange/.profile solaris.polarhome.com /home/t/tange/.profile
solaris.polarhome.com /home/t/tange/.cshrc solaris.polarhome.com /home/t/tange/.cshrc
solaris.polarhome.com /home/t/tange/.tcshrc solaris.polarhome.com /home/t/tange/.tcshrc
@ -652,6 +782,7 @@ suse.polarhome.com /home/t/tange/.shrc
suse.polarhome.com /home/t/tange/.zshenv suse.polarhome.com /home/t/tange/.zshenv
suse.polarhome.com /home/t/tange/.config/fish/config.fish suse.polarhome.com /home/t/tange/.config/fish/config.fish
suse.polarhome.com /home/t/tange/.kshrc suse.polarhome.com /home/t/tange/.kshrc
suse.polarhome.com /home/t/tange/.mkshrc
suse.polarhome.com /home/t/tange/.profile suse.polarhome.com /home/t/tange/.profile
suse.polarhome.com /home/t/tange/.cshrc suse.polarhome.com /home/t/tange/.cshrc
suse.polarhome.com /home/t/tange/.tcshrc suse.polarhome.com /home/t/tange/.tcshrc
@ -662,6 +793,7 @@ tru64.polarhome.com /home/t/tange/.shrc
tru64.polarhome.com /home/t/tange/.zshenv tru64.polarhome.com /home/t/tange/.zshenv
tru64.polarhome.com /home/t/tange/.config/fish/config.fish tru64.polarhome.com /home/t/tange/.config/fish/config.fish
tru64.polarhome.com /home/t/tange/.kshrc tru64.polarhome.com /home/t/tange/.kshrc
tru64.polarhome.com /home/t/tange/.mkshrc
tru64.polarhome.com /home/t/tange/.profile tru64.polarhome.com /home/t/tange/.profile
tru64.polarhome.com /home/t/tange/.cshrc tru64.polarhome.com /home/t/tange/.cshrc
tru64.polarhome.com /home/t/tange/.tcshrc tru64.polarhome.com /home/t/tange/.tcshrc
@ -672,6 +804,7 @@ ubuntu.polarhome.com /home/t/tange/.shrc
ubuntu.polarhome.com /home/t/tange/.zshenv ubuntu.polarhome.com /home/t/tange/.zshenv
ubuntu.polarhome.com /home/t/tange/.config/fish/config.fish ubuntu.polarhome.com /home/t/tange/.config/fish/config.fish
ubuntu.polarhome.com /home/t/tange/.kshrc ubuntu.polarhome.com /home/t/tange/.kshrc
ubuntu.polarhome.com /home/t/tange/.mkshrc
ubuntu.polarhome.com /home/t/tange/.profile ubuntu.polarhome.com /home/t/tange/.profile
ubuntu.polarhome.com /home/t/tange/.cshrc ubuntu.polarhome.com /home/t/tange/.cshrc
ubuntu.polarhome.com /home/t/tange/.tcshrc ubuntu.polarhome.com /home/t/tange/.tcshrc