вывод stdout и stdin для нескольких файлов, работающих одновременно

Я не думаю, что Ctrl+PrtScrмногого даст, вам нужно SysRq(, как правило, на той же физической клавише, что и PrtScr, доступ к которой можно получить, удерживая Altпри нажатии этой клавиши, по этой причине это немного неясно, являются ли «волшебные» комбинации на самом деле SysRq+илиAlt+SysRq+).

Функция Bбудет b разгружать систему, так что ваша комбинация — пустая трата времени, только Bкогда-либо будет выполнена, а простая загрузка так же плоха, как и включение и выключение питания.

Что может (иногда )получить поSysRq+R,E,I,S,U,B(мне +указывает на то, что нужно нажимать все клавиши сразу, а нажимать сразу восемь клавиш тяжело и не то, что вы хотите сделать -и обратите внимание, что «BUSIER» на самом деле является классической комбинацией полностью задом наперед ), это более приятное завершение работы, при котором как можно больше данных записывается на диск (s )красиво, поэтому fsck не требуется. при следующей загрузке, и риск потери данных сведен к минимуму.

Много информации, включая полный список комбинаций SysRq -и некоторые мнемоники на странице в Википедии для Magic SysRq .

1
11.03.2020, 00:50
1 ответ

Это зависит от того, как пишется reformat.sh.

Часто команды UNIX используют stdin и stdout, если вы не предоставляете им никакого ввода/вывода:

reformat.sh in=test.bam primaryonly |
  reformat.sh out1=r1.fq.gz out2=r2.fq.gz interleaved addcolon

В других случаях они будут принимать -в качестве имени файла:

reformat.sh in=test.bam out=- primaryonly |
  reformat.sh in=- out1=r1.fq.gz out2=r2.fq.gz interleaved addcolon

В современном Bash вы можете использовать /dev/stdinи/dev/stdout:

reformat.sh in=test.bam out=/dev/stdout primaryonly |
  reformat.sh in=/dev/stdin out1=r1.fq.gz out2=r2.fq.gz interleaved addcolon

Чтобы избежать конфликтов имен при параллельном выполнении заданий, я бы создал функцию, которая принимает имена в качестве аргументов:

refo() {
  in="$1"
  out1="$2"1.fq.gz
  out2="$2"2.fq.gz
  reformat.sh in=/dev/stdin out=/dev/stdout primaryonly |
    reformat.sh in=/dev/stdin out1="$out1" out2="$out2" interleaved addcolon
}

И назови это как:

refo test.bam out

Когда это работает, вы можете распараллелить несколько файлов bamс помощью:

export -f refo
parallel refo {} {.} ::: *.bam
0
28.04.2021, 23:20

Теги

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