Bash
通過 ssh 在集群上執行 qsub
我正在建立一個系統,它會在本地(Linux)機器上自動生成計算作業,將它們複製到集群並將它們送出到排隊系統。
我盡量避免需要在集群上執行的腳本(這樣,只有一個腳本,它執行在我可以調試的地方)。
我已經
authorized_keys
設置好了,所以在本地創建了所有必需的文件之後,我從本地案例目錄執行此操作:ssh cluster 'mkdir /home/user/casedir' scp localdir/* cluster:/home/user/casedir/ ssh cluster 'qsub /home/user/casedir/run_script.sge'
…這會在集群上創建案例目錄,複製我需要的所有文件,但在第三行失敗,說:qsub: command not found
但是,如果我以互動方式鍵入
ssh cluster
以獲取集群上的 shell,然後鍵入 qsub 命令,它會啟動作業並執行得很好!……我在這裡做錯了什麼?該集群正在執行一個相當舊的 Sun Grid Engine 版本,以防萬一。
我想我可以在本地生成並複制一個 bash 腳本,該腳本將在集群上執行 qsub 命令,但這似乎是一種非常迂迴的方式。
我猜你已經添加
qsub
到集群上你的使用者$PATH
的.bashrc
或文件中。.profile
通過 執行命令時不會讀取這些內容ssh
。如果您使用完整路徑,它應該可以正常工作
qsub
:ssh cluster '/usr/local/bin/qsub /home/user/casedir/run_script.sge'
顯然,您需要更改為集群上的
/usr/local/bin/qsub
任何路徑。qsub
如果您不知道,請登錄集群並執行type qsub
.