/* * scontrol_pid_info - given a local process id, print the corresponding * slurm job id and its expected end time * IN job_pid - the local process id of interest */ extern void scontrol_pid_info(pid_t job_pid) { int error_code; uint32_t job_id; time_t end_time; long rem_time; error_code = slurm_pid2jobid (job_pid, &job_id); if (error_code) { exit_code = 1; if (quiet_flag != 1) slurm_perror ("slurm_pid2jobid error"); return; } error_code = slurm_get_end_time(job_id, &end_time); if (error_code) { exit_code = 1; if (quiet_flag != 1) slurm_perror ("slurm_get_end_time error"); return; } printf("Slurm job id %u ends at %s\n", job_id, slurm_ctime(&end_time)); rem_time = slurm_get_rem_time(job_id); printf("slurm_get_rem_time is %ld\n", rem_time); return; }
/* * slurm_get_rem_time - get the expected time remaining for a given job * IN jobid - slurm job id * RET remaining time in seconds or -1 on error */ extern long slurm_get_rem_time(uint32_t jobid) { time_t now = time(NULL); time_t end_time; long rc; if (slurm_get_end_time(jobid, &end_time) != SLURM_SUCCESS) return -1L; rc = difftime(end_time, now); if (rc < 0) rc = 0L; return rc; }
/* FORTRAN VERSIONS OF slurm_get_rem_time */ extern int32_t islurm_get_rem_time__(uint32_t *jobid) { time_t now = time(NULL); time_t end_time; int32_t rc; if ((jobid == NULL) || (slurm_get_end_time(*jobid, &end_time) != SLURM_SUCCESS)) return 0; rc = difftime(end_time, now); if (rc < 0) rc = 0; return rc; }