сингулярность запустить и выполнить команду

Я знаю, как запустить сингулярность:

singularity run /mn/sarpanitu/singularity/test/fenics-and-more.img

Есть ли способ сделать одну строку (или больше) для запуска предыдущей команды, а затем в сингулярности запустить echo "hi there" ? (Конечно, я буду использовать что-то более сложное, чем hi there в продакшене). Как только это будет сделано, я хочу, чтобы моя сингулярность по-прежнему была здоровой и живой для интерактивного использования.

Итак, что-то вроде намерения:

singularity run /mn/sarpanitu/singularity/test/fenics-and-more.img -bash-command echo "hi there"

or

singularity run /mn/sarpanitu/singularity/test/fenics-and-more.img -run-script-at-startup script.sh

person Zorglub29    schedule 26.06.2018    source источник


Ответы (2)


Используйте exec для выполнения команды внутри контейнера вместо run. Добавьте оболочку и скрипт в качестве параметров.

singularity exec /mn/sarpanitu/singularity/test/fenics-and-more.img /bin/sh script.sh

Кроме того, добавьте выполнение параметра в качестве команды времени выполнения по умолчанию в часть runscript.

%runscript
  exec "$@"
person Sergi Pérez Labernia    schedule 20.07.2018
comment
Не работает, так как я не получаю приглашение сингулярности, используя только exec. Я хотел бы открыть сингулярность, выполнить набор команд и получить подсказку сингулярности. - person Zorglub29; 02.08.2018

Это очень связано со следующим вопросом: скрипт bash для выполнения действия в контейнере сингулярности, который он открывает . Решение публикуется там, в основном с использованием параметра -c и созданием консоли bash.

person Zorglub29    schedule 21.08.2018