Вертикальная линия (передать вывод предыдущей команды следующей команде) с «|» при использовании «bsub»

Когда вы используете подстановку процесса с помощью или > (...) , bash откроет канал для другой программы на произвольном файловом дескрипторе высокого уровня. (Я думаю, что раньше он считал от 10, но теперь он отсчитывает от 63) и передает имя как / dev / fd / N в командной строке первой программы. Это не POSIX, но его поддерживают и другие оболочки (это функция ksh88).

Это не совсем особенность программы, которую вы запускаете, она просто видит / dev / fd / N и пытается открыть его как обычный файл.

В руководстве Autoconf упоминаются некоторые исторические примечания:

Несколько древних систем зарезервировали некоторые файловые дескрипторы. По соглашению, дескриптор файла 3 был открыт в / dev / tty, когда вы входили в систему с восьмого выпуска (1985) по десятый выпуск Unix (1989). Файловый дескриптор 4 специально использовался на Stardent / Kubota Titan (около 1990 г.), хотя сейчас мы не помним, что это было. Обе эти системы устарели, поэтому теперь можно безопасно рассматривать файловые дескрипторы 3 и 4 как любые другие файловые дескрипторы.

Кроме того, когда я выполнял поиск в Google, я нашел программу под названием runit , которая использует файловые дескрипторы 4 и 5 для некоторых целей, связанных с ротацией журналов.

2
24.02.2017, 10:15
2 ответа

Команда bsub выведет идентификатор отправки задания и имя очереди, в которую оно было отправлено, если отправка прошла успешно.

bsub не предоставит вам вывод fastx_trimmer , что означает, что его нельзя использовать для прямого ввода в fastq_quality_trimmer через канал .

Вам нужно будет отправить весь конвейер в очередь, чтобы он работал должным образом, либо поместив команды в сценарий оболочки и отправив его (в идеале, если вы планируете запускать его много раз), либо путем цитирования всего конвейер правильно при вызове bsub .

3
27.01.2020, 21:56

Я получил предложения от моего друга Эл. адрес. Два решения: 1. введите настоящую команду в "".

bsub "fastx_trimmer -Q33 -f 1 -l 230 -i myfile.fastq | fastq_quality_trimmer -Q33 -t 18 -l 20 -o Trimmed_file.fastq”
  1. написать сценарий bash для bsub.

Я попробовал решение 1. Оно сработало очень хорошо. Поместите его сюда на случай, если у других людей возникнут похожие проблемы.

2
27.01.2020, 21:56

Теги

Похожие вопросы