Ситуация:
Система используется для возрастания занимающих много времени вычислений конца. Довольный использовать 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
Теперь я хочу сделать этот сценарий более интеллектуальным. Мой план:
./dalton -b ~/dalton/ExtBasis -w ~/dalton/calc/opt -omp 24 -mb 24000 <file_1> <file_2>
Положение имен файлов для этой программы фиксируется. Для других программ я могу изменить, после того как я понимаю, как сделать это.
Зарегистрируйте продолжительность времени задания. При помощи запуска и время окончания; dt1
и dt2
. Было бы лучше использовать динамические единицы (сказать minutes
если процесс, законченный в течение часа, и hours
если закончено передо днем, и затем days
при взятии больше чем дня.
Журнал, ли процесс, законченный успешно при помощи tail -20 <file1>_<file_2>.out
Вывод дан как файл, который имеет имя файла как конкатенацию первого имени файла и второго имени файла с подчеркиванием _
промежуточный с расширением .out
.
Может кто-то помогать мне улучшить свой сценарий.
Я изменил свой сценарий как следующее: Следующий сценарий может быть изменен для работы с другими пакетами вычисления (вот дальтон использования).
Используя ./<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 "//--------------------------------------------------//"