Я хотел бы использовать фоновый амперсанд оболочки Bourne как часть ОДНОЙ команды выполнения bsub.
Обратите внимание, что я хочу использовать не файл .bash, а одну командную строку bsub для выполнения всей процедуры.
Обратите внимание, что я также не хочу разбивать свой контент bsub на несколько команд bsub, которые ожидают друг друга, а скорее обернуть в одну командную строку bsub несколько внутренних команд unix, которые ожидают друг друга, используя фоновый амперсанд оболочки Bourne. .
следующая попытка привела к выводу только первой внутренней команды (команды liftOver), но ни sort, ни mv не были выполнены.
bsub -q medium -J $i "liftOver $i mm10ToMm9.over.chain.gz ${i/.bed/.mm9.bed} ${i/.bed/.unlifted_to_mm9.bed} & sort -k1,1 -k2,2n ${i/.bed/.mm9.bed} > ${i/.bed/.mm9.bed}.srt & mv ${i/.bed/.mm9.bed}.srt ${i/.bed/.mm9.bed}"
Вне bsub эта процедура может быть записана следующим образом:
liftOver $i mm10ToMm9.over.chain.gz ${i/.bed/.mm9.bed} ${i/.bed/.unlifted_to_mm9.bed} &
sort -k1,1 -k2,2n ${i/.bed/.mm9.bed} > ${i/.bed/.mm9.bed}.srt &
mv ${i/.bed/.mm9.bed}.srt ${i/.bed/.mm9.bed}
bsub
также позволяет читать команду со стандартного ввода, что означает, что вы можете передать три строки. Однако, почему вы хотите выполнять три команды параллельно???? Нет смысла начинатьmv
, пока не законченsort
. - person user1934428   schedule 23.02.2016bsub
? В чем разница с командой cronbatch
? - person F. Hauri   schedule 23.02.2016&&
в качестве разделителя, что означает, что следующая команда выполняется только в том случае, если предыдущая имеет код выхода 0. Если вы используете&
, вы переводите команды в фоновый режим, и они выполняются параллельно. - person user1934428   schedule 23.02.2016<<<
и всегда использовалecho ....|
в таком случае. Очень удобно! - person user1934428   schedule 24.02.2016