mio script funziona se l'eseguo in modo interattivo sulla shell dei comandi:GNU parallela in script bash con "esportazione -f <func>" non riuscita con "command not found" errore quando crond
$ cat ndmpcopy_cron_parallel_svlinf05.bash
#!/usr/software/bin/bash
ndmpcopy_cron_parallel() {
timestamp=`date +%Y%m%d-%H%M`
LOG=/x/eng/itarchives/ndmpcopylogs/05_$1/ndmpcopy_status
TSLOG=${LOG}_$timestamp
src_filer='svlinf05'
src_account='ndmp'
src_passwd='src_passwd'
dst_svm='svlinfsrc'
dst_account='vsadmin-backup'
dst_passwd='dst_passwd'
host=`hostname`
echo $host
ssh -l root $src_filer "priv set -q diag ; ndmpcopy -sa $src_account:$src_passwd -da $dst_account:$dst_passwd -i $src_filer.eng.netapp.com:/vol/$1 10.56.10.161:/$dst_svm/$1" | tee -a $TSLOG
echo "ndmpcopy Completed: `date` "
}
export -f ndmpcopy_cron_parallel
/u/jsung/bin/parallel -j 0 --wd . --env ndmpcopy_cron_parallel --eta ndmpcopy_cron_parallel ::: local
Ma, lo script non è riuscita e lamentato la funzione esportata, ndmpcopy_cron_parallel, non può essere trovato:
$ crontab -l
40 0,2,4,6,8,10,12,14,16,18,20,22 * * * /u/jsung/bin/ndmpcopy_cron_parallel_svlinf05.bash
Errore:
Subject: Cron <[email protected]> /u/jsung/bin/ndmpcopy_cron_parallel_svlinf05.bash
Computers/CPU cores/Max jobs to run
1:local/2/1
Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
ETA: 0s Left: 1 AVG: 0.00s local:1/0/100%/0.0s **/bin/bash: ndmpcopy_cron_parallel: command not found**
ETA: 0s Left: 0 AVG: 0.00s local:0/1/100%/0.0s
Sono stato perquisito e ho provato diverse cose per un po '. Ho persino ottimizzato $ PATH. Non so cosa mi sia perso. Possiamo incorporare GNU Parallel nello script BASH e inserire in crontab?
Come è '/ bin/bash' diverso da '/ usr/software/bin/bash'? Sembra che il lavoro cron utilizzi '/ bin/bash'. Il tuo script funziona quando viene eseguito con '/ bin/bash'? –
Giusto. Non molta differenza./usr/software/bin è dove la nostra azienda memorizza le utilità./bin/bash è il percorso predefinito con l'host. $/bin/bash --version GNU bash, la versione 4.1.2 (1) -release (x86_64-redhat-linux-gnu) Copyright (C) 2009 Free Software Foundation, Inc. licenza GPLv3 +: GNU GPL versione 3 o successiva $/usr/software/bin/bash --version GNU bash, versione 4.2.53 (1) -release (x86_64-sconosciuto -linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. Licenza GPLv3 +: GNU GPL versione 3 o successiva –
jsung8
E si può eseguire il copione con '/ bin/bash' manualmente? (Sembra che dovrebbe funzionare in modo non corretto.) Non ho familiarità con 'parallel' potresti farlo eseguire uno script (e mettere quella funzione in uno script) invece di questo metodo env? –