Бесконечно зацикленный путь при копировании выходных файлов

Вопрос:

Я пытаюсь запустить симуляцию в кластере linux. На главном узле в моем домашнем каталоге у меня есть

/home/checkouts (contains the executable of the model)

а также

/home/models/run (contains the input files for the model)

Во время моделирования я сохраняю выходные данные на локальном узле, а в конце хочу скопировать выходные файлы в /home/models/output/run. То, что я получаю, представляет собой бесконечный цикл выходов/запуска/запуска папок, подобных этому

/home/models/output/run/run/output/run/run/output/run/run/output/run/run ...

У кого-то есть идея, где я совершил ошибку? Для запуска модели я использую следующий сценарий sh:

rundir=$PWD

outputdir=/home/models/output

run=$(basename $rundir)         # run

cp -r $rundir /var/tmp/$run
pushd /var/tmp/$run

mpirun -np $NO_OF_CORES -machinefile nodes ~/checkouts/x_model-v1.21.$

popd
cp -r /var/tmp/$run $outputdir

Лучший ответ:

Добавьте -P при копировании символических ссылок или еще лучше используйте -d.:

-P, –no -d ereference никогда не следует за символическими ссылками в SOURCE

-d равно –no -d ereference – -P reserve = ссылки

– -P reserve [= ATTR_LIST] сохранить указанные атрибуты (по умолчанию: режим, собственность, временные метки), если возможно дополнительные атрибуты: контекст, ссылки, xattr, все

Это поможет предотвратить попадание в циклы infinte при столкновении с круговыми ссылками. Я также предлагаю правильно указывать ваши переменные, чтобы предотвратить расщепление слов и непредвиденное расширение pathanme.

cp -dr "$rundir" "/var/tmp/$run"

Вы также можете рассмотреть -a по -dr.

Оцените статью
TechArks.Ru
Добавить комментарий