Я попробовал сделать '&'
так, как предлагается в большинстве подобных постов, но это не работает:
@echo off
call variables.bat // contains port numbers and notebook address
ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%" &
ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server &
start chrome %notebook_address%
@PAUSE
По сути, у меня есть два скрипта оболочки, которые позволяют мне запускать jupyter notebook удаленно и подключаться к нему. Я запускаю их вручную один за другим и хочу объединить их в один скрипт.
Первый запускает jupyter notebook на удаленном сервере:
@echo off
call variables.bat // contains port numbers and notebook address
ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%"
@PAUSE
Второй обеспечивает переадресацию портов:
@echo off
call variables.bat
ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server
@PAUSE
Как мне объединить эти два понятия?
решение1
Оболочка командной строки Windows — это не Bash, а Cmd.exe, иногда называемая «batch».
Если вы хотите выполнить обе командыодновременно, то это действительно было бы &
в Bash, но в Cmd это не имеет эффекта «фона»; это просто делает то же самое, что и простое размещение двух команд одна за другой в отдельных строках.
Чтобы запустить что-то параллельно, вы, скорее всего, start
также можете использовать здесь:
@echo off
call variables.bat
start ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%"
start ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server
start chrome %notebook_address%
pause
Хотя, что касается двух ssh
подключений, я не вижу, почему их нельзя объединить в одно (т. е. просто вызвать фактическую команду и настроить переадресацию одновременно, вместо использования -N
):
@echo off
call variables.bat
start ssh -f -L localhost:%port_l%:localhost:%port_r% user@remote_server "jupyter notebook --no-browser --port=%port_r%"
start chrome %notebook_address%
pause