Возникла проблема с запуском задания GNU Parallel в распределенном режиме (т. Е. На нескольких машинах через --sshloginfile
) и обнаружилось, что, хотя задание выполняется на каждой машине под одним и тем же пользователем (или, по крайней мере, так было продиктовано)в файле, передаваемом --sshloginfile
(например, myuser @ myhostname00x)), появляется ошибка «Отказано в доступе», когда задание пытается получить доступ к файлу.Это происходит несмотря на то, что ssh может (без пароля) подключаться к рассматриваемым удаленным узлам и ls
к файлам, для которых задание Parallel заявляет, что у него нет разрешений (указанный путь - к файловой системе, которая является общей, и NFS смонтирована на всех узлах.).
Имеет файл списка узлов типа
me@host001
me@host005
me@host006
, и фактическое задание Parallel выглядит как
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
возвращает файлы изкаталог.Выполнение этого задания в режиме с одним узлом работает нормально, но при запуске на всех узлах в файле parallel-node.txt выдается
/ bin / bash: строка 27: / path / to / file001:Разрешение отклонено
/ bin / bash: строка 27: / путь / к / file002: разрешение отклонено
... и т. Д. Для всех файлов ...
Если кто-нибудь знает, что здесь может происходить, мы будем благодарны за советы или советы по отладке.