kịch bản của tôi làm việc nếu tôi chạy nó một cách tương tác trên vỏ lệnh:GNU Parallel trong kịch bản BASH với "xuất khẩu -f <func>" thất bại với "Command Not Found" lỗi khi 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
Tuy nhiên, kịch bản thất bại và phàn nàn chức năng xuất khẩu, ndmpcopy_cron_parallel, không thể được tìm thấy:
$ crontab -l
40 0,2,4,6,8,10,12,14,16,18,20,22 * * * /u/jsung/bin/ndmpcopy_cron_parallel_svlinf05.bash
Lỗi:
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
Tôi đã được tìm kiếm xung quanh và thử những thứ khác nhau trong một thời gian. Tôi thậm chí còn chỉnh sửa $ PATH. Không chắc tôi đã bỏ lỡ điều gì. Chúng ta có thể nhúng GNU Parallel vào BASH script và đặt vào crontab không?
thế nào là '/ bin/bash' khác '/ usr/software/bin/bash'? Công việc cron dường như đang sử dụng '/ bin/bash'. Tập lệnh của bạn có hoạt động khi chạy với '/ bin/bash' không? –
Phải. Không có nhiều khác biệt./usr/software/bin là nơi công ty chúng tôi lưu trữ các tiện ích./bin/bash là vị trí mặc định với máy chủ. $/bin/bash --version GNU bash, phiên bản 4.1.2 (1) -release (x86_64-redhat-linux-gnu) Bản quyền (C) 2009 Free Software Foundation, Inc. Giấy phép GPLv3 +: GNU GPL phiên bản 3 hoặc mới hơn $/usr/software/bin/bash --version GNU bash, phiên bản 4.2.53 (1) -release (x86_64-unknown -linux-gnu) Bản quyền (C) 2011 Free Software Foundation, Inc. Giấy phép GPLv3 +: GNU GPL phiên bản 3 hoặc mới hơn –
jsung8
Và bạn có thể chạy tập lệnh của mình với '/ bin/bash' theo cách thủ công? (Nó có vẻ như nó nên làm việc offhand.) Tôi không quen thuộc với 'song song' bạn có thể nhận được nó để chạy một kịch bản (và đặt chức năng đó trong một kịch bản) thay vì phương pháp này env? –