Умный сценарий для входа прогона программы

Ситуация:

Система используется для возрастания занимающих много времени вычислений конца. Довольный использовать Ubuntu для этой системы. Процесс запускается со сценария, который называет программу (программы). Этот сценарий может иметь различные имена.

Я продолжаю движение с места на место, и я не могу поддерживать записанный журнал в рабочем состоянии сценариев в настоящее время или остановился/привел к сбою или закончил успешно. Следовательно, я использую исходный сценарий для создания записи в файле. Следующее является текущей версией моего сценария:

    #!/bin/bash
    # Running QM-JOB: helix HPC

    echo -e 'Job started @ '$dt'' >> /home/helix/calc/runlog.log

    #cd ~/ChemPackage/dalton/dalton  #32bit calc installation
    cd /home/vayu/ChemPackage/dalton_mod/dalton # custom coded (ln 56,548,954)modified installation
    echo "-----------------------------------------------"
    df -h /dev/md0
    echo "-----------------------------------------------"
    export DALTON_TMPDIR=/mnt/raid0/scratch
    export OMP_NUM_THREADS=24
    source /opt/intel/compilers_and_libraries_2017.0.098/linux/bin/compilervars.sh intel64
    source /opt/intel/mkl/bin/mklvars.sh intel64

    echo "//-------process started-GEOMETRY-OPTIMIZATION------//"
    dt1=$(date '+%d/%m/%Y %H:%M:%S');

    #following line calls the program and runs the job.
    ./dalton -b ~/dalton/ExtBasis -w  ~/dalton/calc/opt -omp 24 -mb 24000 geom_opt_preopt_l2 molecule

    dt2=$(date '+%d/%m/%Y %H:%M:%S');

    echo "//-----------------process FINISHED ----------------//"

Я в настоящее время регистрирую прогон задания с помощью следующей строки,

echo -e 'Job started @ '$dt'' >> /home/helix/calc/runlog.log

Теперь я хочу сделать этот сценарий более интеллектуальным. Мой план:

  1. Используйте regex идею зарегистрировать название программы и вкладку имен файлов, разделенную в одной строке. Строка, называя программу и файлы следует,

./dalton -b ~/dalton/ExtBasis -w ~/dalton/calc/opt -omp 24 -mb 24000 <file_1> <file_2>

Положение имен файлов для этой программы фиксируется. Для других программ я могу изменить, после того как я понимаю, как сделать это.

  1. Зарегистрируйте продолжительность времени задания. При помощи запуска и время окончания; dt1 и dt2. Было бы лучше использовать динамические единицы (сказать minutes если процесс, законченный в течение часа, и hours если закончено передо днем, и затем days при взятии больше чем дня.

  2. Журнал, ли процесс, законченный успешно при помощи tail -20 <file1>_<file_2>.out Вывод дан как файл, который имеет имя файла как конкатенацию первого имени файла и второго имени файла с подчеркиванием _ промежуточный с расширением .out.

Может кто-то помогать мне улучшить свой сценарий.

0
задан 16 December 2016 в 05:46

1 ответ

Я изменил свой сценарий как следующее: Следующий сценарий может быть изменен для работы с другими пакетами вычисления (вот дальтон использования).

Используя ./<script name> <file1> <file2> (File1 и File2 характерны для программы, которую я использую.)

    #!/bin/bash
    # Running QM-JOB: helix HPC
        d="$1"  # .dal file
        m="$2"  # .mol file
    dt=$(date  '+%Y-%m-%d %H:%M:%S' )
    echo -e 'Job started @ '$dt'' >> ~/dalton/runlog.log
    cd /home/vayu/ChemPackage/dalton_mod/dalton # custom coded (ln 56,548,954)modified installation
    echo "-----------Scratch Disk Info-------------------"
    df -h /dev/md0
    echo "-----------------------------------------------"
    export DALTON_TMPDIR=/mnt/raid0/scratch
    export OMP_NUM_THREADS=6
    source /opt/intel/compilers_and_libraries_2017.0.098/linux/bin/compilervars.sh intel64
    source /opt/intel/mkl/bin/mklvars.sh intel64

    echo "//---------------process started-------------------//"
    dt1=$(date '+%Y-%m-%dT%H:%M:%S');
    #following line calls the program and runs the job.
    ./dalton -b ~/dalton/ExtBasis -w  ~/dalton/calc/molecule -omp 6 -mb 15999 $d $m

    dt2=$(date '+%Y-%m-%dT%H:%M:%S');
    dateutils.ddiff "$dt1" "$dt2" #time duration of job

    echo "//-----------------process FINISHED ----------------//"
    output=$( "$d"_"$m"".out")      ; echo $output
    tail -10 "$output" #last 10 lines of output file which tell me about the job's completion status(successful or failed !).
    echo "//--------------------------------------------------//"
0
ответ дан 7 November 2019 в 07:42

Другие вопросы по тегам:

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