if [ "${SESSION_COUNT}" -gt 0 ]; then ELAPSED=0 else ELAPSED=$((ELAPSED + CHECK_INTERVAL))
if [ "$ELAPSED" -ge "$GRACE_SEC" ]; then CONTAINER_IDS=$(docker ps -q) if [ -n "${CONTAINER_IDS}" ]; then docker stop ${CONTAINER_IDS} fi
exit 0 fi fi sleep$CHECK_INTERVAL done
赋予脚本执行权限:chmod +x ~/.gpu_cleanup_daemon.sh。
步骤二:配置终端环境与快捷指令
在 ~/.bashrc 尾部添加以下配置。除了静默启动守护进程外,还封装了开关指令供日常调用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
export GPU_CLEANUP_GRACE_PERIOD="10m"
alias gpu-keep-on="touch ~/.skip_gpu_cleanup && echo -e '\033[32m[Long-run Mode Enabled]\033[0m Your Docker containers will NOT be stopped upon disconnection.'" alias gpu-keep-off="rm -f ~/.skip_gpu_cleanup && echo -e '\033[33m[Auto-Cleanup Mode Restored]\033[0m Your Docker containers will be automatically stopped after disconnection.'" alias gpu-status="[ -f ~/.skip_gpu_cleanup ] && echo 'Current Mode: Long-running task (No cleanup)' || echo 'Current Mode: Auto-cleanup'"
if ! pgrep -u "${USER}" -f "gpu_cleanup_daemon.sh" > /dev/null; then nohup bash ~/.gpu_cleanup_daemon.sh > /dev/null 2>&1 & disown fi