Я нахожусь на CentOS 6.9 под управлением slurm 17.11.7. Я изменил свой /gpfs0/export/slurm/conf/epilog
скрипт. В конечном счете, я хотел бы распечатать информацию об использовании ресурсов задания в файл stdout, используемый для работы каждого пользователя.
Я тестировал его в условном конце сценария для себя, прежде чем развернуть его для других пользователей. Ниже мой модифицированный epilog
скрипт:
#!/bin/bash
# Clear out TMPDIR on the shared file system after job completes
exec >> /var/log/epilog.log
exec 2>> /var/log/epilog.log
if [ -z $SLURM_JOB_ID ]
then
echo -e " This script should be executed from slurm."
exit 1
fi
TMPDIR="/gpfs0/scratch/${SLURM_JOB_ID}"
rm -rf $TMPDIR
### My additions to the existing script ###
if [ "$USER" == "myuserid" ]
then
STDOUT=`scontrol show jobid ${SLURM_JOB_ID} | grep StdOut | awk 'BEGIN{FS="="}{print $2}'`
# Regular stdout/stderr is not respected, must use python.
python -c "import sys; stdout=sys.argv[1]; f=open(stdout, 'a'); f.write('sticks\n'); f.close();" ${STDOUT}
fi
exit 0
Из раздела Prolog и Epilog руководства пользователя slurm.conf кажется, что stdout / stderr не соблюдаются. Поэтому я изменяю файл stdout с помощью python.
Я выбрал узел 21 вычислительного узла для запуска этого задания, поэтому я вошел в узел 21 и попробовал несколько вещей, чтобы он заметил мои изменения в сценарии эпилога.
Переконфигурирование slurmd
:
sudo scontrol reconfigure
Перезапустить демон slurm:
sudo service slurm stop
sudo service slurm start
Кажется, что ни один из них не вносит изменения в сценарий эпилога при отправке заданий. Когда в пакетном скрипте ставится то же условие, оно работает без ошибок:
#!/bin/bash
#SBATCH --nodelist=node21
echo "Hello you!"
echo $HOSTNAME
if [ "$USER" == "myuserid" ]
then
STDOUT=`scontrol show jobid ${SLURM_JOB_ID} | grep StdOut | awk 'BEGIN{FS="="}{print $2}'`
python -c "import sys; stdout=sys.argv[1]; f=open(stdout, 'a'); f.write('sticks\n'); f.close();" ${STDOUT}
#echo "HELLO! ${USER}"
fi
ВОПРОС: Куда я иду не так?
РЕДАКТИРОВАТЬ: Это MWE из контекста попытки печати использования ресурсов заданий в конце вывода.