--sshloginfile )发现即使作业作为同一个用户在每台机器上运行(或者至少在提供给 --sshloginfile文件 (例如。myuser@myhostname00x)),在作业尝试访问文件时出现“权限被拒绝”错误。尽管能够(无密码)ssh到有问题的远程节点并 ls
--sshloginfile
--sshloginfile文件
ls
me@host001 me@host005 me@host006
实际的并行作业看起来
bcpexport() { <do stuff to arg $1 to BCP copy to a MSSQL DB> } export -f bcpexport parallel -q -j 10 --sshloginfile $basedir/src/parallel-nodes.txt --env $bcpexport \ bcpexport {} "$TO_SERVER_ODBCDSN" $DB $TABLE $USER $PASSWORD $RECOMMEDED_IMPORT_MODE $DELIMITER \ ::: $DATAFILES/$TARGET_GLOB
在哪里 $DATAFILES/$TARGET_GLOB
$DATAFILES/$TARGET_GLOB
/bin/bash:line 27:/path/to/file001:权限被拒绝 /bin/bash:line 27:/path/to/file002:权限被拒绝 …等等所有的文件。。。
/bin/bash:line 27:/path/to/file001:权限被拒绝
/bin/bash:line 27:/path/to/file002:权限被拒绝
…等等所有的文件。。。
我认为问题是额外的美元:
parallel [...] --env $bcpexport bcpexport {} [...]
除非设置shell变量 $bcpexport 可能是你的意思 bcpexport (没有$)代替。
$bcpexport
bcpexport
如果 如果未定义,则它将被shell替换为nothing。因此 --env
--env
parallel [...] --env bcpexport {} [...]
它将执行 {} 作为命令,这正是你所经历的。
{}
所以试试这个:
parallel [...] --env bcpexport bcpexport {} [...]