-1

我想在各种图像中执行命令。我使用一个简单的forbash 循环。

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

我希望脚本打印该目录中所有图像的 os-release 信息。相反,它打印第一个的信息并返回提示。如果我运行fg命令,则执行下一个图像中的命令,依此类推。对于 n 图像,我必须运行fg命令 n-1 次。

有趣的是,如果我用 替换命令timeout 10 singularity exec $i cat /etc/os-release,它会继续,但不会在容器内运行命令。

4

1 回答 1

0

它对我来说就像预期的那样工作(CentOS-7 上的奇点 3.2.0),你能用干净的 ~/.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 文件。

于 2019-05-19T20:20:49.383 回答