SSH経由でクラスタでqsubを実行する

SSH経由でクラスタでqsubを実行する

ローカル(Linux)システムでコンピューティングジョブを自動的に作成し、それをクラスタにコピーしてキューシステムに送信するシステムを設定しています。

クラスタで実行する必要があるスクリプトを避けたいと思います。これにより、スクリプトが1つだけデバッグできる場所で実行されます。

authorized_keys必要なすべてのファイルをローカルに作成した後、ローカルケースディレクトリでこれを行うように設定しました。

ssh cluster 'mkdir /home/user/casedir'
scp localdir/* cluster:/home/user/casedir/
ssh cluster 'qsub /home/user/casedir/run_script.sge'

...これはクラスタにケースディレクトリを作成し、必要なすべてのファイルをコピーしますが、3行目でqsub:コマンドが見つからないため失敗します。

しかし、インタラクティブに入力してssh clusterクラスタにシェルをインポートし、qsubコマンドを入力すると、ジョブが開始され、正常に実行されます。

...ここで私は何を間違えましたか?関連する場合、クラスタはSun Grid Engineのかなり古いバージョンを実行しています。

クラスタでqsubコマンドを実行するbashスクリプトをローカルに作成してコピーできると仮定しますが、これは非常にバイパス的なアプローチのようです。

答え1

qsubクラスターのユーザーまたはファイルに追加したようです$PATH。コマンドを実行しても読み込まれません。.bashrc.profilessh

フルパスを使用すると正しく機能しますqsub

ssh cluster '/usr/local/bin/qsub /home/user/casedir/run_script.sge'

明らかに、クラスターの任意の/usr/local/bin/qsubパスに変更する必要があります。qsubわからない場合は、クラスタにログインしてtype qsub

関連情報