You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

误删运行中sbatch任务的输出文件,能否通过sbatch命令恢复?

恢复误删的运行中sbatch任务输出文件

首先明确:sbatch本身没有内置的文件恢复命令,但可以通过系统进程特性或SLURM相关机制尝试找回已写入的内容:

  • 从进程文件句柄恢复已写入内容
    运行中的sbatch任务,即使输出文件被删除,只要任务进程还在运行,系统会保留该文件的inode(进程仍持有文件句柄)。操作步骤如下:

    1. 用squeue获取目标任务的PID:
      squeue -u $USER -o "%.18i %.20j %.15p"
      
      输出中的最后一列就是任务的PID。
    2. 查看进程的文件描述符:
      ls -l /proc/<PID>/fd
      
      其中1对应标准输出,2对应标准错误(如果任务指定了合并输出,两者会指向同一inode)。
    3. 复制已写入的内容到新文件:
      cat /proc/<PID>/fd/1 > /path/to/recovered_output.txt
      
      注意:后续任务的输出仍会写入原inode(无法通过常规路径访问),你可以用tail -f /proc/<PID>/fd/1实时查看,并定期备份到新文件。
  • 联系集群管理员检查SLURM缓存日志
    部分集群的SLURM配置会在节点本地缓存任务输出,比如/var/log/slurm/或自定义目录,管理员可能能从中找到临时缓存的输出内容。

  • 预防建议

    • 清理前用sacct确认任务状态:
      sacct -j <job_id> --format=JobID,State
      
      仅清理状态为COMPLETED/FAILED的任务输出。
    • 给运行中任务的输出文件加专属标识(如.running后缀),清理时过滤该类文件。

内容的提问来源于stack exchange,提问作者Toonia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:13:25