Неправильная настройка среды работы на SGE

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

Это информация о машине для главного узла, над которой работает мой скрипт:

cat /proc/version Linux version 2.6.32-279.el6.x86_64 (mockbuild@x86-008.build.bos.redhat.com) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Wed Jun 13 18:24:36 EDT 2012 

Машина не работает:

 cat /proc/version Linux version 3.10.0-514.6.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Thu Feb 23 03:04:39 UTC 2017 

Вот тестовый скрипт, который я использую:

 #!/bin/bash -I #$ -wd ~ #$ -N test #$ -o ~/test.log #$ -jy #$ -terse #$ -V #$ -notify #$ -l h_vmem=2G -pe smp 1 -l athena=true ls hostname nproc 

Вот результат после запуска «qsub test.sh»:

 /bin/bash: module: line 1: syntax error: unexpected end of file /bin/bash: error importing function definition for `BASH_FUNC_module' /opt/sge/default/spool/execd/node156/job_scripts/1063646: line 11: ls: command not found /opt/sge/default/spool/execd/node156/job_scripts/1063646: line 12: hostname: command not found 

Чтобы добавить к путанице, когда я ssh непосредственно в эти узлы задания (node156 в приведенном выше примере), я могу просто выполнить команды ls и hostname!

Я был в контакте с администраторами кластера, и они не могут воспроизвести мою проблему (даже если они заходят за мной как я). Сначала мы проверили, что если настройка ~ / .bashrc и ~ / .bash_profile по умолчанию будет исправлена, но это не так. Вот эти файлы:

 cat ~/.bashrc # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi и cat ~/.bashrc # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi 

.bash_profile:

 cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs 

Какие-либо предложения?

  • Как ZFS растет / масштабируется?
  • Как извлечь значения ресурсов, указанных в директиве PBS, чтобы они могли отображаться в другие переменные среды?
  • SLURM: имя пользовательского стандартного вывода
  • Выполнение параллельных заданий bash в кластере HPC с использованием GNU parallel
  • Запуск веб-сервера без доступа root
  • Экономия энергии в кластере linux
  • Как настроить «бедный человек» настольный кластер Linux?
  • Кластер Mariadb не запускается при перезагрузке
  • One Solution collect form web for “Неправильная настройка среды работы на SGE”

    У меня нет полного решения, потому что я ничего не знаю о SGE. Но я могу объяснить часть проблемы.

    Машина, на которой работает ваш скрипт, запускает старую версию операционной системы. Это видно не только по номеру версии ядра, но и по тому, что он не получил обновлений безопасности через некоторое время. В частности, я думаю, что он использует версию bash, которая уязвима для ошибки Shellshock .

    Bash (ab) использует среду для передачи функций. Обычно среда используется только для передачи данных в виде ряда элементов вида NAME = VALUE . Старые версии bash добавляют элементы формы NAME =() { CODE } , которые в некоторых случаях допускают ввод кода, определяя переменную, которую никогда не будет использовать скрипт – ошибка shellshock . Исправление ошибки изменило способ кодирования функций BASH_FUNC_ NAME %%=() { CODE } .

    Очевидно, какая-то часть вашей установки выгружает среду и анализирует ее. Это может быть частью SGE или что-то конкретное для вашей установки. Правдоподобной причиной для этого является сохранение среды, в которой было отправлено задание, для выполнения задания в той же среде.

    Что-то где-то определяет функцию, называемую module в bash, и экспортирует ее. Код будет выглядеть примерно так:

     module () { … } export -f module 

    Исправление заключается в том, чтобы обновить парсер среды до того, что может справиться с новой кодировкой bash или прекратить экспорт функций.

    Interesting Posts

    Изменение шаблонов гвоздики zsh для использования с cp

    Получение общедоступного IP-адреса экземпляра EC2 извне с использованием AWS-cli

    Список каталогов, затем файлы – с одной командой?

    Не удается заставить rc.local автоматически запускаться

    Сценарий Nginx init.d

    Как я могу настроить ссылку для отображения offbrand (Trulink) для работы с arch linux?

    восстановить электронную почту с учетной записи imap с помощью mailx

    Переопределение записей DNS на процесс

    Разница между написанием `function Name {…; } `,` Name () {…; } `и` function Name () {…; } `в bash

    Является ли в ядре linux (в частности, 2.6) функция рекурсии?

    bash – Разделить значения «таблицы» в строки в массиве

    Каков предел размера / etc / hosts?

    Восстановить из rm -rf / proc / sys / / dev / pts / dev без перезагрузки?

    Ищете способ проверить, как часто данные файловой системы очищаются

    Значки рабочего стола ушли с файловым менеджером nautilus в Debian 9

    Linux и Unix - лучшая ОС в мире.