我嘗試使用'&'
大多數類似帖子的建議,但這不起作用:
@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
我基本上有兩個 shell 腳本,允許我遠端執行 jupyter 筆記本並連接到它。我一個接一個地手動運行它們,我想將它們組合在一個腳本中。
第一個在遠端伺服器上運行 jupyter 筆記本:
@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 命令列 shell 不是 Bash,而是 Cmd.exe,有時稱為「批次」。
如果您想執行這兩個命令同時地,那麼它確實會&
在 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