Как использовать xargs для отправки нескольких заданий на слерм - PullRequest
0 голосов
/ 17 мая 2019

Привет У меня есть около 100+ файлов, для которых мне нужно отправить очень похожие задания на slurm.Я пытаюсь использовать XARGS для просмотра этих файлов и отправки, но это не работает, как ожидалось.Любой совет?

file.txt=
file1a file1b file1
.
.
.
file100a file100b file100

cat SpleenGlia/data/file.txt | xargs -l bash -c ‘sbatch --job-name=$3 --output=SpleenGlia/Aligned/$3 SpleenGlia/script.sh $1 $2 $3’

Я хочу представить в slurm, используя sbatch.Script.sh - это скрипт, который использует все 3 переменные.я хочу отправить с именем задания имя файла (третья переменная) и вывести в файл с именем файла.

Выполнение приведенного выше кода дает мне

--job-name=: ‘sbatch: command not found

Ответы [ 3 ]

0 голосов
/ 17 мая 2019

Похоже, вы используете неправильные цитаты. Ошибка говорит:

--job-name=: ‘sbatch: command not found

похоже, что Bash принимает кавычку как часть исполняемого файла для запуска. (И действительно, похоже, это ‘, а не 'или".) Попробуйте заменить кавычки на двойные (")

0 голосов
/ 04 июля 2019

Как насчет использования awk для форматирования команды в виде текста и передачи ее в подпроцесс с помощью xargs:

cat awk.txt | awk '{printf("sbatch --job-name=%s --output=SpleenGlia/Aligned/%s SpleenGlia/script.sh %s", $3, $3, $0)}' | xargs -I{} sh -c "{}"
0 голосов
/ 17 мая 2019

Вы должны начать индексирование с 0, а не с 1. Смотрите примеры ниже, я добавил подчеркивание, чтобы выделить пропущенное значение $3:

$ cat file.txt  | xargs -l bash -c 'echo arguments _$1_ _$2_ _$3_'
arguments _file1b_ _file1_ __
arguments _file100b_ _file100_ __

Правильный, заявив на $0:

$ cat file.txt  | xargs -l bash -c 'echo arguments _$0_ _$1_ _$2_'
arguments _file1a_ _file1b_ _file1_
arguments _file100a_ _file100b_ _file100_

Это может быть причиной ошибки, поскольку --job-name= не получает аргументов.

...