如何查看非singularity instance start启动的Singularity容器,类似docker ps效果
解决方案
查看所有运行中的Singularity容器
Singularity和Docker架构不同,没有中心守护进程统一管理所有容器进程:singularity instance list仅会返回通过singularity instance start启动的后台服务实例,通过singularity exec/run/shell启动的容器本质是普通用户进程,未注册到实例列表,因此无法通过该命令查询。
你可以通过过滤系统进程列表获取所有运行中的Singularity容器,通用命令如下:
# 方式1:输出完整进程信息 ps aux | grep -E '[s]ingularity (exec|run|shell|instance)' # 方式2:仅输出PID和启动命令,更简洁 pgrep -af 'singularity (exec|run|shell|instance)'
返回结果中会包含容器对应的PID、使用的镜像路径、启动命令等核心信息,你可以根据需求自行提取字段格式化输出,实现类似docker ps的展示效果。
Singularity日志存储规则
1. instance模式启动的容器
默认会将标准输出、标准错误以及启停记录存储在用户家目录下的隐藏路径:~/.singularity/instances/logs/$(主机名)/$(用户名)/<实例名>.out~/.singularity/instances/logs/$(主机名)/$(用户名)/<实例名>.err
启动实例时添加--log-path <自定义路径>参数可以指定日志的存储位置。
2. exec/run/shell启动的容器
Singularity默认不会为这类进程单独存储日志,所有输出会直接打印到当前终端的标准输出/错误流。如果需要留存日志,需要在启动时手动重定向输出,示例如下:
singularity exec hello-world_latest.sif sleep 600 > container.log 2>&1 &
如果需要全局记录这类容器的启停事件,可以配置系统auditd规则抓取Singularity进程的启动、退出日志, Singularity本身没有内置全局日志记录功能。
内容的提问来源于stack exchange,提问作者ms1212
相关产品推荐
相关产品推荐

