SLURM: имя пользовательского стандартного вывода

При выполнении задания SLURM с использованием sbatch slurm создает стандартный выходной файл, который выглядит как slurm-102432.out (slurm-jobid.out). Я хотел бы настроить это на (yyyymmddhhmmss-jobid-jobname.txt). Как мне это сделать?

Или, как правило, как включить вычисляемые переменные в аргумент sbatch -o ?

Я попробовал следующее в моем script.sh

 #SBATCH -p core #SBATCH -n 6 #SBATCH -t 1:00:00 #SBATCH -J indexing #SBATCH -o "/home/user/slurm/$(date +%Y%m%d%H%M%S)-$(SLURM_JOB_ID)-indexing.txt" 

но это не сработало. Месторасположение файла было правильным в новом каталоге, но имя файла было буквальной линией $(date +%Y%m%d%H%M%S)-$(SLURM_JOB_ID)-indexing.txt .

Итак, я ищу способ сохранить стандартный выходной файл в каталоге /home/user/slurm/ с таким именем файла: 20160526093322-10453-indexing.txt

One Solution collect form web for “SLURM: имя пользовательского стандартного вывода”

Вы не можете, по крайней мере, не так, как хотите. Эти строки #SBATCH являются комментариями оболочки, которые интерпретируются командой sbatch , вы не можете выполнять в них код оболочки.

Кроме того, sbatch -o sbatch только понимает очень ограниченный набор замещающих символов (см. sbatch man-страницы ниже).

Вероятно, ближайший sbatch к тому, что вам нужно, – это запустить sbatch в сценарии оболочки, который добавляет идентификатор задания, имя задания и текущую дату и время в текстовом файле (например, timestamp<TAB>jobid<TAB>jobname ), а затем используйте это после завершения работы, чтобы переименовать выходной файл.

time_t или seconds-then-the-epoch, то есть date +%s , является самым полезным форматом даты / времени в скрипте. Он может быть легко напечатан, но вы хотите, не задумываясь сначала.

Нетрудно написать сценарий, который повторяется через этот текстовый файл, и переименовать выходные файлы для каждого задания, которое больше не работает (проверьте с помощью squeue -t BF,CA,CD,F,NF,PR,TO ) И еще не был переименован.

FYI, страница man для sbatch говорит:

-o, –output =

Попросите Slurm подключить стандартный вывод пакетного сценария непосредственно к имени файла, указанному в «шаблоне имени файла». По умолчанию как стандартный вывод, так и стандартная ошибка относятся к одному и тому же файлу. Для массивов заданий имя файла по умолчанию – slurm-%A_%a.out , %A заменяется идентификатором задания и %a индексом массива. Для других заданий имя файла по умолчанию – slurm-%j.out , где %j заменяется идентификатором задания. См. --input option для параметров спецификации имени файла.

И для -i это говорит:

-i, –input =

Поручить Slurm подключить стандартный ввод в пакетный скрипт непосредственно к имени файла, указанному в «шаблоне имени файла». По умолчанию /dev/null открыто на стандартном входе в пакетный скрипт, и как стандартный вывод, так и стандартная ошибка направляются в файл с именем slurm-%j.out , где %j заменяется номером задания, как описано ниже.

Шаблон имени файла может содержать один или несколько символов замены, которые представляют собой знак процента % за которым следует буква (например, %j ).

Поддерживаемые символы замены:

 %A Job array's master job allocation number. %a Job array ID (index) number. %j Job allocation number. %N Node name. Only one file is created, so %N will be replaced by the name of the first node in the job, which is the one that runs the script. %u User name. 
Linux и Unix - лучшая ОС в мире.