Загрузка данных


find /opt/terraform-web/workspaces -maxdepth 1 -type d -printf '%TY-%Tm-%Td %TH:%TM  %p\n' | sort | tail -20
  find /opt/terraform-web/workspaces -maxdepth 1 -type d | wc -l
  sudo du -sh /opt/terraform-web/workspaces
  sudo du -sh /opt/terraform-web/workspaces/* 2>/dev/null | sort -h | tail -5

  # 2. Не tmpfs ли это и не симлинк ли (тогда чистка — при перезагрузке)
  df -h /opt/terraform-web/workspaces
  readlink -f /opt/terraform-web/workspaces
  mount | grep -E 'tmpfs|/opt'

  # 3. Кто чистит: cron всех пользователей и systemd
  sudo crontab -l; sudo crontab -l -u tf-runner
  sudo grep -rn "workspace" /etc/cron* /var/spool/cron/ 2>/dev/null
  sudo grep -rn "terraform-web\|workspaces" /etc/tmpfiles.d/ /usr/lib/tmpfiles.d/ 2>/dev/null
  systemctl list-timers --all | head

  # 4. Сверка с БД: у скольких заявок workspace прописан, но каталога нет
  cd /opt/terraform-web/backend && /opt/terraform-web/venv/bin/python -c "
  from database import SessionLocal
  import db_models, os
  db = SessionLocal()
  rows = db.query(db_models.VMRequest).filter(db_models.VMRequest.workspace.isnot(None)).all()
  missing = [(r.id, r.status.value, r.workspace) for r in rows
             if not os.path.isdir('/opt/terraform-web/workspaces/' + r.workspace)]
  print('заявок с workspace:', len(rows), ' каталог отсутствует у:', len(missing))
  for m in missing[:15]: print(m)
  "