また、以下は私が受け取った.batファイルの一部です。ファイルの種類がWindowsスクリプト用であると思いましたが、以下はUnixシェルスクリプトではありませんか?それでは、このファイルと.shファイルの違いは何ですか?
#PBS -l mem=900mb,walltime=25000:00:00,cput=25000:00:00,nodes=1:ppn=1
cd $PBS_O_WORKDIR
./sample_file.x > tmp
答え1
これはシェルスクリプトファイルです(「shファイル」と呼ばれます)。ただし、次のディレクティブも含まれています。PBSスケジューラ。これは、複数のユーザーがジョブを送信できる必要がある高性能クラスターで頻繁に検出されるシステムで、ジョブは待機中のシステムにデプロイされ、リソースが使用可能になったときに開始されます。
通常、シェルスクリプトでaで始まるすべての行は#
コメントであり、シェルスクリプトインタプリタ(bashなど)では無視されます。これはコードに注釈を付けるときに最も一般的に使用されますが、注目すべき1つの例外は次のとおりです。シェルボーンライン(たとえば#!/bin/bash
)はシェルインタプリタ(で始まる)によって無視されますが、#
カーネルはそれを読み、スクリプトを提供する必要があるインタプリタを決定します。
PBSは同様のアプローチを使用します。#PBS
PBSは、シェルスクリプトで説明されている操作のパラメータを設定するとコメントを読み取ります。したがって、次の行は次のようになります。
#PBS -l mem=900mb,walltime=25000:00:00,cput=25000:00:00,nodes=1:ppn=1
さまざまなオプションの意味にかかわらず、900Mメモリを使用する単一ノードでこのプログラムを実行するようにPBSに指示します。
最後に、これはcd $PBS_DIRECTORY
一般的なシェルコマンドです。$PBS_DIRECTORY
操作を実行する必要があるディレクトリを指すように設定されていると推定される変数。したがって、スクリプトの最初のステップは、cd
そのディレクトリに移動してsample_file.x
そのディレクトリにあるスクリプトを実行することです。
詳細については、使用しているPBSクラスタの管理者にお問い合わせください。
答え2
シェルスクリプトのように見えます。もしそうなら、#はコメントの始まりです。このスクリプトでは、$ が変数置換に使用されます。つまり、$ PBS_O_WORKDIRは環境変数PBS_O_WORKDIRの値に置き換えられます。-l
コマンドではありません。
シェルスクリプト名がSomething.batの理由はわかりませんが、必要に応じて名前を付けることができます。拡張子は何の意味もありません。