ローカル(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
.profile
ssh
フルパスを使用すると正しく機能しますqsub
。
ssh cluster '/usr/local/bin/qsub /home/user/casedir/run_script.sge'
明らかに、クラスターの任意の/usr/local/bin/qsub
パスに変更する必要があります。qsub
わからない場合は、クラスタにログインしてtype qsub
。