Чтобы сохранить идентификатор процесса утилиты, запустите его как асинхронный процесс и сохраните его PID в переменной или используйте $!
напрямую (это PID последнего запущенного фонового процесса):
#!/bin/bash
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
printf 'Started at "%s"\n' "$(date)"
SECONDS=0
./application.sh -mb 14550 input.mol output.out &
app_pid="$!"
printf 'Application PID is %d\n' "$app_pid"
wait "$app_pid"
printf 'Ended at "%s"\n' "$(date)"
printf 'Run time was approximately %d minutes (%d seconds)\n' "$(( SECONDS/60 ))" "$SECONDS"
PID приложения — $app_pid
.
Вы говорите, что заметили, что PID новых процессов всегда больше, чем у предыдущих процессов. Это не то, на что вы можете положиться, по двум причинам:
Некоторые системы, такие как OpenBSD, используют случайное распределение PID:
$ для i в {1..5}; сделать bash -c 'эхо $$'; Выполнено
49915
2152
61168
87739
95187
В качестве примечания: вы можете использовать $PWD
вместо $(pwd)
, чтобы получить текущий рабочий каталог.