Прошло несколько лет с тех пор, как я управлял кластером трущоб, но squeue
должен дать вам то, что вы хотите. Попробуйте:
squeue --nodelist 92512 -o "%A %j %C %J"
(который должен предоставить ваш идентификатор задания, имя задания, процессор и потоки для ваших заданий на узле 92512)
Кстати, если вам не нужны сведения только об одном конкретном узле, возможно, вам лучше искать по идентификатору задания, а не по идентификатору узла.
Существует множество хороших сайтов с документацией по использованию slurm, доступных в Интернете, которые легко найти через Google -большинство университетов и т. д., использующих кластер высокопроизводительных вычислений, пишут свои собственные документы, справку и «шпаргалки» -, адаптированные к деталям их конкретного кластера (s )(, поэтому примите это во внимание и адаптируйте любые примеры к ВАШЕМУ кластеру ). Также есть хорошая общая документация по использованию slurm
в https://slurm.schedmd.com/documentation.html
.
Нет, это не подоболочка. Подоболочки в bash помечаются с помощью переменной BASH_SUBSHELL
. Это значение увеличивается на 1 для каждого уровня подоболочки :
$ echo $BASH_SUBSHELL
0
$ ( echo $BASH_SUBSHELL )
1
$ ( ( echo $BASH_SUBSHELL ) )
2
$ ( ( ( echo $BASH_SUBSHELL ) ) )
3
$ ( ( ( ( echo $BASH_SUBSHELL ) ) ) )
4
$ ( ( ( ( ( echo $BASH_SUBSHELL ) ) ) ) )
5
Но эта переменная не изменится, если вы просто запустите другую оболочку:
$ echo $BASH_SUBSHELL
0
$ bash
$ echo $BASH_SUBSHELL
0
Это связано с тем, что когда вы запускаете новую оболочку bash, это полностью новый экземпляр. Да, экспортированные переменные будут унаследованы, потому что это дочерняя оболочка вашего исходного экземпляра bash, но, как вы можете видеть выше, на самом деле это не подоболочка. Обратите внимание, что подоболочки наследуют все переменные, а не только экспортированные :
.$ foo=var
$ ( echo $BASH_SUBSHELL; echo $foo )
1
var
$ bash
$ echo $var ## <-- prints an empty line
Это также поясняется в COMMAND EXECUTION ENVIRONMENT
изman bash
(акцент мой):
Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invocation. Builtin commands that are invoked as part of a pipeline are also executed in a subshell environment. Changes made to the subshell environment cannot affect the shell's execution environment.
Таким образом, окружения подоболочек являются почти точными копиями своих родительских оболочек, включая все переменные, а не только экспортируемые.
Раздел среды выполнения команд руководства Bash:
When a simple command other than a builtin or shell function is to be executed, it is invoked in a separate execution environment that consists of the following. Unless otherwise noted, the values are inherited from the shell.
- shell variables and functions marked for export, along with variables exported for the command, passed in the environment
Так:
bash
, не являясь встроенной функцией или функцией оболочки, выполняется в подоболочке.
Он наследует переменные, помеченные для экспорта, из своей родительской оболочки.
Только когда value
экспортируется, подоболочка bash
получает его, как показали ваши эксперименты.
Это не означает, что bash
оболочка, которую вы получаете, является подоболочкой, но что она была выполнена из подоболочки, заменяя ее, так что задействованная подоболочка недолговечна -и только посредник.
См. схему ниже.
Диаграмма, сделанная с помощью Dia
Вы набираете bash
, и это разветвляет текущую оболочку, создавая идентичную. Желтый брат ждет оранжевого, который exec
s bash
. Это может случиться с любой не -встроенной командой (zsh
, g++
, firefox
... ), не только bash
. Все переменные окружения наследуются, но так как value
не из таких и не экспортировался, синий Баш его не получает.
Источники: