Как изменить рабочий каталог на slurum

Я работаю над slurm-кластером, где выполняю несколько заданий. Мне сложно проверять задания по одному в каждом каталоге.

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

scontrol show job JOB_ID

Эта команда дает мне несколько строк на выходе. Некоторые из них перечислены ниже

   OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
   Command=/home/astha/vt-st/scf-test/303030/49/qsub.job
   WorkDir=/home/astha/vt-st/scf-test/303030/49
   StdErr=/home/astha/vt-st/scf-test/303030/49/qsub.job.e1205
   StdIn=/dev/null
   StdOut=/home/astha/vt-st/scf-test/303030/49/qsub.job.o1205
   Power=
   MailUser=(null) MailType=NONE

Где WorkDir (это пример, путь будет отличаться для каждого задания) из приведенного выше вывода - это каталог, в который я хочу переключиться.

тогда

cd /home/astha/vt-st/scf-test/303030/49

Но от набора этих длинных команд мои пальцы плачут.

Я попытался создать небольшой скрипт на Python для печати задания scontrol show

# Try block
try:
    # Take a number
        print("scontrol show job")


# Exception block
except (ValueError):
  # Print error message
  print("Enter a numeric value")

Но затем, как мне его улучшить, чтобы он взял мой заданный входной номер, а затем grep WorkDir из выходных данных и сменил каталог.

Большое Вам спасибо.


person astha    schedule 17.11.2020    source источник


Ответы (1)


Вы не сможете легко заставить скрипт python изменить ваш текущий рабочий каталог и можете сделать это просто в Bash следующим образом:

$ cdjob() { cd $(squeue -h -o%Z -j "$1") ; }

Это создаст функцию Bash с именем cdjob, которая принимает идентификатор задания в качестве параметра. Вы можете проверить, что он был создан правильно, с помощью

$ type cdjob
cdjob is a function
cdjob ()
{
    cd $(squeue -h -o%Z -j "$1")
}

После выполнения указанной выше команды (которую вы можете поместить в сценарий запуска .bashrc или .bash_profile, если хотите, чтобы она пережила выход из системы), вы сможете выполнить

$ cdjob 22078365

и это приведет вас, например, к рабочему каталогу задания 22078365. Вы видите, что вместо того, чтобы пытаться анализировать вывод scontrol, я использую параметры форматирования вывода squeue, чтобы просто вывести необходимую информацию.

person damienfrancois    schedule 17.11.2020
comment
Спасибо, сэр, у меня это частично сработало. Он печатает путь (например, cd / path / из / cd / directory /, но не меняет его автоматически. - person astha; 17.11.2020
comment
гул да, извини, я оставил там echo для тестирования. Я обновил ответ - person damienfrancois; 17.11.2020