有没有一种方法可以跟踪像 "docker ps" 这样的奇点容器而不用作为奇点实例启动?
Is there a way to track singularity containers like "docker ps" without starting as singularity instance?
有没有办法像“docker ps”一样跟踪 运行 奇点容器?或奇点在某处记录任何 start/stop 信息。
我已经尝试过“奇点实例列表”命令,但它不适用于不是以“奇点实例开始”开头的奇点容器
奇点运行奇点执行
[vagrant@localhost ~]$ singularity exec hello-world_latest.sif sleep 600 &
[1] 31167
[vagrant@localhost ~]$ jobs
[1]+ Running singularity exec hello-world_latest.sif sleep 600 &
[vagrant@localhost ~]$ singularity instance list
INSTANCE NAME PID IP IMAGE
奇点运行奇点实例开始
[vagrant@localhost ~]$ singularity instance start lolcow_latest.sif cow1
INFO: instance started successfully
[vagrant@localhost ~]$ singularity instance list
INSTANCE NAME PID IP IMAGE
cow1 31033 /home/vagrant/lolcow_latest.sif
有什么想法吗?提前致谢!
如您所见,instance list
仅列出作为实例启动的奇点进程。实例日志(运行 和过去)存储在 ~/.singularity/instances/logs/$HOSTNAME/$USER
.
不会在任何地方跟踪来自非实例命令的活动进程。这主要是因为 Singularity 没有使用像 Docker 这样的集中式服务模型。同样,没有“默认”日志位置,因为 stdout/stderr 的处理方式与 运行 任何其他命令相同。因此,可以使用标准 shell 工具追踪奇点过程。
一些例子:
# show your running Singularity processes (all users: aux)
ps ux | grep '[S]ingularity'
# Output:
# tsnowlan 1350116 0.1 0.0 1237336 16804 pts/2 Sl 13:29 0:00 Singularity runtime parent
# tsnowlan 1350273 0.7 0.0 1238488 16608 pts/2 Sl 13:29 0:00 Singularity runtime parent
# Check what the processes are doing
pstree -p 1350116
# Output:
# starter-suid(1350116)─┬─foo.sh(1350131)─┬─foo.sh(1350153)───sleep(1350160)
# │ ├─foo.sh(1350154)───sleep(1350162)
# │ ├─foo.sh(1350155)───sleep(1350163)
# │ ├─foo.sh(1350156)───sleep(1350161)
# │ ├─foo.sh(1350157)───sleep(1350164)
# │ ├─foo.sh(1350158)───sleep(1350166)
# │ ├─foo.sh(1350159)───sleep(1350168)
# │ ├─foo.sh(1350165)───sleep(1350172)
# │ ├─foo.sh(1350167)───sleep(1350171)
# │ ├─foo.sh(1350169)───sleep(1350173)
# │ └─foo.sh(1350170)───sleep(1350174)
# ├─{starter-suid}(1350133)
# ├─{starter-suid}(1350134)
# ├─{starter-suid}(1350135)
# ├─{starter-suid}(1350136)
# ├─{starter-suid}(1350137)
# ├─{starter-suid}(1350145)
# └─{starter-suid}(1350146)
有没有办法像“docker ps”一样跟踪 运行 奇点容器?或奇点在某处记录任何 start/stop 信息。
我已经尝试过“奇点实例列表”命令,但它不适用于不是以“奇点实例开始”开头的奇点容器
奇点运行奇点执行
[vagrant@localhost ~]$ singularity exec hello-world_latest.sif sleep 600 &
[1] 31167
[vagrant@localhost ~]$ jobs
[1]+ Running singularity exec hello-world_latest.sif sleep 600 &
[vagrant@localhost ~]$ singularity instance list
INSTANCE NAME PID IP IMAGE
奇点运行奇点实例开始
[vagrant@localhost ~]$ singularity instance start lolcow_latest.sif cow1
INFO: instance started successfully
[vagrant@localhost ~]$ singularity instance list
INSTANCE NAME PID IP IMAGE
cow1 31033 /home/vagrant/lolcow_latest.sif
有什么想法吗?提前致谢!
如您所见,instance list
仅列出作为实例启动的奇点进程。实例日志(运行 和过去)存储在 ~/.singularity/instances/logs/$HOSTNAME/$USER
.
不会在任何地方跟踪来自非实例命令的活动进程。这主要是因为 Singularity 没有使用像 Docker 这样的集中式服务模型。同样,没有“默认”日志位置,因为 stdout/stderr 的处理方式与 运行 任何其他命令相同。因此,可以使用标准 shell 工具追踪奇点过程。
一些例子:
# show your running Singularity processes (all users: aux)
ps ux | grep '[S]ingularity'
# Output:
# tsnowlan 1350116 0.1 0.0 1237336 16804 pts/2 Sl 13:29 0:00 Singularity runtime parent
# tsnowlan 1350273 0.7 0.0 1238488 16608 pts/2 Sl 13:29 0:00 Singularity runtime parent
# Check what the processes are doing
pstree -p 1350116
# Output:
# starter-suid(1350116)─┬─foo.sh(1350131)─┬─foo.sh(1350153)───sleep(1350160)
# │ ├─foo.sh(1350154)───sleep(1350162)
# │ ├─foo.sh(1350155)───sleep(1350163)
# │ ├─foo.sh(1350156)───sleep(1350161)
# │ ├─foo.sh(1350157)───sleep(1350164)
# │ ├─foo.sh(1350158)───sleep(1350166)
# │ ├─foo.sh(1350159)───sleep(1350168)
# │ ├─foo.sh(1350165)───sleep(1350172)
# │ ├─foo.sh(1350167)───sleep(1350171)
# │ ├─foo.sh(1350169)───sleep(1350173)
# │ └─foo.sh(1350170)───sleep(1350174)
# ├─{starter-suid}(1350133)
# ├─{starter-suid}(1350134)
# ├─{starter-suid}(1350135)
# ├─{starter-suid}(1350136)
# ├─{starter-suid}(1350137)
# ├─{starter-suid}(1350145)
# └─{starter-suid}(1350146)