diff --git a/internal/service/application_service.go b/internal/service/application_service.go index 80cee2d..9034177 100644 --- a/internal/service/application_service.go +++ b/internal/service/application_service.go @@ -174,9 +174,14 @@ func (s *ApplicationService) SubmitFromApplication(ctx context.Context, applicat safeName := sanitizeDirName(app.Name) subDir := time.Now().Format("20060102_150405") + "_" + randomSuffix(4) workDir = filepath.Join(s.workDirBase, safeName, subDir) - if err := os.MkdirAll(workDir, 0755); err != nil { + if err := os.MkdirAll(workDir, 0777); err != nil { return nil, fmt.Errorf("create work directory %s: %w", workDir, err) } + // 绕过 umask,确保整条路径都有写权限 + for dir := workDir; dir != s.workDirBase; dir = filepath.Dir(dir) { + os.Chmod(dir, 0777) + } + os.Chmod(s.workDirBase, 0777) } req := &model.SubmitJobRequest{Script: rendered, WorkDir: workDir} diff --git a/internal/service/job_service.go b/internal/service/job_service.go index 7c8d72a..9beb771 100644 --- a/internal/service/job_service.go +++ b/internal/service/job_service.go @@ -44,6 +44,11 @@ func (s *JobService) SubmitJob(ctx context.Context, req *model.SubmitJobRequest) } } + jobDesc.Environment = slurm.StringArray{ + "PATH=/usr/local/bin:/usr/bin:/bin", + "HOME=/root", + } + submitReq := &slurm.JobSubmitReq{ Script: &script, Job: jobDesc,