我想在各种图像中执行命令。我使用了一个简单的for
bash循环。
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
,它将继续执行,但不会在容器内运行该命令。
答案 0 :(得分: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文件。
答案 1 :(得分:-1)
认为循环应该看起来像这样:
for i in */*.sif
do
singularity exec "$i" cat /etc/os-release
done