Как я опускаюсь до оболочки после выхода из команды, которую я запустил путем сценариев tmux?

Для Параллели GNU можно установить использование размера блока - блок. Это действительно, однако, требует, чтобы у Вас было достаточно памяти для хранения 1 блока в памяти для каждого из рабочих процессов.

Я понимаю, что это не точно, что Вы ищете, но это может быть приемлемое обходное решение на данный момент.

Если Ваши задачи в среднем занимают то же время, то Вы смогли использовать mbuffer:

find . -type f | split -n r/24 -u --filter="mbuffer -m 2G | myjob"
3
13.10.2013, 00:11
2 ответа
tmux new-window -t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp; $SHELL'

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

Если Вы только хотите опуститься до оболочки если perl процесс был уничтожен или перестал работать (и имейте tmux окно близко, если это успешно выполнилось), использовать

tmux new-window -t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp || $SHELL'
4
27.01.2020, 21:20

tmux уже открывает для вас оболочку, в которой он выполняет команды cd и perl . Если вы не хотите запускать другую оболочку под этим, просто чтобы продолжить интерактивный сеанс (или предотвратить закрытие окна, не используя set-stay-on-exit ), вы можете сделать:

tmux new-window -t $SESSION:0 -k -n MAIN
tmux send-keys 'cd ~/main/ && perl -Ilib myapp' C-m

Если вам нужна другая оболочка под созданной оболочкой tmux и вы хотите, чтобы эта оболочка выполняла команды и становилась интерактивной (что отличается от ответа @ n.st, который запускает shell после этого), вы можете сделать:

tmux new-window -t $SESSION:0 -k -n MAIN 'bash --init-file <(echo "cd ~/main/ && perl -Ilib myapp")'

и, если проблема в том, что bash имеет неполное окружение, сделайте что-то вроде:

tmux new-window -t $SESSION:0 -k -n MAIN 'bash --init-file <(echo "source ~/.bashrc; cd ~/main/ && perl -Ilib myapp")'
0
27.01.2020, 21:20

Теги

Похожие вопросы