Почему мои скрипты Bash останавливаются?

1

Bellow - это скрипт Bash, который я создаю и выполняю через java. Он использует несколько разных сценариев для создания статистики для данных RNA-Seq. Моя проблема заключается в том, что при выполнении сценария он достигает второй стадии сценария до того, как процессы прекратятся (программа не выдает ошибку, требуемые программы просто прекращают обработку). Я попытался запустить созданный скрипт отдельно от командной строки, и он завершился без ошибок. Предложения будут оценены.

 String Trans_ref = 
"#!/bin/bash \n" +
"mkdir -p "+Output+"/"+Sample+"_RSEM \n" +
"cd "+Output+"/"+Sample+"_RSEM \n" +
"PATH=$PATH:"+RSEMprep+" \n" +
"export PATH=$PATH \n" + 
""+RSEMprep+"/rsem-prepare-reference --no-polyA --bowtie "+Output+"/Trans_CDHIT.fast Trans_CDHIT.RSEM \n" +    
""+RSEMprep+"/rsem-calculate-expression --paired-end -p "+CPU+" "+Output+"/SRR617145_1.fastq "+Output+"/SRR617145_2.fastq Trans_CDHIT.RSEM Trans_CDHIT.genes.results  \n"+
""+Trinprep+"/util/misc/count_features_given_MIN_FPKM_threshold.pl "+Output+"/"+Sample+"_RSEM/RSEM.genes.results > "+Output+"/"+Sample+"_RSEM/cumul_counts.txt \n"+
""+Trinprep+"/util/filter_fasta_by_rsem_values.pl --rsem_output= "+Output+"/"+Sample+"_RSEM/RSEM.isoforms.results --fasta="+Output+"/Trans_CDHIT.fasta -t 100 --output="+Output+"/"+Sample+"_RSEM/Trans_RSEMfilters.fasta \n" +
""+Trinprep+"/util/bowtie_PE_separate_then_join.pl --seqType fq --left "+Output+"/"+Sample+"_1.fasta --right "+Output+"/"+Sample+"_2.fasta --target "+Output+"/Trans_CDHIT.fasta --aligner bowtie --SS_lib_type FR -- -p 4 --all --best --strata -m 300 \n";  


    System.out.println(Trans_ref);

    FileUtils.writeStringToFile(new File(Output+"/TranRSEM"), Trans_ref);
    StringBuffer Trim = new StringBuffer();

    String cmd = (Output+"/TranRSEM");


Process p;

try{
    p = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c", cmd});

    p.waitFor();

    BufferedReader reader1 = 
                    new BufferedReader(new InputStreamReader(p.getInputStream()));

        System.out.println("Merg Finished");

    } catch (Exception e) {
    e.printStackTrace();


    }
  • 0
    Вы установили права на исполняемый файл для Output+"/TranRSEM" используя `file.setExecutable (true);`? Не могли бы вы также опубликовать созданный сценарий оболочки?
  • 0
    1. Попробуйте добавить 'set -x' после '#! / Bin / bash', чтобы увидеть, какая команда является последней из выполняемых. 2. Кроме того, возможно, может помочь упрощение, почему бы не выполнить ваш скрипт напрямую, как ...exec(cmd); ? 3. Другое дело, что вывод должен быть не относительным путем - я предполагаю, что это так, иначе скрипт не запустится вообще. 4. Мой последний совет - попробуйте зафиксировать ошибку и вывод вашей команды, как показано здесь
Показать ещё 3 комментария
Теги:

1 ответ

0

Все

Большое спасибо за ваши комментарии

Мне удалось решить проблему. Я обнаружил, что это ограничение памяти на Java. Я решил это, используя команду Xmx20000m в свойствах проекта в моей среде IDE (netbeans).

это, похоже, решило мою проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню