программный запуск exec из скрипта bash - PullRequest
0 голосов
/ 09 мая 2019

Я хочу выполнить команду в различных образах.Я использую простой цикл for.

for i in `ls *.sif`
do
   singularity exec $i cat /etc/os-release
done

Я ожидаю, что скрипт напечатает информацию о выпуске ОС для ВСЕХ изображений в этом каталоге.Вместо этого он печатает информацию о первом и возвращает подсказку.Если я запускаю команду fg, команда на следующем изображении выполняется, и так далее.Для n образа мне нужно выполнить fg команду n-1 раз.

Интересно, что если я заменим команду на timeout 10 singularity exec $i cat /etc/os-release, она продолжится, но не будет запускать команду внутри контейнера.

Ответы [ 2 ]

0 голосов
/ 19 мая 2019

это просто работает, как и ожидалось (особенность 3.2.0 на CentOS-7), можете ли вы попробовать еще раз с чистым файлом ~ / .bashrc? или с пустым переплетом $ HOME? или с флагом --no-home

H=`mktemp -d`
for i in *.sif; do
echo "$i"
singularity exec -H "$H" "$i" cat /etc/os-release
done

если с этими 3 опциями ваш exec работает нормально, вам нужно исправить файл .bashrc.

0 голосов
/ 09 мая 2019

Думаю, цикл должен выглядеть примерно так:

for i in */*.sif
do
    singularity exec "$i" cat /etc/os-release
done
...